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

作者:xiaorui 时间:2024-04-26 17: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,也不安全…

来源:http://xiaorui.cc/2018/01/03/使用rpm打包上线&#-28440;署golang代码/

标签:golang,rpm,打包部署
0
投稿

猜你喜欢

  • 关于MySQL的体系结构及存储引擎图解

    2024-01-20 14:52:46
  • Python中反射和描述器总结

    2022-06-18 09:38:22
  • Python Flask 实现 HTML 文件压缩案例代码(9 级压缩)

    2021-05-22 15:22:13
  • windows10在visual studio2019下配置使用openCV4.3.0

    2021-10-23 12:23:31
  • Python用于学习重要算法的模块pygorithm实例浅析

    2023-03-12 06:43:39
  • python opencv人脸检测提取及保存方法

    2021-10-12 18:22:13
  • Python字典查找数据的5个基础操作方法

    2021-09-08 23:19:45
  • HTML的优化杂记

    2010-03-10 10:39:00
  • Python映射类型之dict详解

    2023-08-03 13:19:19
  • Python操作Excel的学习笔记

    2022-04-02 16:43:29
  • 给我一面国旗 python帮你实现

    2022-04-06 07:23:32
  • MySQL中CURRENT_TIMESTAMP的使用方式

    2024-01-12 20:10:29
  • Python基于内置库pytesseract实现图片验证码识别功能

    2022-05-26 07:40:53
  • 使用Python批量压缩tif文件操作步骤

    2021-03-27 00:04:10
  • HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列

    2024-04-29 13:38:31
  • 基于pycharm实现批量修改变量名

    2022-01-23 05:46:21
  • MySQL高级查询方法之记录查询

    2010-06-20 14:48:00
  • Python实现清理微信僵尸粉功能示例【基于itchat模块】

    2021-10-29 20:45:46
  • python数据预处理 :数据共线性处理详解

    2022-06-29 09:46:24
  • 学习ASP.NET八天入门:第五天

    2007-08-07 13:43:00
  • asp之家 网络编程 m.aspxhome.com