使用rpm打包上线部署golang代码

前言:

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

该文章后续仍有更新, 请到原文地址查看.   http://xiaorui.cc/?p=4955

rpm打包的使用方法:

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

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

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

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

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


这里需要注意两件事情:

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

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

END.