在 CentOS 上启动一个 Golang 服务,常见有几种方式,从最简单到生产推荐依次说明。
go build -o myapp main.go
./myapp
⚠️ 关闭终端就会退出,不适合生产环境
nohup ./myapp > app.log 2>&1 &
查看进程:
ps -ef | grep myapp
停止:
kill -9 PID
sudo vi /etc/systemd/system/myapp.service
写入内容(示例):
[Unit]
Description=My Golang Service
After=network.target
[Service]
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/myapp
User=www
Restart=always
Environment=GO_ENV=production
[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
配置:
[program:myapp]
command=/opt/myapp/myapp
directory=/opt/myapp
autostart=true
autorestart=true
user=www
stdout_logfile=/var/log/myapp.log
启动:
supervisorctl reload
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
chmod +x /opt/myapp/myapp
如果你愿意,可以告诉我:
我可以给你完全对应的启动方案。