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。