由于面板上的某些节点使用人数较多,负载较大,导致 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
yum install supervisor #2
3.创建配置文件
echo_supervisord_conf > /etc/supervisord.conf
常见问题:创建配置文件失败 此时请使用以下指令手动安装 meld3
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
安装有systemctl
centos 7 用 systemctl 进行管理,只要运行下面的代码就可以了:systemctl enable supervisord.service
提示没有
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管理界面
打开配置文件
vi /etc/supervisord.conf
找到
[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))
- 保存退出。Esc :w :q
- 可以打开 ip:端口(如:0.0.0.0:9001)在网页上进行进程的查看和管理。
错误解决方法
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 当程序意外终止崩溃时能自动进行重启,使程序始终处于运行状态,我们也能省心不少。