ag_ball2.gif (3494 個位元組) 福康國小 Squid Proxy server 架站簡易說明

(本文修改自 中山大學代理伺服器主機文件)

    本文最近修改日期 : 2000.01.18  09:23

hotball.gif (3809 bytes) 本文件最近修正修改部份導引 ...... (詳細說明參考文件內容)

    diamond2.gif (5268 bytes)  Squid 2.3 Stable1 版本安裝修正說明 (1/18)

                 ./configure 時以 --enable-async-io=40 設定 THREAD 數量

                 squid.conf 檔中之 cache_dir 要加入 file system 之 type ( 如 asyncufs )



零、選購硬體:

請參考 Squid 作者建議的配備 以及 中山Proxy配備

壹、取回程式原始檔:

http://ftp.nsysu.edu.tw/Unix/Proxy/squid

安裝前,請注意應先確認原來是否有以 rpm 安裝 squid ,查詢方法如下:

       rpm -qa | grep 'squid'

再依查詢到的 版本 加以移除 ,指令如下:

rpm  -e   squid-2.2.3-1

確定完全移除 squid 的版本後,再進行新的安裝。

 

貳、解開並編譯:

        ( 請注意 應先確認

 

zcat squid-2.3.STABLE1-src.tar.gz | tar xf -

或 ( gunzip squid-2.3.STABLE1-src.tar.gz
       tar xf squid-2.3.STABLE1-src.tar )

cd  squid-2.3.STABLE1

修改, 增加 Thread 數 ( 在  squid-2.2.STABLE5 下的 src/aiops.c )  (此設定 2.3 版不適用)

      #define NUMTHREADS 160

                                (預設值只有 16,絕對不夠用, 效果很好哦!! )  

編譯程式 (./configure) (如果是重新編譯程式,可以先下 make clean 以清除先前之程式)

./configure --prefix=/home/squid --enable-dlmalloc --enable-gnuregex
--enable-icmp --enable-cachemgr-hostname="proxy.nsysu.edu.tw"
--enable-cache-digests --enable-poll --enable-async-io=40
--enable-err-language="Traditional_Chinese"
--enable-snmp
    (以上指令連打,參數說明如下)

(P.S. proxy.nsysu.edu.tw 請代換成您的 proxy hostname)

(--enable-dlmalloc 記憶體控制函數 可省 )
(--enable-gnuregex 字串比對函數 可省 )
(--enable-icmp 會先 ping alive 可省 )
(--enable-async-io=40  使用 multi-thread 功能 (雙 CPU 者強烈建議使用)
        ( 2.3 版修正設定 Thread 之數量,如果 RAM 256 MB 建議設 40 )

(--enable-err-language="Traditional_Chinese" 為安裝 中文化之訊息提示)
(--enable-snmp 為安裝 snmp 網管功能,用於 mrtg 之統計功能,可省略)

make

make install

make install-pinger      (可讓proxy去ping其他台)

參、設定與執行:

cd /home/squid/etc

vi squid.conf

(請參考 中山大學 squid.conf  或

             福康國小  squid.conf  [請參考檔頭 引用說明]

                               IBM 5000 proxy 參考 squid.conf   (Squid 2.2 版)
                               IBM 5000 proxy 參考 squid.conf   (Squid 2.3 版)

                                參考檔下載後,改檔名為 squid.conf 檔即可 )

( 請注意檔頭的 修改日期及修改設定說明。)

( cache_dir & store_objects_per_bucket 簡算法,請參考 )

( 相關設定尚有未研究妥當的,請自行研究,有新發現,請記得要告訴我!! )

hotball.gif (3809 bytes) squid.conf  設定檔,各版修正改變之設定

    diamond2.gif (5268 bytes) squid.2.3.stable1

        cache_dir  asyncufs   /home/squid/cache/11  2914  64  64 

                cache_dir 要加上 type,通常以 ufs , 但如果有啟動 --enable-asyncufs-io ,

                                可以 asyncufs 作為 type 之格式。

 

cd /home/squid 

新建 cache, logs/swap 等目錄

( mkdir cache , 依 squid.conf 中設定目錄)

把 cache, logs, logs/swap 等需要被 squid server 寫入更改的目錄 owner 改成 nobody 這個使用者。( 指令如下: )

chown  nobody.nobody  /home/squid/cache  -R    
    (如果 cache 目錄下還有其他的目錄,也要注意)
chown  nobody.nobody  /home/squid/logs -R
chown  nobody.nobody  /home/squid/logs/swap  -R

執行 /home/squid/bin/squid –z 建立 cache storage 目錄結構
         (這只有在第一次才做,每做一次就等於重整所有 cache)。

確認所有目錄的 owner 都正確。 ( ls -la 可以看得到 )

執行 /home/squid/bin/RunCache &
        ( 查看 squid.out 及  logs 目錄下的 cache.log 中是否正常啟動 )

修改開機批次檔,
將 /home/squid/bin/RunCache & 加進開機自動執行的程序中。

( 因為第一次是以 root 身份啟動,所以,/home/squid/squid.out /home/squid/squid.pid 的擁有者是 root ,這會造成下列以 nobody 身份啟動 squid 時,會有錯誤出現,所以,必須在第二次由 rc.local 啟動前,先行將 squid.out 及 squid.pid 兩個檔的擁有者(owner)改為 nobody,即是

chown  nobody.nobody  /home/squid/squid.out
chown  nobody.nobody  /home/squid/squid.pid

)

(Linux RedHat): 在 /etc/rc.d/rc.local 中加入

      su  nobody  -c   "/home/squid/bin/RunCache &"

( 以 nobody 啟動,以防 root 的身份會有對     系統不當的不預期傷害 !! )

肆、維護:

一、關機程序:( 請勿直接 shutdwon -r now 系統 )

用 ps 查看 RunCache process pid ,先把他砍掉。

ps aux | grep RunCache 可找 到  RunCache 的 pid ( 如  127 )

kill  -9  127 

以  ps aux | grep RunCache 再次查詢確定 RunCache 是否正確 kill  (找不到才對)

( 建議 多執行幾次 kill -9 的指令,直到 出現 kill: (127) - No such pid 的訊息出現為止 )

執行 /home/squid/bin/squid –k shutdown

( 建議 多執行幾次 /home/squid/bin/squid –k shutdown ,直到

    squid: ERROR: No running copy 訊息出現為止 )

用 tail cache.log 或是 ps 查看 squid 是否結束(exiting...)了。

當 squid process 結束後,才可以 sync;sync;shutdown -r now 或 sync;sync;reboot   關機或重新開機。

二、清理 log:

用 /home/squid/bin/squid –k rotate 可以輪替 log 檔名,就可以把輪替出來的舊 log 砍掉。  (把*.1 *.2 ....清除)

建議在 crontab 中加入自動清除的 工作排程

下指令:  crontab -e  ;加入如下工作排程

00   3   *   *   *   /home/squid/bin/squid -k rotate 

後存檔 !! 即可。( 以上指設定每日 03:00 自動清除 )

至於要留幾天的  log file 則要看您在 squid.conf 中  logfile_rotate 值的設定而定,超出的部份系統會自動清除掉。

三、更改設定:

每次更改 squid.conf 之後只要用 squid –k reconfigure 這個命令即可讓新設定生效。

四、定期修改 squid.conf 設定

在中山區網 會公告相關訊息,如 台灣區所屬的 IP ,應定時同步修改。( 或可參考 福康國小的 squid.conf 設定檔 )

五、自行修改 proxy 處理錯誤訊息的中文化

proxy 系統在處理錯誤訊息時,有內定一些提示,但都是英文,為了使用者能在遇到錯誤訊息時,又可以看到中文的訊息提示,以便能自行排除錯誤。

相關的訊息以 html 檔格式存放在  /home/squid/etc/errors 的目錄中,可以自行修改!

如 DNS 反查錯誤訊息可以修改  ERR_DNS_FAIL 。(請點選參考,如有 提示訊息翻譯錯誤,請指教。)

 

六、問題:

1. 請常常瀏覽 http://proxy.nsysu.edu.tw/ 網頁,上面常會有新設定或新公告,也會蒐集一些參考文件,以及常見問答集。

 

七、增進效能處理:(For RedHat 6.0)

        為增進 Squid  Proxy 效能,可以再增加以下之處理,效能會更好。( 請熟悉 Unix 系統者才做! 如困處理不慎可能會造成系統當機!!! )

1. 安裝 PGCC (PGCC 2.95.1 Pentium GCC 2.95.1 For Linux 19990816 release)

據文件報告,可增進 Intel Pentium CPU 系列 10% ~ 30% 之效能。

PS. 相關文件參見本站相關文件(pgcc)

PS. 有關 solaris 之 PGCC 安裝及使用尚在研究中! (歡迎先進提供相關資料)

2. 以 PGCC 重編核心

    修改 /usr/src/linux/include/linux 下與極限相關的含括檔   nlimits.h :

#define OPEN_MAX 4096         /* open files a process may have */

( 增進 multi-thread 之效率)

PS. solaris 只要修改 /etc/system 中加入

        set  maxusers=256
        set  rlim_fd_max = 8192

        後,重新開機即可。

3. 增加 Squid 系統之 Threads 數量

        (只適用於 2.2 版,2.3 版以後己經在 configure 時的 --enable-async-io=40 參數中設定完成了!! )

修改原程式目錄中之 src/aiops.c 下列設定,此數字為 squid 使用 threads 的上限

#define NUMTHREADS  80 (預設值只有 16,絕對不夠用)

4. 重編 squid

 

PS.本增進效能之建議作法,筆者並沒實際以程式去測試,但以使用者反應,效率確有明顯增進,僅供參考。

 

伍、銘 謝:

本文蒙高雄市資訊小組之協助測試,尤其瑞祥高中 謝祿適 老師提供新版測試資料,在此致上謝意!

 

home.gif (6343 個位元組)