TinyProxy是個很是便利,及容易架設的HTTP代理,和squid相比,tinyproxy更小,更好使用。html
線上的一臺Google代理服務器用的是meow,也是一款http代理軟件。可是有一個缺點,須要後臺啓動,並且,運行一段時間,進程就會掛掉。因此不得不寫個腳本,來監控進程,防止掛掉。git
準備搭建一個爬蟲服務器,買了一個×××,能夠隨時切換IP的。後端PHP程序只須要調用這臺的http代理就能夠了。github
http代理不能斷,因此選擇了tinyproxy。vim
安裝方法,有2中。後端
yum install -y tinyproxy服務器
https://github.com/tinyproxy/tinyproxy 下載最新的包ide
我選擇的是第2種方法,最新版本應該比較穩定。測試
安裝組件ui
yum install -y asciidocspa
下載軟件包以後,開始解壓安裝
unzip tinyproxy-master.zip -d /usr/src/
cd /usr/src/tinyproxy-master/
./autogen.sh
./configure --prefix=/usr/local/tinyproxy
make && make install
備份配置文件
cd /usr/local/tinyproxy/etc/tinyproxy/
cp tinyproxy.conf tinyproxy.conf.bak
cat tinyproxy.conf.bak | grep -v "^#" | grep -v "^$" > tinyproxy.conf
修改配置文件tinyproxy.conf
紫色部分是須要修改的,效果以下:
User root
Group root
Port 8888
Timeout 600
DefaultErrorFile "/usr/local/tinyproxy/share/tinyproxy/default.html"
StatFile "/usr/local/tinyproxy/share/tinyproxy/stats.html"
LogLevel Info
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
#Allow 127.0.0.1
ViaProxyName "tinyproxy"
ConnectPort 443
ConnectPort 563
Listen 1x.1x.1x.1x
PidFile "/var/run/tinyproxy.pid"
LogFile "/var/log/tinyproxy.log"
相關解釋:
這裏我解釋下,修改部分。
默認的user和grop是nobody,若是不改的話,會在/var/log/message日誌中看到建立日誌文件失敗,沒有權限
Allow表示容許使用tinyproxy進行HTTP代理的IP地址,由於內網多臺服務器訪問,因此直接注視,就是容許開放訪問。
Listen 表示監聽地址,這裏我寫的是內網IP,那麼公網是沒法訪問到的,原本就只容許內網訪問。
PidFile和LogFile表示pid文件和Log文件。
編輯啓動腳本
vim /etc/init.d/tinyproxy
腳本內容我是參考yum安裝tinyproxy的啓動腳本,相關路徑改了下
內容以下:
#!/bin/sh
#
# tinyproxy Startup script for the tinyproxy server
#
# chkconfig: - 85 15
# description: small, efficient HTTP/SSL proxy daemon
#
# processname: tinyproxy
# config: /usr/local/tinyproxy/etc/tinyproxy/tinyproxy.conf
# config: /etc/sysconfig/tinyproxy
# pidfile: /var/run/tinyproxy.pid
#
# Note: pidfile is created by tinyproxy in its config
# see PidFile in the configuration file.
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
exec="/usr/local/tinyproxy/sbin/tinyproxy"
prog=$(basename $exec)
config="/usr/local/tinyproxy/etc/tinyproxy/tinyproxy.conf"
[ -e /etc/sysconfig/tinyproxy ] && . /etc/sysconfig/tinyproxy
lockfile=/var/lock/subsys/tinyproxy
start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon $exec -c $config
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $prog: "
killproc $prog -HUP
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $?
添加權限,添加到開機自啓動項目
chmod +x /etc/init.d/tinyproxy
chkconfig --add tinyproxy
chkconfig --level 2345 tinyproxy on
啓動tinyproxy
/etc/init.d/tinyproxy start
查看端口是否啓動
netstat -anpt | grep tinyproxy
使用PHP代碼測試http代理是否可用