一 环境准备与基础配置
go version 验证。若使用 yum install golang 提示找不到包,需先添加 EPEL 或官方源再安装。go.mod/go.sum 完整一致,构建前执行 go mod tidy 拉取依赖。二 编译与链接策略
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o myapp。静态二进制更易在较老的 glibc 环境(如 CentOS 6)运行。-ldflags "-s -w" 去除符号与调试信息;可结合 UPX 进一步压缩(如 upx --best myapp),注意压缩可能影响调试与启动时间。三 产物交付与运行
tar -czvf myapp.tar.gz myapp config/ scripts/,便于传输与版本化发布。chmod +x myapp;后台运行可用 nohup ./myapp & 并检查日志。生产环境建议使用 systemd 管理服务(创建 .service 文件,使用 systemctl start/enable/status myapp),便于开机自启与平滑重启。kill -9 造成数据不一致或资源未释放。四 常见问题与排查
GOOS=linux GOARCH=amd64 重新构建。ldd myapp 检查依赖;缺库则在目标机安装对应 -devel 包(如 libcurl-devel)。chmod 777,仅授予必要权限(如 chmod +x);配置文件(如 .env/config.ini)变更通常需要重启服务才生效。五 自动化与多架构实践
GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o bin/myapp-linux-amd64
GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -o bin/myapp-linux-arm64
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o bin/myapp-windows-amd64.exe