在 CentOS 上启动(运行)一个 Go (Golang) 程序,一般有几种常见方式,下面从“最基础”到“生产环境”逐步说明。
先确认是否安装:
go version
如果没有安装:
# 以 Go 1.21 为例
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
# 配置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
cd /path/to/project
go run main.go
适合:调试、开发
go build -o myapp main.go
./myapp
后台运行:
nohup ./myapp > app.log 2>&1 &
查看进程:
ps aux | grep myapp
go build -o /opt/myapp/myapp main.go
sudo vi /etc/systemd/system/myapp.service
内容示例:
[Unit]
Description=My Go App
After=network.target
[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=root
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
systemctl status myapp
journalctl -u myapp -f
适合不想用 systemd 的场景。
yum install supervisor -y
配置 /etc/supervisord.d/myapp.ini:
[program:myapp]
command=/opt/myapp/myapp
directory=/opt/myapp
autostart=true
autorestart=true
stdout_logfile=/var/log/myapp.log
systemctl restart supervisord
✅ 确保端口未被占用
✅ 防火墙放行(如 8080)
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
✅ 生产环境不要用 go run
如果你愿意,可以告诉我:
我可以给你一份完全匹配你场景的启动方案。