小李同学 keep digging deeper
Ubuntu

使用supervisor托管运行服务器上的go程序

— 字

Supervisor 管进程:启动、停止、重启、看状态和日志,崩了自动拉起来。拿它托管服务器上的 Go 程序,省得自己写 systemd unit 或 nohup。

装

$ sudo apt-get install supervisor

配置

主配置文件在 /etc/supervisor/supervisord.conf。不确定位置时,可以让它把默认配置打出来:

$ sudo supervisorctl echo_supervisord_conf

这条命令在部分发行版的包里不存在,报找不到就直接用 echo_supervisord_conf,或者看默认路径。

主配置一般不用改,要托管什么进程,就往 /etc/supervisor/conf.d/ 里丢一个配置文件:

$ sudo touch /etc/supervisor/conf.d/myprogram.conf

内容如下,路径和用户名换成自己的:

[program:myprogram]
command=/path/to/your/go/program  # 运行go程序的命令,需要修改为实际的路径
directory=/path/to/your/go/program  # go程序的目录,需要修改为实际的路径
user=yourusername  # 以哪个用户身份运行程序,需要修改为实际的用户名
autostart=true  # 启动Supervisor时是否自动启动该进程
autorestart=true  # 程序崩溃时是否自动重启该进程
redirect_stderr=true  # 是否将标准错误重定向到日志文件
stdout_logfile=/tmp/myprogram.log  # 标准输出的日志文件路径,需要修改为实际的路径

directory 要写程序所在目录,因为 Go 程序经常按相对路径读配置,工作目录不对会直接启动失败。

生效

$ sudo supervisorctl reread
$ sudo supervisorctl update

reread 只是重读配置,update 才真正把新增或修改的进程应用上去。

日常操作

$ sudo supervisorctl status myprogram
$ sudo supervisorctl start myprogram
$ sudo supervisorctl stop myprogram
$ sudo supervisorctl restart myprogram

本文作者 小李同学,转载请注明出处。

评论

还没有人留言。

写一条

提交后会先进站主的待审列表,通过之后才公开。

搜索文章

输入关键词搜索文章。