Squid 詳細介紹2

Squid詳細介紹1

隔了很久纔有空可以寫這個經驗體會,前一段時間一直在搞qmail,頭大中,終於可以空下來了:)

先看squid的一個重要的,對我來說也是唯一需要配置的一個配置文件。選項非常多,當然,默認的squid.conf文件中對於每一個選項都有比較詳細的說明,但是我還是想把我理解的以及必須要進行配置的選項羅列出來,以免過段時間自己都忘了^_^

以下的配置我是要向sina,sohu,163學習的web server的架構,試着自己去搭建一個這樣的環境來看看效果到底如何。因此這裏的squid不是用來做代理的,而是反向作爲網站高速緩存。其實原理差不多,只是方向反一反而已,相信都能理解這點的。

使用的測試服務器爲Dell 2650 雙CPU至強2.4G 內存DDR 2G。OS爲Freebsd 5.2.1(這裏需要說明的是,從實際使用情況來看,squid跑在freebsd上的效果是最快最好的。這是由os的文件系統所決定的,千萬不能用,solaris,感覺solaris的文件系統實在太慢,雖然非常穩定,而且跑多線程的效果是最好的。linux嘛~~~沒有進行測試,不過感覺在freebsd之下,solaris之上。)

Squid.conf的幾個重要參數的配置說明:

http_port 61.155.143.54:80 #Squid Server偵聽的端口。假設我的主頁的dns server 指到61.155.143.54上的,因此我必須讓squid來偵聽這個IP的這個端口。

cache_mem 32 MB #要額外提供多少內存給squid使用,這裏的額外是指squid會將最常用的一些緩存放到這塊內存中。這個指令也是我看了官方文檔後才理解的。因爲一開始從實際使用情況來看,我這邊設32M的話,用top命令來查看一般會達到100M左右。這點讓我讓我很想不通,呵呵。然後就去看官方文檔,發覺squid是這樣來計算使用多少內存的:squid本身的進程大概10M-20M,然後下面我設的cache目錄的大小是500M的話,那他放在內存裏的hash索引大概需要20M左右,然後再加上這裏設置的cache_mem的值。官方文檔建議你的實際內存大小應該是這個squid所需要總內存的2倍以上。自己量力而爲吧。cache_mem當然是越大越好了。

cache_dir ufs /usr/local/squid-54/var/cache 500 16 256 #設置squid存放cache目錄的位置以及大小。第一個數字500是指目錄的總大小爲500M(默認爲100M),第二個數字16是指第一級目錄爲16個,第三個數字256是指第二級目錄爲256個我個人覺得如果網站訪問量大,並且內容很多的話,可以考慮將默認的100M改大一點,否則會報錯。我就經歷過,錯誤我忘了記錄了(該死!)大致就是說超過Max的極限了,當時查了半天才找到罪魁禍首是這條指令,慚愧~~~。

cache_access_log none
cache_log none

cache_store_log none #我是將這些log記錄都關了, 有需要的可以將它們打開。

acl managerIP src 10.10.10.10
acl ipcanbrows dst 10.10.10.0/24
#acl應該是squid配置裏面最難理解也最需要花時間的地方了。應該說只需要修改很小的一部分就可以了,像這裏我只是在原來的基礎上加了2條記錄,前面一條的意思是我定義了10.10.10.10爲源路徑,另外一條是指目的端是10.10.10.0/24這個網段。而managerIP,ipcanbrows隨便取得名字。具體的規則需要下面的語句來定義。10.10.10.10就是本服務器的內網ip,而apache server的ip就在10.10.10.0/24這個網段裏,不需要用外網ip,一定程度上節約了ip地址。

http_access allow manager managerIP ipcanbrows localhost #加上2個允許就可以了。高深的配置我覺得我也不需要,用戶可以訪問就達到目的了:)

httpd_accel_host virtual #由於我後面的apache server是基於ip來做虛擬主機的,因此這裏需要設置成virtual。

httpd_accel_port 80 #http加速的端口,因爲習慣等原因,還是將後面的apache server監聽80端口。

httpd_accel_uses_host_header on #如果選了virtual的話,這裏必須設置成on。

這裏最多隻列出了5%左右的選項,但是我配置的時候就只是用到了這些,因此,如果做網站加速的話,基本設置就是這些。當然需要更強勁的功能的話就需要好好讀讀squid的配置文件的文檔了。

最後的步驟:

1. 改變var目錄的權限:chown -R nobody var

2. 創建緩存目錄:sbin/squid -z

3. 啓動squid:bin/RunAccel & (這邊我使用squid附帶的啓動腳本來啓動squid,有個好處就是,如果squid的進程死了的話,這個腳本會自動啓動squid,對於運行在線上的服務器來說,這點太重要了。

一些使用體會:

1. squid使用時間長了,速度會變慢,我的建議是每2小時kill掉squid 進程,RunAccel腳本會自動再啓動的它。

2. 寫一腳本,放進crontab中,每天凌晨4點左右把cache目錄清空。

#!/bin/sh
# squid clean swap and restart script by marco lu
SQUID_DIR=/usr/local/squid-54/
PID_FILE=${SQUID_DIR}var/logs/squid.pid
CACHE_DIR=${SQUID_DIR}var/cache
PPID=`ps aux | grep -i squid-54 | grep -v grep|awk '{print $2}'`
kill -9 ${PPID} > /dev/null
kill -9 `cat ${PID_FILE}` > /dev/null
rm -rf $CACHE_DIR/*
${SQUID_DIR}sbin/squid -z > /dev/null
if [ $? -eq 0 ]
then
${SQUID_DIR}bin/RunAccel & > /dev/null
fi

 

水平有限,希望廣大高手指點!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章