部署golang到服务器
说起将开发好的程序部署到服务上,常用的有两种方式:
- 本地编译打包,上传到服务器
- git push到远程仓库,在服务器上拉取(编译-打包)
无论以怎样的方式发布,都只有熟悉流程才能得心应手。今天我要说的是golang的部署流程。
如果是在公司内,自然有专人负责发布事宜,也有公司暂无运维人员,这时还是由开发人员负责服务器发布工作,当然,CI/CD这类工具一般也没有搭建起来。但这并不影响我们快速发布。 得益于go的编译速度,整个发布过程可能也就2分钟,接下来说明一下我个人的发布流程:
- 在项目目录下执行go打包命令
GOOS=linux GOARCH=amd64 go build
由于是要部署到Linux服务器上,所以加上GOOS=linux GOARCH=amd64
就可以打包出对应系统的二进制可执行文件。可以将该命令写成脚本文件。
-
推送代码到git仓库,这一步并不是必须,之所以需要这一步,是因为go只打包
*.go
文件,并不会打包静态文件,所以还需要把相关静态文件推送的git仓库以便拉取。 -
上传打包好的二进制可执行文件到服务器的项目目录下。为什么是项目目录?因为还有静态文件需要使用,所以服务器上也要有同样的项目结构。可借助一些工具来上传,我使用了
rz
命令来上传。 -
git pull
代码,主要是拉取静态文件。 -
重启应用。
整个过程比较耗时的操作是上传文件和推拉代码,打包和重启应用反而很快,基本是两三秒完成。 golang相对于其他语言,在服务,器上不需要安装运行时,不像Java和nodejs都需要安装正确的运行时版本,go只需要把打包好的二进制可执行文件扔上去就可以执行。