安装squid:
复制代码 代码如下:
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/squid-2.5.STABLE2.tar.gz
# ....(略)....会产生一个 squid-2.5.STABLE2 的目录
[root@test src]# cd squid-2.5.STABLE2
1. 开始设定参数:
[root@test squid-2.5.STABLE2]# export CFLAGES='-O2 -mcpu=i586'
# 这是一个额外的参数啦!因为我们使用的是
linux ,而我们的 GNU gcc
# 有针对每种不同的 CPU 来进行套件的最佳化编译!所以啦,就加入我们的
# CPU 型号吧!因为我的 CPU 是 P-166 ,反正是个小案例啦!所以才会是 i586,
# 您的 CPU 只要超过赛扬等级以上,就会是 i686 啰!此外,除了
# i386, i486, i586, i686 还有 pentium, pentium3, pentium4, athlon,
# athlon-tbird, athlon-4, athlon-x, athlon-mp, k6, k6-2, k6-3 等等!
# 如果不确定您的 CPU 那么就用 ix86 之类的方式来命名吧!不过,即使没有
# 写入这个参数也无所谓啦!至于那个 O2 是最佳化参数啦!
复制代码 代码如下:
[root@test squid-2.5.STABLE2]# ./configure --prefix=/usr/local/squid
> --enable-gnuregex --enable-async-io=80 --enable-icmp
> --enable-kill-parent-hack --enable-snmp
> --disable-ident-lookups --enable-cahce-digests
> --enable-err-language="Traditional_Chinese"
> --enable-poll --enable-linux-netfilter
# 这个就有趣啦!因为实在有相当多的参数可以使用,你可以使用
# ./configure --help 来察看可以使用的许多参数啊!稍微解释一下各个设定值:
--prefix=/usr/local/squid:未来程序编译完成后放置的安装目录;
--enable-gnuregex:使用 GNU 提供的正规表示法的原则来进行编译,请注意,因为在 Proxy 未来的规划当中,很可能会动用到正规表示法的方式来抵挡一些恶意的网站,所以这里应该要加入这个参数的!
--enable-async-io=80:这个项目主要在控制一些输出入的组件,使用这个项目可以让您的 Proxy 效能提升很多喔,因为是异步输出 (async) 的模式啊!
后面接的数值是可以变动的,如果您的网站配备很高档,可以尝试将这个数字提升到 160 以上,如果是小网站的话,那么可以考虑将他降低至 40 左右。
--enable-icmp:要不要支援 ICMP 啊!当然是要的!
--enbale-kill-parent-hack:在我关掉 squid 的时候,要不要连同parent process 一起关掉,当然也是要的啦!
--enable-snmp:这个与制图的 MRTG 比较有关啦!如果没有用到的话, 可以考虑将这个项目拿掉也没有关系!
--enable-cache-digests:这个项目很重要的啦,我们在底下再进行说明。
--enable-err-language="Traditional_Chinese":不需要写了吧?只要有任何的错误讯息,网页上面显示的语系会是中文喔!
--enable-poll :可以提升效能;
--enable-linux-netfilter:可以增加通透式 Proxy 的设定!后面再提啦!
2. 开始编译以及Install
复制代码 代码如下:
[root@test root]# make && make install
3. 开始设定其它的相关参数
复制代码 代码如下:
[root@test root]# vi /etc/man.config
# 在这个档案当中新加入一行:
MANPATH /usr/local/squid/man # 与 Squid 有关的 man page
# 可以让 squid 提供的说明文件让 man 指令可以查到!
squid的结构
刚刚安装的目录其实是在 /usr/local/squid 这个目录下,而这个目录又分为几个主要的子目录,分别为:
bin/ :放置主要的 squid 执行 scripts 的目录,重要的是 RunCache 那个档案;
etc/ :几乎所有的 squid 设定档都在这里;
libexec/ :一些函式库;
man/ :就是一些在线文件查寻档啦!
sbin/ :重要的就是那个 squid 的执行档!
share/ :一些错误讯息代码表示档案,以及一些小图标放置的目录;
var/ :预设是放置 log file 的,不过我不喜欢放在这里,这点等一下我们会修改的!
那么主要的设定档有哪些呢?其实可以说只有两个啦:
/usr/local/squid/etc/squid.conf :这个是主要的设定档,所有的 squid 所需要的设定都是放置在这个档案当中的!鸟哥底下提到的种种设定方法几乎都是这个档案里面的说明喔!所以,如果您英文不错,那么就直接看一下这个档案就知道如何设定 squid 啦!
/usr/local/squid/etc/mime.conf :这个档案则是在设定 squid 所支持的 Internet 上面的档案格式,就是所谓的 mime 格式啰!一般来说,这个档案的预设内容已经能够符合我们的需求了,所以不需要更动他,除非您很清楚的知道您所需要额外支持的 mime 档案格式。
而执行档其实只有一个,那就是 squid 啦!不过, Squid 这个套件额外的提供了两个可执行的 scripts 来帮助大家执行 squid ,那就是在 bin/ 里面的 RunAccel 与 RunCache:
/usr/local/squid/sbin/squid :就是我们说的 squid 的执行档啰!要知道这个指令的参数吗?就使用『 ./squid --help 』就能知道有什么参数啦!
/usr/local/squid/bin/RunCache :这个是主要的执行 squid 的一支简单的 script ,主要是利用 squid.conf 设定档案的内容来启用 squid 喔!
/usr/local/squid/bin/RunAccel :如果您的 WWW 服务也想要透过 Squid 来进行『加速』的话,那就可以使用 RunAccel 来取代 RunCache 了,不过,我通常还是使用 RunCache而已!
[root@test root]# cd /usr/local/squid/etc
[root@test root]# vi squid.conf
# 1. 关于网络的参数设定部分
# 在这个部分当中,最重要的就是启用 squid 这个 daemon 的 port 了!
# 在预设的情况下,公认的标准 proxy port 为 3128 ,至于被查询封包
# 观察的则是 3130 这个 port,这里我们分别启用这两个 port !如果您的
# Proxy 还有帮人家代理 https 这个由 SSL 协议启用的 port ,那么还需要
# 启动 https_port ,但是我们这里不谈论 SSL 啦!太危险了~
http_port 3128
icp_port 3130
# 2. 设定快取目录 ( Cache dir ) 的大小与记录档案所在的目录
# 这个设定是重要到爆的地方,一定得设定正确才行啊!上面我们不是
# 提过关于硬盘与目录吗?好了,现在这样假设:我有两块 partition ,
# 这两块 partition 分别挂载在 /usr/local/squid/var/cache1
# 以及 /usr/local/squid/var/cache2 这两个区域,此外,两块
# partition 一块为 1GB (cache1) 另一块为 2 GB (cache2) ,则设定为:
# <cache_dir> <aufs|ufs> <目录所在> <MBytes大小> <dir1> <dir2>
# 那个 aufs 只有在编译的时候加入 --enable-async-io 那个项目才有支持,
# 至于目录所在地与所占用的磁盘大小则请视您的主机情况而定,
# 而后面 dir1, dir2 则是两个次目录的大小,通常 16 256 或 64 64 皆可,
# 一般来说,数字最好是 16 的倍数,据说效能会比较好啦!
# 注意1:下面两行需要『视您的主机环境而定!』不要照抄!
# 注意2:在底下的例子中,我的两块 partition 已经
mount 上该目录了!
# 就是说,底下的两个目录是『已经存在的!』
复制代码 代码如下:
cache_dir aufs /usr/local/squid/var/cache1 1000 16 256
cache_dir aufs /usr/local/squid/var/cache2 2000 16 256
# 底下则是关于记录文件的放置目录与文件名!
cache_access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
pid_filename /usr/local/squid/var/logs/squid.pid
# 3. 关闭认证机制
复制代码 代码如下:
# 不晓得为什么,这一版的 squid 会自动的加入认证机制,请找到底下
# 几行,将他 mark 起来!
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
# 4. 提供 squid 服务
复制代码 代码如下:
# 预设的情况下,仅有本机可以使用 squid ,我们先将所有的权限开放
# 然后在一个一个的关闭啰!先找到底下这一行:
http_access deny all
# 将他改成
http_access allow all
# 5. 设定 squid 的拥有者与系统管理员信箱:
复制代码 代码如下:
# 就是刚刚我们上一小节提到的 squid 的拥有者,请注意,这个
# user 与 group 必需要在 /etc/passwd 及 /etc/group 里面存在方可成功!
# 我这里以权限最小的 nobody, nogroup 来做为范例,您也可以自行设定!
# 另外,cache_mgr 则是 squid 管理员的信箱,当 squid 发生问题时,
# 屏幕上就会出现这个信箱给使用者联系管理员之用!
cache_effective_user nobody
cache_effective_group nogroup # 您也可以改成 nobody !
cache_mgr youraccount@your.e.mail
# 6. 变更目录权限:
复制代码 代码如下:
# 在预设的情况下,我们主要的纪录信息都写入 /usr/local/squid/var 里面,
# 所以这个时候需要将这个目录的权限改变成为 nobody 与 nogroup 所有!
# 当然啰,如果您的 cache_dir 不在这个目录当中,那么还需要额外自行建立,
# 例如我的 cache_dir 万一是在 /proxy1 与 /proxy2 时,那么我就必需要:
# chown -R nobody:nogroup /proxy1
# chown -R nobody:nogroup /proxy2
# 关于权限的问题是很重要的!请不要忘记了!
[root@test root]# chown -R nobody:nogroup /usr/local/squid/var
# 7. 开始启动 squid:
复制代码 代码如下:
# 启动 squid 来试看看吧!不过,首先我们必需要建立快取目录的格式
# 才行,此外,由于我们想要以 nobody 来启动 squid ,所以你需要这样:
[root@test root]# /usr/local/squid/sbin/squid -z # 建立 cache_dir
[root@test root]# su nobody -c "/usr/local/squid/bin/RunCache &"
# 8. 查看是否真的启动了 squid 了?
复制代码 代码如下:
[root@test root]# netstat -tln | grep 3128
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN
# 9. 重新读取设定档 squid.conf 的方法:
[root@test root]# /usr/local/squid/sbin/squid -k reconfigure
紧来测试看看能不能使用 squid 啰!启动 IE 后,按下:
『工具』->
『Internet 选项』->
『联机』->
『局域网络设定』中,点选
『使用 Proxy
服务器』
并在网址列输入你的主机名称 ( 或者是 IP 均可 ),然后按确定离开!然后在 IE 中按按看网页的设定有没有成功,如果可以读到网页的话,表示 squid 可以正常的被使用了!
cache_dir 这个参数的意义与存取格式的类型:
这个设定项目就是限制暂存区大小的地方啦,格式为:
复制代码 代码如下:
cache_dir ufs /usr/local/squid/var/cache 100 16 256
上面的说明是:暂存区目录为 /usr/local/squid/var/cache ,而暂存空间大小为 100M , 在这个暂存目录下有 16 个目录,而每个目录中又有 256 个目录 ( 你可以实际进入/usr/local/squid/cache 当中去看看 ) 。如果你要改变暂存盘目录及这个目录的大小时,可以在这里修改!不建议修改 16, 256 这两个数值。另外,通常,如果是我们一般小型的区网 ( 不超过10个人 ) ,那设定个 500 MB作为 cache 应该够了,如果你的硬盘够大,设定成 1000 MB 以上更好,当然,与第一个注意事项相符的,需要与您的实际硬盘大小以及 Partition 放置的目录互相配合才行。修改过这个指令后,要再重新启动 squid 之前,请先使用下面的指令来使你的目录可以进行存取的动作,否则你的 squid 是不会工作的!例如你将上面的参数修改成:
复制代码 代码如下:
cache_dir ufs /usr/local/squid/var/cache 1000 16 256
然后再进行下面的指令:
复制代码 代码如下:
rm -rf /usr/local/squid/var/cache
mkdir /usr/local/squid/var/cache
chown nobody:nogroup /usr/local/squid/var/cache
/usr/local/squid/sbin/squid -z
这样你的squid暂存目录就可以使用啰!另外,如果你在编译 (configure 过程中) 的时候有将 --enable-async-io 这一个参数加进来的话,将可以增加 aufs 这一个数据存取的格式!这个存取的格式可以将你的硬盘发挥到最极限的速度喔!虽然在 squid.conf 档案中有提及,这个 type 可能会有 bug 存在,不过,据鸟哥的使用结果,发现,没啥大问题!好用的很!所以,你可以将上面的咚咚改成下面的样子:
复制代码 代码如下:
cache_dir aufs /usr/local/squid/var/cache 1000 16 256
这样就算已经完成了一个『很阳春』的小型 proxy 了!为什么说很阳春呢?这是因为这个 Proxy 并没有上层 Proxy 喂数据,所以 Client 端的任何要求这个 Proxy 都需要『自己去捉』啊!哇!那么这个 Proxy 还真累啊!没错啊,所以底下我们要再来谈一谈其它几个增加 proxy 效能的方法,好让大家的 Proxy Server 可以真的加快您浏览的速度啊!
# 与内存有关的设定:因为我的系统很小,所以只给 8 MB!如果您的物理内存
# 很大的情况下,例如 512 MB,可以考虑加大到 64 或 128 MB。
cache_mem 8 MB
# 与磁盘容量有关的设定(注:下列的 90 与 95 是百分比 )
# 如果您的 cache_dir 所在磁盘很大时,可以考虑将 4096 改成 32768 KB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
# 与内存保存数据有关的设定
maximum_object_size_in_memory 8 KB
# 我们经由 dns 正反解以及 IP 的结果,记录在暂存区啊!
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024