有时候需要写一些 go 小程序跑在 VPS 上面,但是又没有守护进程去监听管理,可能 crash 了老半天也不知道。这时就需要使用 supervisor 来管理,简单又方便,直接用 apt、yum 安装好了,修改一下 conf 配置,就可以自动运行我们的 go 程序了,crash 了也能自动重启。

我的环境是 ubuntu,当然在 centos 上安装,配置也是几乎无差别的。apt install supervisor 或者 yum install supervisor

通过 apt 安装,supervisor 的配置文件会放在/etc/supervisord.conf或者/etc/supervisor/supervisord.conf,可以自己找一下。

在配置文件当中,加入下面一小段配置:

1
2
3
4
5
6
7
8
9
10
[program:app_name]
# 这里就写你自己项目的路径,这里会影响到go程序内相对路径的引用
directory=/usr/local/your_app_path
# 编译后的go执行文件
command=/usr/local/your_app_path/exe
autostart=true
autorestart=true
# 日志输出,根据自己设置位置
stderr_logfile=/var/log/supervisor/app_name.err.log
stdout_logfile=/var/log/supervisor/app_name.out.log

配置好后,我们使用 systemctl restart supervisor 重新启用一下,新的配置信息就能加载了。如果启动失败,可以通过 /var/log/supervisor/下的日志进行问题排查。