在 CentOS 上打包 Golang 项目的关键注意事项
一 环境准备与工具链
go version 验证。为便于后续编译与压缩,建议同时安装构建工具与 UPX(可选):sudo yum groupinstall -y "Development Tools" && sudo yum install -y wget upx。如使用模块,确保启用 Go Modules 并可通过 go mod tidy 正常拉取依赖。二 编译与交叉编译要点
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp main.go。如项目使用 CGO(调用 C 库),需安装 gcc 等工具链并将 CGO_ENABLED=1;跨平台或最小化依赖时优先使用 CGO_ENABLED=0 生成静态二进制,减少外部依赖与运行时故障点。upx --best myapp),注意压缩可能对调试与堆栈回溯有影响。myapp-linux-amd64.tar.gz),便于多环境分发与回滚。三 产物交付与运行安全
chmod +x myapp);运行与脚本调用时注意 工作目录,相对路径(如 .env/config.ini)依赖当前目录,建议在启动脚本中 cd 到应用目录或使用绝对路径,避免因目录错误导致配置加载失败。kill -9 强杀,生产环境优先 kill -15 或实现优雅停机;配合 systemd 管理服务生命周期、开机自启与日志采集,降低运维风险。四 配置与资源嵌入
五 自动化与持续交付
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o myapp),并编排停止旧进程、上传新二进制、启动服务的步骤;注意上传前先停机避免文件占用,脚本中显式 cd 到应用目录以保证相对路径正确。