背景

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. 13个QA带你了解线上压测的知识点

    摘要:设计一个线上压测系统能让我们学习到多少东西?这13个问题看你能否搞定. 本文分享自华为云社区<设计一个线上压测系统能让我们学习到多少东西?13个问题看你能否搞定>,作者:breakD ...

  2. 对话 BitSail Contributor | 梁奋杰:保持耐心,享受创造

    2022 年 10 月,字节跳动 BitSail 数据引擎正式开源.同期,社区推出 Contributor 激励计划第一期,目前已有 13 位外部开发者为 BitSail 社区做出贡献,成为了首批 B ...

  3. C# async await 异步执行方法

    WPF 异步执行 Action<> Func<> https://www.cnblogs.com/vipsoft/p/4535037.html 代码如下 using Syste ...

  4. Jenkins 手动安装插件

    手动装插件太麻烦了,还是装最新版 Jenkins 配置源 然后在Manage Plugins -->Manage Plugins -->Advanced 中,把Update Site修改为 ...

  5. sqlalchemy union 联合查询

    在最近的工作中遇到一个问题,要将两个字段相似的表里的数据统一起来展示在一个统计页面中.如果是单纯的展示数据那很简单,两个表查出来之后组合一下就完事了,但是有坑的地方就是分页和按照时间搜索,这两个功能决 ...

  6. ChatGPT 插件,组合后更妙了

    ChatGPT 插件,组合后更妙 大家好,我是章北海mlpy 昨天极简介绍了一些热门的ChatGPT插件 我测试了一些组合玩法,感觉效率.效果都远超预期. 今天就演示一下如何利用多个插件,高速阅读.理 ...

  7. Qt 的Cmake方式如何创建资源文件和添加类

    CLion(误,QT Creator) 添加资源文件时 选择Qt 然后选择Qt Resource File 单击choose,然后给你的资源文件输入一个名字比如res单击下一步,然后完成,保存 这时候 ...

  8. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) (个人题解)

    Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) A. Prison Break https:// ...

  9. <vue 路由 6、动态路由-方法传递参数>

    一.query效果 点击query按钮 二.param效果 点击param按钮 注意点 1:重新刷新浏览器后,参数都不在了. 2:url中能看不到传递的参数 3.分别用{{$route. params ...

  10. d3过滤

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...