使用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 登錄
注意 第一次務必修改密碼,已策安全


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM