Go 静态二进制构建与部署
Go 静态二进制构建与部署
Go 的一个重要优势是部署简单。很多服务可以编译成一个二进制文件,上传到服务器后直接运行,不需要在目标机器安装完整运行时。
一、本地构建
1 | go build -o myapp ./cmd/server |
生成的 myapp 可以直接执行:
1 | ./myapp |
二、交叉编译 Linux
在 macOS 或 Windows 上构建 Linux 版本:
1 | GOOS=linux GOARCH=amd64 go build -o myapp-linux ./cmd/server |
如果目标服务器是 ARM:
1 | GOOS=linux GOARCH=arm64 go build -o myapp-linux-arm64 ./cmd/server |
三、减少体积
1 | go build -ldflags="-s -w" -o myapp ./cmd/server |
-s -w 会去掉部分调试信息,减小文件体积。需要调试线上问题时,可以保留未裁剪版本。
四、systemd 运行
可以用 systemd 管理服务:
1 | [Service] |
这样服务崩溃后能自动拉起。
五、实践建议
构建产物最好带上版本号、Git commit、构建时间。这样线上排查时可以快速确认当前运行的是哪一版。
Go 的部署简单,但配置、日志、进程管理、回滚策略仍然要认真设计。