编译安装Squid 3.14

0 ~o~

最近重新编译安装了学校的squid,分享下:
Step 1 获取源码
wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.14.tar.gz
Step 2 解压、进入目录

tar zxvf squid-3.1.14.tar.gz
cd squid-3.1.14

Step 3 configure

./configure --prefix=/usr/local/squid --disable-carp --with-aufs-threads=32 --with-pthreads --with-large-files --enable-storeio=\'ufs,aufs\' --enable-disk-io=\'AIO,Blocking\' --enable-removal-policies=\'heap,lru\' --disable-wccp --enable-kill-parent-hack --enable-snmp --disable-poll --disable-select --disable-ipv6 --enable-auth=basic --with-aio --disable-ident-lookup --enable-useragent-log --enable-referer-log --with-filedescriptors=65536 --with-pidfile=/var/run/squid.pid

Step 4 安装

make && make install

都是日志文件惹的祸

0 ~o~

        今天白天修改了学校Cache服务器的配置文件,添加了静态页面的缓存设置,原本是不缓存html页面的。本来没出什么问题,结果到饿了晚上八点多突然访问不了网站了。SSH登陆上去,发现squid进程没有起来。按照以往的经验shutdown一下再重启squid进程就OK了,结果还是不行。难道是我的配置出问题导致Squid起不来?于是我把白天加的配置删掉,还是不行,不呢来想着要是原来的配置文件还在的话可以重新覆盖下,可惜之前没有备份配置文件啊。
        关键问题还是找不到原因,squid就是起不来。求助了下连铭,他让我看下日志。于是我就看了,原来还需要-z重新建缓存,之前我貌似建过了的啊,不管了,再建下。OK ,然后squid -s启动,然后netstat -ant 查看下进程,开始监听80端口了,终于起来了。可是我还是访问不了网站,怎么回事呢?
       再查看下进程和端口,发现squid自动退出了。原来squid不是起不来,而是很快会自动退出。求助下谷歌大叔,发现有人说是日志文件超过2G,squid会自动退出。不管我的是不是这个情况,查看下日志文件,果然很大了已经,全部删除,然后启动squid。ok,网站终于恢复了,历时一个多小时。真没想到原来日志文件过大也会惹祸,而且一点提示也没,真想不到。一直以为是自己改了配置的原因呢。
可是明明记得之前自己添加了crontab定时清理日志的啊。crontab -l查看下居然发现没了那个任务。我的天,一定是自己前段时间折腾openvpn什么的把crontab里的任务删除了。于是重新添加上,为了安全,加大了清理的频率。哈哈,终于解决问题,同时自己也学会了出问题多看看日志,这个习惯我还是没有养成啊。加油!

手动删除cache指定链接脚本

0 ~o~

   此脚本可删除指定链接的缓存,用于删H图
#!/bin/sh
squidcache_path="/usr/local/squid/var/cache"
squidclient_path="/usr/local/squid/bin/squidclient"
grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' >cache_list.txt
for url in `cat cache_list.txt`; do
$squidclient_path -m PURGE -p 80 $url
done

squid反向代理实现简单负载均衡

0 ~o~

修改squid.conf文件
cache_peer 10.11.12.151 parent 80 0 no-query originserver name=web1 round-robin
cache_peer 10.11.12.146 parent 80 0 no-query originserver name=web2 round-robin
cache_peer_domain web1 web2 .test.com

这样访问squid时,
squid会从后端的实际服务器中挑选一台进行抓取
例子中使用的是RR的方法轮询
squid同时会对后端的健康状态进行检查
如果后端服务器down了
那么squid会从剩余的origin服务器中抓取数据

squid学习笔记之ERROR: No running copy解决

0 ~o~

Problem:
#/usr/local/squid/sbin/squid -k reconfigure
squid: ERROR: No running copy
Resolve:
#ps -aux|grep squid
nobody 2480 0.0 0.7 4088 996 ? S 10:41 0:00 /bin/sh /usr/local/squid/bin/RunCache
nobody 2487 0.1 5.5 8980 6968 ? S 10:41 0:02 squid -NsY
root 3104 0.0 0.5 4448 648 pts/2 S 11:10 0:00 grep squid
#cat /etc/squid/squid.conf |grep “squid.pid”
pid_filename /var/run/squid.pid
#echo /var/run/squid.pid
5049

#vi /etc/squid/squid.conf
修改/var/run/squid.pid为
pid_filename /usr/local/squid/var/logs/squid.pid
此为默认的
然后写入,注意此处的2487改成你对应的PID
#echo “2487” > /usr/local/squid/var/logs/squid.pid
#/usr/local/squid/sbin/squid -k reconfigure

您使用的是IE浏览器,请下载Chrome来获得更好的体验