supervisor 踩坑

在对比过几个Git web端管理器之后,在内网部署了gogs。初次运行不讲究,直接

1
2
$ su git
$ ./gogs web

然而这不是长久之计,一直挂着一个shell不说(虽然我用byobu可以detach),重启还得手动再起来。

之前在 CentOS 7 部署,因为有 systemd ,非常方便,可是 Ubuntu 只有 init ,全部换成 systemd 管理又太折腾了。
然后我就留意到 gogs 的 scripts 目录有 supervisor 的配置,于是就尝试用 supervisor 管理。

纯踩坑记录,非详细教程。

安装

apt 源有,不解释。

1
$ sudo apt-get install superviosr

安装完之后,supervisor 自动就启动了。service --status-all 可以看到。

据说如果通过Python安装,需要自己生成配置文件之后启动:

1
$ echo_supervisord_conf > /etc/supervisord.conf

配置

gogs 的 scripts 目录下已经有了对应的配置,复制到 /etc/supervisor/conf.d/,并把名字改为 gogs.conf即可。

尝试启动

1
2
$ sudo supervisorctl start gogs
gogs: ERROR (no such process)

原因是,supervisor 找不到 gogs 的配置。刚不是已经添加了配置了吗?生效之前,还要(每次修改配置之后都要):

1
2
$ sudo supervisorctl reload
Restarted supervisord

再来一次

1
2
$ sudo supervisorctl start gogs
unix:///var/run/supervisor.sock no such file

没有socket文件,我们帮它创建一个

1
2
3
4
$ sudo touch /var/run/supervisor.sock
$ sudo chmod 777 /var/run/supervisor.sock
$ sudo service supervisor restart
Restarting supervisor: Error: The directory named as part of the path /var/log/gogs/stdout.log does not exist.

这个文件夹不存在,帮它建一个:

1
2
3
4
$ sudo mkdir -p /var/log/gogs/
$ sudo service supervisor restart
$ sudo supervisorctl start gogs
gogs: ERROR (no such file)

查看 /etc/supervisor/conf.d/gogs.conf ,原来配置模板里,gogs的目录路径是随便填的,根据当前实际的路径改过来(记得reload),就好了。

最后

gogs 在supervisor 的管理下跑起来了,而且下次重启也会自动启动。

我重新看了一次 gogs 的 scripts 目录,忽然发现,它其实是带了 init 配置的……

我折腾这干嘛…… 谁叫我眼瞎[捂脸]


知识共享 “署名-非商业性使用-相同方式共享” 4.0 (CC BY-NC-SA 4.0)”许可协议
本文为本人原创,采用知识共享 “署名-非商业性使用-相同方式共享” 4.0 (CC BY-NC-SA 4.0)”许可协议进行许可。
本作品可自由复制、传播及基于本作品进行演绎创作。如有以上需要,请留言告知,在文章开头明显位置加上署名(Jayce Chant)、原链接及许可协议信息,并明确指出修改(如有),不得用于商业用途。谢谢合作。
详情请点击查看协议具体内容。