在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應用程序。