在 CentOS 上部署 Golang 的完整流程
一 安装 Go 环境
sudo yum install -y golanggo versionsudo yum -y install wget gitwget https://golang.org/dl/go1.21.6.linux-amd64.tar.gz -P /usr/local/srcsudo tar -C /usr/local -xzf /usr/local/src/go1.21.6.linux-amd64.tar.gzecho 'export GOROOT=/usr/local/go' | sudo tee -a /etc/profile
echo 'export PATH=$PATH:$GOROOT/bin' | sudo tee -a /etc/profile
source /etc/profile
go version(应输出版本号)二 配置模块与国内代理
go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct~/.bashrc 或 /etc/profile)echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc
go install 等命令。三 编译与运行示例
cat > main.go << 'EOF'package main
import "fmt"
func main() { fmt.Println("Hello, 世界") }
EOF
go build -o myapp main.go./myapp(预期输出:Hello, 世界)GOOS=linux GOARCH=amd64 go build -o dist/app-linux-amd64 main.go。四 部署为系统服务
sudo tee /etc/systemd/system/myapp.service << 'EOF'[Unit]
Description=My Go Application
After=network.target
[Service]
User=youruser
Group=yourgroup
ExecStart=/opt/myapp/myapp
Restart=always
Environment=GO_ENV=production
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp
sudo journalctl -u myapp -f
sudo yum install -y supervisorsudo tee /etc/supervisord.d/app.ini << 'EOF'[program:app]
directory=/opt/myapp
command=/opt/myapp/myapp
autostart=true
autorestart=true
stderr_logfile=/opt/myapp/log/app.err
stdout_logfile=/opt/myapp/log/app.log
environment=ENV_VAR1="value1"
EOF
sudo systemctl start supervisord && sudo systemctl enable supervisordsupervisorctl start|stop|restart app。五 网络与反向代理
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo yum install -y nginxsudo tee /etc/nginx/conf.d/myapp.conf << 'EOF'server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
sudo systemctl reload nginx && sudo systemctl enable nginx。