from : http://i.yoho.cn/logview/278079.html
以前的squid都是一个同事编译安装的,所有我只知道方法,具体安装没有去时间过,这次由于网站带宽吃紧,又购买了两台dell的服务器作为squid缓存服务器,以前安装的同事由于个人原因辞职了,没办法,值得自己动手了,第一次安装基本顺利,上架试用,运行一段时间就报错“WARNING! Your cache is running out of filedescriptors”查看了squid 权威指南,说是squid用完了所有可用文件描述符,按照说明,把squid删除了,重新编译,但是还是不行,在网上找了半天,没找到原因,最后又去看squid 权威指南,终于找到了原因“,./configure会缓存它在你系统中发现的东西”,因为我第二次编译的时候偷了点懒,是在第一次减压出来的文件夹下去编译的,也没有运行“#make clean和#make distclean”所有编译后和原来的系统内核一样,下面列出我的最终编译安装步骤:
1:减压文件:# tar xzvf /some/where/squid-2.5.STABLE4-src.tar.gz
2:调整内核:(我使用的是linux)
首先编辑/usr/include/bits/typesizes.h 文件,改变__FD_SETSIZE 的值:#define _ _FD_SETSIZE 32768
使用命令增加内核文件描述符的限制:# echo 32768 > /proc/sys/fs/file-max
运行#sh
最后,增加进程文件描述符的限制,在你即将编译squid 的同一个shell 里执行:sh# ulimit -Hn 32768
该命令必须以root 运行,仅仅运行在bash shell。不必重启机器。
3:编译、安装squid
编译./configure设置:./configure --prefix=/usr/local/squid
--enable-removal-policies="heap,lru"
--enable-storeio="aufs,coss,diskd,null,ufs"
--enable-delay-pools
--enable-linux-netfilter
--enable-useragent-log
--enable-referer-log
--enable-truncate
--enable-underscores
--enable-basic-auth-helpers="NCSA"
--enable-err-language="Simplify_Chinese"
--enable-default-err-language="Simplify_Chinese"
--enable-stacktrace
--enable-auth="basic"
--disable-dependency-tracking
--disable-internal-dns
--with-pthreads
编译:make
安装:make install
4:创建squid登陆ID(useradd usrname password),创建缓存目录,赋予squid的缓存目录的权限和squid 的logs的权限(chown squid:squid /usr/local/squid/var/logs)
5:设置配置文件,和系统hosts文件
6:创建缓存目录:
# cd /usr/local/squid/sbin
#./squid –z ( 出现Creating Swap Directories提示,表示建立成功)
7:调试运行:
#./squid –NCd1 # 成功后将出现"Ready to serve requests".否则请检查配置文件。(说明,用squid -NCd1来以debug模式启动,这样如果有错误会报出来(FATAL: ipcache_init: DNS name lookup tests failed),因为squid启动时会去检查一些常用的DNS,但是如果这时候没有接入internet,自然就出错了,所以我们需要在启动的时候不检查DNS,这就需要用加上-D选项来启动squid,命令如下:#./squid –NCDd1 # 参数Dd1的目的是禁止测试DNS的连通性并且把squid在开始运行后的一些提示信息显示在屏幕上)
8:注册squid为服务:
编写shell脚本存放到目录 /etc/init.d/:
#!/bin/bash
# squid This shell script takes care of starting and stopping
# Squid Internet Object Cache
#
# chkconfig: 546 36 76
# description: a name server
#
case "$1" in
start)
ulimit -HSn 32768 --这句比较重要
/usr/local/squid/sbin/squid -D
;;
stop)
/usr/local/squid/sbin/squid -k shutdown
/usr/local/squid/sbin/squid -k shutdown
;;
reload)
/usr/local/squid/sbin/squid -k reconfig
;;
info)
/usr/local/squid/bin/squidclient -p 80 cache_object://localhost/info
;;
esac
添加权限和开启自动启动
chmod +x squid
chkconfig squid on
OK,安装成功,重启测试是否自动开启squid。