• 使用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 登录
    注意 第一次务必修改密码,已策安全
    
  • 相关阅读:
    迁移学习综述
    分析 Kaggle TOP0.1% 如何处理文本数据
    软件工程提问回顾与个人总结
    洛谷 4219/BZOJ 4530 大融合
    洛谷 1486/BZOJ 1503 郁闷的出纳员
    【模板】文艺平衡树
    【模板】树套树(线段树套Splay)
    【模板】可持久化线段树
    【模板】可持久化平衡树
    【模板】左偏树
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/15488308.html
Copyright © 2020-2023  润新知