部署golang到服务器

说起将开发好的程序部署到服务上,常用的有两种方式:

  1. 本地编译打包,上传到服务器
  2. git push到远程仓库,在服务器上拉取(编译-打包)

无论以怎样的方式发布,都只有熟悉流程才能得心应手。今天我要说的是golang的部署流程。

如果是在公司内,自然有专人负责发布事宜,也有公司暂无运维人员,这时还是由开发人员负责服务器发布工作,当然,CI/CD这类工具一般也没有搭建起来。但这并不影响我们快速发布。 得益于go的编译速度,整个发布过程可能也就2分钟,接下来说明一下我个人的发布流程:

  1. 在项目目录下执行go打包命令
GOOS=linux GOARCH=amd64 go build 

由于是要部署到Linux服务器上,所以加上GOOS=linux GOARCH=amd64就可以打包出对应系统的二进制可执行文件。可以将该命令写成脚本文件。

  1. 推送代码到git仓库,这一步并不是必须,之所以需要这一步,是因为go只打包*.go文件,并不会打包静态文件,所以还需要把相关静态文件推送的git仓库以便拉取。

  2. 上传打包好的二进制可执行文件到服务器的项目目录下。为什么是项目目录?因为还有静态文件需要使用,所以服务器上也要有同样的项目结构。可借助一些工具来上传,我使用了rz命令来上传。

  3. git pull代码,主要是拉取静态文件。

  4. 重启应用。

整个过程比较耗时的操作是上传文件和推拉代码,打包和重启应用反而很快,基本是两三秒完成。 golang相对于其他语言,在服务,器上不需要安装运行时,不像Java和nodejs都需要安装正确的运行时版本,go只需要把打包好的二进制可执行文件扔上去就可以执行。