当前位置 博文首页 > 利用rpm打包上线部署golang代码的方法教程

    利用rpm打包上线部署golang代码的方法教程

    作者:xiaorui 时间:2021-06-16 18:26

    前言:

    经过一段时间的测试验证,决定使用RPM来做Golang服务的部署方式. 我们组关于代码的部署方式主要有这么几种,Python直接使用virtualenv + py code的方式来上线,Lua 是直接打包,Golang 是先编译生成二进制之后,联合配置文件直接打包。 但由于我们开发的Golang的代码很多是基础组件,需要很多节点都去安装部署。那么这时候自己编译打包跟RPM的方式其实很是想象的,那还不如复用公司内部成熟的基于rpm的上线系统。

    下面话不多说了,来一起看看详细的介绍吧。

    rpm打包的使用方法:

    # 安装RPM依赖
    yum install rpmdevtools
    #生成RPM目录
    cd ~
    rpmdev-setuptree

    下面是rpm的基本组织结构.

    ├── BUILD
    ├── BUILDROOT
    ├── RPMS
    ├── SOURCES
    ├── SPECS
    └── SRPMS

    其实最干脆的rpm打包方式就是 直接编辑SPECS的配置文件,在%install的逻辑里把go代码编译成二进制,然后cp进去,这就完事了。由于时间关系我就不详细描述rpm的高级用法了,有兴趣的朋友可以自己看SPECS相关的配置。

    #软件包简要介绍
    Summary: build transcoding
    #软件包的名字
    Name: transcoding
    #软件包的主版本号
    Version: 0.0.1
    #软件包的次版本号
    Release: 5
    #源代码包,默认将在上面提到的SOURCES目录中寻找
    Source0: %{name}-%{version}.tar.gz
    #授权协议
    License: GPL
    #软件分类
    Group: Development/Tools
    #软件包的内容介绍
    %description
    视频转码集群
    #表示预操作字段,后面的命令将在源码代码BUILD前执行
    %prep
    #BUILD字段,将通过直接调用源码目录中自动构建工具完成源码编译操作
    %build
    #file
    #安装字段
    %install
    # 二进制执行文件
    mkdir -p ${RPM_BUILD_ROOT}/usr/bin/
    cp -f /devops/app/go/src/transcoding/engine_bin ${RPM_BUILD_ROOT}/usr/bin/transcoding_engine_bin
    cp -f /devops/app/go/src/transcoding/rest_bin ${RPM_BUILD_ROOT}/usr/bin/transcoding_rest_bin
    # 配置文件
    mkdir -p ${RPM_BUILD_ROOT}/etc/transcoding
    cp -f /devops/app/go/src/transcoding/etc/online.config.ini ${RPM_BUILD_ROOT}/etc/transcoding/config.ini
    # 控制脚本
    mkdir -p ${RPM_BUILD_ROOT}/etc/init.d/
    cp -f /devops/app/go/src/transcoding/bin/init.sh ${RPM_BUILD_ROOT}/etc/init.d/transcoding.sh
    #调用源码中安装执行脚本
    #文件说明字段,声明多余或者缺少都将可能出错
    %files
    %defattr(-,root,root)
    /usr/bin/transcoding_engine_bin
    /usr/bin/transcoding_rest_bin
    /etc/init.d/transcoding.sh
    %dir
    /etc/transcoding

    当编辑完SPECS文件后,然后开始运行 rpmbuild 生成rpm包.

    rpmbuild -bb transcoding.spec

    编译完之后,我们在来看看rpm结构, 对的,多了一个rpm包…

    ├── BUILD
    ├── BUILDROOT
    ├── RPMS
    │ └── x86_64
    │ └── transcoding-0.0.1-5.x86_64.rpm
    ├── SOURCES
    ├── SPECS
    │ └── transcoding.spec
    └── SRPMS

    剩下要做的就是把我们生成的rpm包,上传到我们私有的yum repo源里面。剩下的流程你就可以走你的标准的上线流程了。

    这里需要注意两件事情:

    1. rpm specs 版本号的更新,如果不更新会造成yum update无效….

    2. 如果配置文件含有db的账号密码,请不要添加到rpm中,就算是私有yum repo,也不安全…

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对站长博客的支持。

    js
    下一篇:没有了