开源中文网

您的位置: 首页 > Linux应用 > squid > 正文

Squid Proxy server 架站简易说明

来源:  作者:

本文件最近修正修改部份导引 ...... (详细说明参考文件内容) 

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 简算法,请参考 ) 

( 相关设定尚有未研究妥当的,请自行研究,有新发现,请记得要告诉我!! ) 

squid.conf 设定档,各版修正改变之设定 

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.本增进效能之建议作法,笔者并没实际以程式去测试,但以使用者反应,效率确有明显增进,仅供参考。

Tags:Squid Proxy server
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明