SSR 前、后端开机启动几种方法

  • 环境: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

方法三 Supervisor 进程守护

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

方法二 添加到 systemd

创建服务

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

上述内容需要注意两个地方

  1. 后端目录,也就是WorkingDirectory=以及ExecStart=两个字段
  2. 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

django-sspanel 前端加入 systemd

前端其实没有必要的,而且也不推荐,但毕竟尝试了半天,这里也记录一下吧。

之前一直用脚本启动前后端,脚本内容如下:

仅前端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 (重命名下即可)

前端参考了:

uwsgi文档 uwsig systemd

systemd-uwsgi-example

How to Set Up Django with Nginx, uWSGI & systemd on Debian/Ubuntu