背景

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. Prometheus搭乘华为云GaussDB(for Influx):让监控数据更安全

    摘要:GaussDB(for Influx)是一款分布式架构,云原生的时序数据库.可无缝被Prometheus集成,在协议上原生支持Prometheus远端存储对接至GaussDB(for Influ ...

  2. 十问ByteHouse:如何基于ClickHouse玩转向量检索?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 向量检索被广泛使用于以图搜图.内容推荐以及大模型推理等场景.随着业务升级与 AI 技术的广泛使用,用户期望处理的向 ...

  3. 高性能 Jsonpath 框架,Snack3 3.2.57 发布

    Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计.其下一切数据都以ONode表示,ONode也 ...

  4. Solon 编译打包怎样保持参数名不变?

    1.Java 项目 Java maven 项目 <plugin> <groupId>org.apache.maven.plugins</groupId> <a ...

  5. Mongodb--索引(转载)

    原文转载自:https://www.cnblogs.com/wyy1234/p/11032163.html 1 mongoDB索引的管理 本节介绍mongoDB中的索引,熟悉mysql/sqlserv ...

  6. Leaflet 百度、高德地图瓦片坐标 偏移 纠偏

    实现地图瓦片纠偏的leaflet.mapCorrection.js代码: //坐标转换 L.CoordConvertor = function () { /**百度转84*/ this.bd09_To ...

  7. Codeforces Round #704 (Div. 2) A~E

    比赛链接:https://codeforces.com/contest/1492 1492A.Three swimmers 题意: 有三名游泳的人,他们分别需要 \(a,b,c\) 分钟才能在一个游泳 ...

  8. AtCoder Beginner Contest 167 (A~F,DEF Good)

    比赛链接:https://atcoder.jp/contests/abc167/tasks AB水题, C - Skill Up 题意: 初始时 \(m\) 个算法的能力均为 \(0\),\(n\) ...

  9. 加密原理详解:对称式加密VS非对称式加密

    一.前言 在了解加密原理前,我们来看看这样一个故事. 小红和小明是情侣,一天,小红给小明发短信说:"亲爱的,我银行卡上没有钱了,你给我转1万块吧."有过上当受骗经历的人都知道这有可 ...

  10. 五分钟,手撸一个简单的Spring容器

    工厂和Spring容器Spring是一个成熟的框架,为了满足扩展性.实现各种功能,所以它的实现如同枝节交错的大树一样,现在让我们把视线从Spring本身移开,来看看一个萌芽版的Spring容器怎么实现 ...