系统环境:ubuntu15.10 64bit , privoxy 3.0.24

代理环境:linux下使用privoxy将socks转为http代理


1.重现失败环境。

不知道是什么原因,privoxy无法开机启动。于是,我手动使用systemctl开启。

sudo systemctl start privoxy.service

结果失败,提示使用 systemctl status privoxy.service 和 journalctl -xe察看原因。

sudo systemctl status privoxy.serivce
journalctl -xe

输出信息并没有什么,仅仅一个failed ……status = 1.

2.尝试手动运行privoxy.service中的命令。

cat /lib/systemd/system/privoxy.service

输出:

[Unit]
Description=Privacy enhancing HTTP Proxy

[Service]
Environment=PIDFILE=/var/run/privoxy.pid
Environment=OWNER=privoxy
Environment=CONFIGFILE=/etc/privoxy/config
Type=forking
PIDFile=/var/run/privoxy.pid
ExecStart=/usr/sbin/privoxy  --pidfile $PIDFILE --user $OWNER $CONFIGFILE 
ExecStopPost=/bin/rm -f $PIDFILE
SuccessExitStatus=15

[Install]
WantedBy=multi-user.target

“ExecStart=”后面的就是会执行的命令,注意将$PIDFILE等变量换掉。

sudo /usr/sbin/privoxy  --pidfile/var/run/privoxy.pid --user privoxy /var/run/privoxy.pid

发现并不能启动privoxy,查了下privoxy的帮助,加了下–no-daemon参数,就是不把privoxy作为后台daemon运行。

sudo /usr/sbin/privoxy  --no-daemon --pidfile/var/run/privoxy.pid --user privoxy /var/run/privoxy.pid

结果成功了!

3.将正确的命令替换到privoxy.service中。

于是把–no-daemon添加到privoxy.service的“ExeStart=”里面。

sudo vim /lib/systemd/system/privoxy.service

将: ExecStart=/usr/sbin/privoxy --pidfile $PIDFILE --user $OWNER $CONFIGFILE 换成: ExecStart=/usr/sbin/privoxy --no-daemon --pidfile $PIDFILE --user $OWNER $CONFIGFILE 重新启动privoxy。

sudo systemctl daemon-reload
sudo systemctl start privoxy.service

结果一直不退出,但是用netstat -lnpt查看,发现privoxy启动成功了。

netstat -lnpt | grep 8118
tcp        0      127.0.0.1:8118            0.0.0.0:*               LISTEN 

然后我想了一下,可能是systemd启动类型有问题,可是我改了下privoxy.service的启动类别。

sudo vim /lib/systemd/system/privoxy.service

将:

[Unit]
Description=Privacy enhancing HTTP Proxy

[Service]
Environment=PIDFILE=/var/run/privoxy.pid
Environment=OWNER=privoxy
Environment=CONFIGFILE=/etc/privoxy/config
Type=forking
PIDFile=/var/run/privoxy.pid
ExecStart=/usr/sbin/privoxy --no-daemon --pidfile $PIDFILE --user $OWNER $CONFIGFILE 
ExecStopPost=/bin/rm -f $PIDFILE
SuccessExitStatus=15

改为:

[Unit]
Description=Privacy enhancing HTTP Proxy

[Service]
Environment=PIDFILE=/var/run/privoxy.pid
Environment=OWNER=privoxy
Environment=CONFIGFILE=/etc/privoxy/config
Type=simple
PIDFile=/var/run/privoxy.pid
ExecStart=/usr/sbin/privoxy --no-daemon --pidfile $PIDFILE --user $OWNER $CONFIGFILE 
ExecStopPost=/bin/rm -f $PIDFILE
SuccessExitStatus=15

重新启动privoxy,结果成功启动privoxy,privoxy.service也成功退出。

sudo systemctl daemon-reload
sudo systemctl start privoxy.service

4.最后重启系统,privoxy也成功开机启动。