在CentOS上使用Golang打包服务时,可以遵循以下最佳实践:
sudo yum install golang /etc/profile 文件,添加Go的环境变量:export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 然后,使配置生效:source /etc/profile 验证Golang是否正确安装:go version 如果显示了Go的版本信息,说明安装成功。go test 来测试你的程序是否可以正常工作。静态编译:使用 -ldflags 参数去除符号表和调试信息,以减小可执行文件的大小:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -ldflags="-s -w" -o myservice main.go 这将生成一个名为 myservice 的自包含二进制文件。
使用Docker进行打包和部署:创建一个 Dockerfile 来简化构建和部署过程。例如:
FROM golang:1.17 WORKDIR /app COPY . . RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -a -installsuffix cgo -o myapp ./main.go CMD ["./myapp"] 然后构建和推送Docker镜像。
scp 或其他文件传输方法将编译好的二进制文件上传到服务器。chmod +x myservice ./myservice nohup 命令:nohup ./myservice > log.txt 2>&1 & systemd 服务文件,例如 myapp.service,并启用并启动服务:[Unit] Description=My Go Application After=network.target [Service] User=user Group=user ExecStart=/path/to/destination/myservice Restart=always [Install] WantedBy=multi-user.target 保存文件后,运行以下命令以启动服务并设置开机自启动:sudo systemctl daemon-reload sudo systemctl enable myservice sudo systemctl start myservice 现在,你的Go服务应该作为系统服务运行,并在每次启动时自动启动。go mod 命令管理依赖项。通过以上步骤和优化建议,你可以在CentOS上高效地打包和部署Golang项目,确保最终生成的可执行文件性能优越且部署便捷。