- 环境:CentOS7
- 魔改后端目录:/root/shadowsocks
- django-sspanel后端目录:/root/shadowsocksr
- django-sspanel前端目录:/www/wwwroot/ssr.augustdoit.bid/django-sspanel
想到几种的的方法:
方法一 添加开机启动脚本
方法二 添加到 systemd 系统服务中
方法三 Supervisor 进程守护
三种方法均可以,推荐方法二。
注意:
- django-sspanel 后端目录为 /root/shadowsocksr
- 魔改版 后端目录为 /root/shadowsocks
vi /etc/rc.d/rc.local
# 加入如下字段 注意后端目录不同
#django-sspanel版本为
sh /root/shadowsocksr/run.sh
# 魔改版版本为
sh /root/shadowsocks/run.sh
#赋予可执行权限
chmod +x /etc/rc.d/rc.local
#然后重启
reboot
yum install supervisor -y
systemctl enable supervisord
wget https://saku.moe/resource/supervisord.conf -O /etc/supervisord.conf
systemctl start supervisord
默认目录应该是 /root/shadowsocks ,如果不是,请自行修改 supervisord.conf 最底部 [program:mu] 中的 directory
创建服务
vi /usr/lib/systemd/system/ssr.service
或者
vi /etc/systemd/system/ssr.service
编辑内容如下:
[Unit]
Description=ssr
After=syslog.target
After=network.target
[Service]
LimitCORE=infinity
LimitNOFILE=512000
LimitNPROC=512000
Type=simple
WorkingDirectory=/root/shadowsocksr
ExecStart=/usr/bin/python /root/shadowsocksr/server.py
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
上述内容需要注意两个地方
- 后端目录,也就是
WorkingDirectory=
以及ExecStart=
两个字段 Linux句柄数限制,若已经更改,下列三行不用添加,或者参照SSR后端优化
LimitCORE=infinity
LimitNOFILE=512000
LimitNPROC=512000
使用命令如下:
启动服务: systemctl start ssr.service
停止服务: systemctl stop ssr.service
重启服务: systemctl restart ssr.service
设置自启: systemctl enable ssr.service
取消自启: systemctl disable ssr.service
前端其实没有必要的,而且也不推荐,但毕竟尝试了半天,这里也记录一下吧。
之前一直用脚本启动前后端,脚本内容如下:
仅前端sspanel.sh(名称随便起)
#!/bin/bash
cd /www/wwwroot/ssr.augustdoit.bid/django-sspanel
screen -dmS uwsgi uwsgi uwsgi.ini
仅后端ss.sh
#!/bin/bash
cd /root/shadowsocksr
screen -dmS ssr python server.py
上面所述三种方法都进行了尝试,只方法二添加到 systemd 有效,方法三由于Supervisor不支持 python 3以上,而django-sspanel前端装的3.61 所以不支持。
步骤
vi /etc/systemd/system/sspanel.service
编辑内容如下:
[Unit]
Description=sspanel
After=syslog.target
[Service]
ExecStart=/root/.pyenv/versions/venv-sspanel/bin/uwsgi --emperor /www/wwwroot/ssr.augustdoit.bid/django-sspanel
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
注意 需要删除站点根目录下user.ini (先压缩并备份后可删除)需删除docker-compose.yml (重命名下即可)
前端参考了:
How to Set Up Django with Nginx, uWSGI & systemd on Debian/Ubuntu