背景

Nacos是阿里开源的服务注册组件,能够简单的实现微服务的注册与发现机制.
但是官方并没有提供 sytemd的服务脚本, 也没有提供rpm包的方式.
公司里面使用 nacos的场景越来越多, 部署起来服务开机启动与保活的要求越来越高
为了简单起见,加之最近一直在研究rpmbuild 索性直接使用rpmbuild打包进行处理
场景为:
可以一键安装, 设置服务开启自动启动. 但是需要页面自行修改密码.

编写systemd的脚本

编写systemd的脚本还是比较简单的 主要如下
注意 我这边不进行 cat > EOF的机制, 可以学习一下systemd脚本的路径以及文件信息
vim /etc/systemd/system/nacos.service
[Unit]
Description=nacos server
Wants=network-online.target
After=network.target [Service]
Type=forking
WorkingDirectory=/data/nacos/bin/
ExecStart=/data/nacos/bin/startup.sh -m standalone
Restart=always [Install]
WantedBy=multi-user.target

编写systemd的脚本

  • 注意事项:
1. 需要先期将nacos文件放置好位置 需要手工或者是 rpm install的方式安装与/data/nacos目录下.
2. 需要指定工作目录.
3. 需要修改startup.sh 内的启动脚本, 建议可以讲OpenJDK添加到 /data/nacos目录下.通过绝对路径指向
4. 注意需要设置严格的启动执行权限, 避免启动失败.

文件准备与启动脚本修改

/data/nacos
[root@k8s nacos]# tree -L 1
.
├── bin
├── conf
├── data
├── jdk1.8.0_302
├── LICENSE
├── logs
├── NOTICE
└── target

文件准备与启动脚本修改

注意需要修改 /data/nacos/bin 目录下面的 startup.sh 脚本添加 JAVA_HOME的路径才可以.
因为我这边是绝对路径, 修改起来比较简单.
添加一句话即可.
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/data/nacos/jdk1.8.0_302
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java
[ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOME
export JAVA_HOME=/data/nacos/jdk1.8.0_302
可以修改最上面一样, 也可以修改添加export的一行.
注意最后面一定不要添加 / 不然服务会启动失败

文件准备与启动脚本修改

修改完成之后:
第一步
cd /data/nacos/bin
./startup.sh -m standalone 的方式验证服务可以启动.
第二步
将nacos.service 复制到 /etc/systemd/system/ 目录下(或者是直接编辑)
使用 systemctl restart nacos
验证服务可以启动.
注意nacos的启动时间 应该在 10s-30s 之间, 耐心等待, 如果有问题需要查看 out.log
如果没问题, 可以进行下一步的操作.

编写nacos.spec文件

与之前rabbitmq 一致 (那个文档少在rabbitmqctl等脚本里面少添加了HOME环境变量)
自行编辑一个 nacos.spec文件 内容如下 不在过多描述了
#DEFINES
%define _binaries_in_noarch_packages_terminate_build 0
%global __os_install_post %{nil} Name: nacos
Version: data_2.0.3
Release: 1%{?dist}
Summary: Rpm package for nacos ... Group: nacos
License: Copyright zhaobsh
URL: https://www.zhaobsh.com/
Source0: nacos/
Source1: nacos.service
BuildArch: x86_64
Autoreq: no %description
Rpm package for nacos %install
app_dir=%{buildroot}/data
%{__install} -p -D %{SOURCE1} $RPM_BUILD_ROOT/etc/systemd/system/nacos.service
mkdir -p $app_dir
echo pwd
echo %{SOURCE0}/nacos/
cp -r %{SOURCE0}/nacos/ $app_dir/
cp -r %{SOURCE1} /etc/systemd/system/nacos.service
%files
%defattr(777,root,root)
/data/nacos
/etc/systemd/system/nacos.service
%dir
/data/nacos

打包nacos的rpm文件

注意与 spec 里面描述必须完全一致 需要在 /root/rpmbuild/SOURCES 里面添加内容一下,仅需要注意nacos相关的
注意 nacos下面需要有最新的nacos以及最新的jdk等内容.
[root@k8s SOURCES]# pwd
/root/rpmbuild/SOURCES
[root@k8s SOURCES]# ll
总用量 24
drwxr-xr-x 8 root root 116 10月 31 00:51 nacos
-rw-r--r-- 1 root root 242 10月 31 00:55 nacos.service
drwxr-xr-x 9 root root 4096 10月 30 23:43 nginx
-rw-r--r-- 1 root root 176 10月 31 00:12 nginx.service
drwxr-xr-x 8 root root 4096 10月 30 23:16 rabbitmq
-rw-r--r-- 1 root root 609 10月 30 23:17 rabbitmq.service
drwxr-xr-x 2 root root 61 10月 28 20:36 redis
-rw------- 1 root root 166 10月 31 00:15 redis.service 然后进入 /root/rpmbuild/SPECS
执行命令为:
time rpmbuild -bb nacos.spec
即可获取nacos的rpm包.

安装与使用

rpm -ivh nacos-data_2.0.3-1.el7.x86_64.rpm
systemctl enable nacos && systemctl restart nacos
使用 http://ip:8848/nacos 用户nacos 密码 nacos 登录
注意 第一次务必修改密码,已策安全

使用rpm打包nacos然后部署为systemd服务开机自动启动的方法的更多相关文章

  1. Linux中java应用程序的部署,使其开机自动启动

    初步需求:将在Windows/MyEclipse中开发的java应用程序部署到Linux服务器上,使其运行 针对需求,可以参考下面这些文章,但是这些文章很多东西没有提及到,我自己尝试部署运行 在lin ...

  2. 17使用systemd方式开机自动启动Home Assistant服务

    2018-03-20 15:48:36 转移自网易博客! 首先使用编写文件hass@homeassistant.service,文件内容如下 # 这个文件用于systemd方式自动启动hass服务.# ...

  3. Window 使用Nginx 部署 Vue 并把nginx设为windows服务开机自动启动

    1.编译打包Vue项目 在终端输入 npm run build 进行打包编译.等待... 打包完成生成dist文件夹,这就是打包完成的文件. 我们先放着,进行下一步. 2下载Nginx 下载地址: h ...

  4. 版本控制,svn基础,实战案例,RPM打包

                                                   版本控制,svn基础,实战案例,RPM打包 案例1:Subversion基本操作 案例2:使用Subver ...

  5. 【centos7常用技巧】RPM打包

    一.RPM打包的目的 1.当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可. 2.当需要在目标机中安装多个软件或者增加多个文件时,可以将 ...

  6. Centos6_64 rpm打包实践

    安装rpmbuild sudo yum install rpm-build 普通用户的配置 /home/you/rpmbuild/ 假设是要构建rpm的目录 先说说rpmbuild有什么用,给一个例子 ...

  7. rpm打包过程

    [需求] 接触那么久的Linux,还没有试验过怎么打rpm包 [过程] 1.rpm打包准备工作 系统默认的rpmbuild的相关路径

  8. linux 版本控制及rpm打包

    版本控制 subversion:是一个自由/开源的版本控制系统,在subversion管理下,文件和目录可以超越时空subversion允许你数据恢复到早期版本,或者是检查数据修改历史许多人将版本控制 ...

  9. RPM打包原理、示例、详解及备查

    原文地址:https://blog.csdn.net/qq_16542775/article/details/80961213 RPM(Redhat Package Manager)是用于Redhat ...

  10. 使用rpm 打包开发的postgres extension

      环境准备 安装依赖包 rpmdevtools rpm-build yum install -y rpm-build rpmdevtools 初始化rpm pacakge 项目 主要是rpm 打包的 ...

随机推荐

  1. 如何应对Spark-Redis行海量数据插入、查询作业时碰到的问题

    摘要:由于redis是基于内存的数据库,稳定性并不是很高,尤其是standalone模式下的redis.于是工作中在使用Spark-Redis时也会碰到很多问题,尤其是执行海量数据插入与查询的场景中. ...

  2. 7000+字图文并茂解带你深入理解java锁升级的每个细节

    摘要:对于java锁升级,很多人都停留在比较浅层的表面理解,这篇7000+字和图解带你深入理解锁升级的每个细节. 本文分享自华为云社区<对java锁升级,你是否还停留在表面的理解?7000+字和 ...

  3. 详解物联网Modbus通讯协议

    摘要:Modbus是当前非常流行的一种通讯协议. 本文分享自华为云社区<一文搞懂物联网Modbus通讯协议丨[拜托了,物联网!]>,作者: jackwangcumt. 1 概述 随着IT技 ...

  4. 遇到 Request header is too large,你是如何解决的?

    看到群里有小伙伴问,这个异常要怎么解决: java.lang.IllegalArgumentException: Request header is too large 异常原因 根据Exceptio ...

  5. Educational Codeforces Round 110 (Rated for Div. 2) (AB签到,C题双指针,D题DP好题)

    补题链接:Here 1535A. Fair Playoff 四名选手参加了季后赛.比赛按以下方案进行:第一名选手与第二名选手比赛,第三名选手与第四名选手比赛,然后两人中的获胜者进入决赛. 众所周知,在 ...

  6. 涂色游戏Flood-it!(IDA star算法) - HDU 4127

    做题之前,可以先到下面这个网站玩一会游戏: https://unixpapa.com/floodit/?sz=14&nc=6 游戏开发里面,比较常用的一个搜索算法是寻路算法,寻路算法里面用的最 ...

  7. Android 加载图片占用内存分析

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/aRDzmMlkqB14Ty67GJs9vg作者:Xu Jie 不同Android版本,对一张图 ...

  8. mouseenter和mouseover区别

    mouseenter事件 当鼠标移动到元素上时,就会触发mouseenter事件. 类似mouseover,它们两者之间的差别是:mouseover鼠标经过自身盒子会触发,经过子盒子还会触发.mous ...

  9. 京东App秒杀抢购流程接口分析(基于pypp技术)

    App数据抓包必需工具 必需工具:小米手机,Charles,HttpCanary 从2022年2月后,京东只限于从app发起抢购,所以,网上的很多工具已经无效了.只能分析app端的底层协议和流程. g ...

  10. 如何将一个JAR包添加到Java应用程序的Boot Classpath中?

    1. 在启动脚本中使用-bootstrap或-Xbootclasspath选项 这两个选项的使用方式如下: -bootstrap选项: java -bootstrap /path/to/your.ja ...