Go 静态二进制构建与部署
wxk1991 Lv5

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
2
3
4
[Service]
ExecStart=/opt/myapp/myapp
Restart=always
WorkingDirectory=/opt/myapp

这样服务崩溃后能自动拉起。


五、实践建议

构建产物最好带上版本号、Git commit、构建时间。这样线上排查时可以快速确认当前运行的是哪一版。

Go 的部署简单,但配置、日志、进程管理、回滚策略仍然要认真设计。