Shadowsocks systemd 配置

更新了下服务器,第一件事当然是配Shadowsocks了,这次换上了新的Centos 7,刚好可以用systemd管理服务,于是顺手配置了nobody自启动的Shadowsocks服务,配置文件如下:

/usr/lib/systemd/system/shadowsocks.service

[Unit]
Description=Shadowsocks Server
After=network.target

[Service]
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /run/shadowsocks
ExecStartPre=/bin/chown nobody:nobody /run/shadowsocks
ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json
Restart=on-abort
User=nobody
Group=nobody
UMask=0027

[Install]
WantedBy=multi-user.target

简要说明:

首先,systemd的所有可用的单元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 目录,后者优先级更高。

ExecStartPre 指服务启动前执行的脚本,这里当然不能用nobody执行。所以设置 PermissionsStartOnly ,指的是只有ExecStart中的脚本用设置中的权限执行。

ExecStart 中ssserver如果加了-d参数,用nobody执行就会有权限问题。

UMask 0027 和umask 027一样,最后一位7代表对Others的File permission为0。

这里没有用Type=forking参数,因为本身没加-d参数,ssserver不会fork自己作为守护进程。默认Simple,即把守护进程化、重启、结束等工作交给systemd处理。

WantedBy=multi-user.target对应原来的runlevel 3。
最后别忘了执行设置自启动:

systemctl enable shadowsocks

直接用systemctl管理shadowsocks:

systemctl start shadowsocks
systemctl stop shadowsocks
systemctl status shadowsocks
comments powered by Disqus