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。