下面给你一套在 CentOS 上部署 Golang 项目的常见、实战型流程,适用于 CentOS 7 / 8 / Stream。你可以按需要选择 直接运行 或 用 systemd 管理。
sudo yum update -y
sudo yum install -y wget git curl
cd /usr/local
sudo wget https://go.dev/dl/go1.22.2.linux-amd64.tar.gz
版本可按需替换
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz
编辑:
sudo vim /etc/profile
追加:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
生效:
source /etc/profile
go version
cd /opt
git clone https://github.com/yourname/yourproject.git
cd yourproject
scp main.go user@centos_ip:/opt/yourproject
go mod init yourproject
go mod tidy
go build -o app
或直接运行测试:
go run main.go
./app
常见端口:
8080443确保防火墙放行端口:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
sudo vim /etc/systemd/system/mygo.service
内容示例:
[Unit]
Description=Golang App
After=network.target
[Service]
User=root
WorkingDirectory=/opt/yourproject
ExecStart=/opt/yourproject/app
Restart=always
RestartSec=5
Environment=GO_ENV=production
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start mygo
sudo systemctl enable mygo
systemctl status mygo
journalctl -u mygo -f
sudo yum install -y nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
systemctl start nginx
systemctl enable nginx
permission deniedchmod +x app
netstat -tunlp | grep 8080
0.0.0.0/opt/yourproject
├── app
├── main.go
├── config.yaml
└── logs
如果你愿意,我可以 根据你的项目类型(Web / API / 微服务 / Gin / Fiber)给你一份定制部署方案,或者帮你写 Docker + systemd 的完整部署脚本。