使用rpm打包nacos然后部署为systemd服务开机自动启动的方法

背景

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 登录
注意 第一次务必修改密码,已策安全
上一篇:kvm-开启虚机console 链接


下一篇:配置ubuntu笔记本合盖不休眠