在CentOS上打包和部署Golang应用程序时,可以遵循以下最佳实践:
使用yum安装:对于CentOS 8及以上版本,可以直接使用yum安装Golang:
sudo yum install golang -y
对于CentOS 7,可以使用以下命令:
sudo yum install golang -y
手动下载并安装:从Golang官方下载页面下载适合CentOS的版本并解压到/usr/local目录下,然后配置环境变量:
export PATH=$PATH:/usr/local/go/bin
使用Go Modules:推荐使用Go Modules来管理依赖,启用Go Modules:
go mod init <module-name>
系统配置优化:
echo "soft nofile 65536" >> /etc/security/limits.conf
echo "hard nofile 65536" >> /etc/security/limits.conf
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 65535" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
sysctl -p
Go运行时参数调整:
export GOMAXPROCS=8
export GOGC=100
代码优化:
编译和部署Golang服务:
set GOOS=linux
set GOARCH=amd64
go build -o main-linux main.go
chmod 777 main-linux
./main-linux
nohup ./main-linux > log.txt 2>&1 &
使用systemd管理服务:
/etc/systemd/system/myapp.service
:[Unit]
Description=My Go Application
After=network.target
[Service]
User=your_user
WorkingDirectory=/path/to/your/app
ExecStart=/path/to/your/app/myapp
Restart=always
Environment=APP_ENV=production
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp.service
sudo systemctl enable myapp.service
systemctl status your-service-name
命令来监控服务状态。通过遵循这些最佳实践,你可以在CentOS上高效地打包、部署和监控Golang应用程序。