由于面板上的某些节点使用人数较多,负载较大,导致 shadowsocks 进程总是会自己关闭,只有自己通过 ssh 登陆 vps
重新启动进程才能恢复使用,如果在将来经常发生这种情况,将会给服务带来诸多的不便,因此谷歌了一下,学习了为 ssr-manyuser 添加
supervisor 守护进程的方法,以及常见问题汇总。

以下内容均在 Centos6 x86_64 环境下操作


1.安装 epel 和 python-pip

yum install epel-release -y  
yum -y install python-setuptools && easy_install pip

2.Centos安装 supervisor

yum install epel-* -y
yum install supervisor -y

其他安装方式

easy_install supervisor #1
yum install supervisor #2

3.创建配置文件

echo_supervisord_conf > /etc/supervisord.conf

常见问题:创建配置文件失败 此时请使用以下指令手动安装 meld3

git clone https://github.com/Supervisor/meld3
cd meld3
python setup.py install

然后重新执行创建配置文件操作

4.编辑配置文件

vi /etc/supervisord.conf
[program:shadowsocks]
command = python /root/shadowsocks/server.py
user = root
autostart = true
autoresart = true
stderr_logfile = /var/log/ss.log
stdout_logfile = /var/log/ss.log

双启动,/root/shadowsocksk/下也安装ssr


[program:shadowsocksk]
command = python /root/shadowsocksk/server.py
user = root
autostart = true
autoresart = true
stderr_logfile = /var/log/ssk.log
stdout_logfile = /var/log/ssk.log

上述添加内容介绍


[program:shadowsocks] 程序名称,配置完毕后执行启动命令时需要
command = python /root/shadowsocks/server.py 自动执行的启动命令
user = root 执行用户
autostart = true 自动启动
autoresart = true 自动重启
stderr_logfile = /var/log/ss.log 错误日志输出路径
stdout_logfile = /var/log/ss.log 运行日志输出路径
注意事项:请将 command 一项的路径改为实际服务端 shadowsocks 所在目录

注意事项:默认的日志输出文件不会自动创建,请手动在日志输出路径下新建log文件,具体操作如下,请注意按行依次操作

vi /var/log/ss.log
:wq

5.启动 supervisor

supervisord -c /etc/supervisord.conf

6.配置文件更新 重启

如果你在启动 supervisor 后更改了配置文件的内容,则需要向程序提交新的配置文件

supervisorctl update
supervisorctl reload

7.设置开机启动supervisor

  1. 安装有systemctl
    centos 7 用 systemctl 进行管理,只要运行下面的代码就可以了:

    systemctl enable supervisord.service
  2. 提示没有systemctl的话,利用rc.local

    #将/etc/rc.d/rc.local文标记为可执行文件
    chmod +x /etc/rc.d/rc.local
    #打开/etc/rc.d/rc.local文件
    vi /etc/rc.d/rc.local
    #在最后添加:
    supervisord -c /etc/supervisord.conf

常用命令

ps -ef | grep server.py             # 查看 ss 后台运行状态
tail -f /var/log/ss.log             # 查看输出日志
supervisorctl status                # 查看状态
supervisorctl stop shadowsocks      # 停止 shadowsocks
supervisorctl start shadowsocks     # 打开 
supervisorctl restart shadowsocks   # 重启

Web管理界面

  1. 打开配置文件

    vi /etc/supervisord.conf
  2. 找到[inet_http_server]那部分,修改如下(前面的“分号”去掉)

    [inet_http_server]    ; inet (TCP) server disabled by default
    # 端口(9001)可自行设置,但要避免和已用端口冲突
    port = *:9001         ; (ip_address:port specifier, *:port for all iface)  
    # 登陆用户名
    username = user       ; (default is no username (open server))
    # 登陆密码     
    password = 123456     ; (default is no password (open server))
  3. 保存退出。Esc :w :q
  4. 可以打开 ip:端口(如:0.0.0.0:9001)在网页上进行进程的查看和管理。

1.png


错误解决方法

  1. Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting

    find / -name supervisor.sock
    unlink /name/supervisor.sock

结语

使用 supervisor 当程序意外终止崩溃时能自动进行重启,使程序始终处于运行状态,我们也能省心不少。

最后修改:2018 年 05 月 31 日
如果觉得我的文章对你有用,请随意赞赏