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。