squid完全攻略(一)squid优化后详细安装步骤

Squid工作原理
Squid是Linux下一个缓存Internet数据的代理服务器软件,它接收用户的下载申请并自动处理所下载的数据。即当一个用户下载 www.idcshare的页面,他请求squid为他取得这个页面,suqid会连接到申请 www.idcshare的网站并请求该主页,接着把主页传给用户并自己保留一份.当下一次有其他用户请求同样页面时,squid会从磁盘中读到保存那份,这样数据就会迅速传输到用户的机器上.
 
Squid支持以下协议
1) 客户端协议:HTTP .FTP.Gopher.WAIS.SSL
2) 缓存及管理协议:ICP(Internet Cache协议). HTCP(超文本缓冲协议).SNNP. Cache Digests
 
运行流程图:

1) Client端向Server端发送一个资料需求封包;
2) Server端接收之后,先比对这个封包的『来源』与预计要前往的『目标』网站是否为可接受?如果来源与目标都是合法的,或者说,来源与目标网站我们的Proxy都能帮忙取得资料时,那么Server端会预计开始替Client取得资料。
3) Server首先会到自己的硬碟里面,也就是所谓的cache 查看一下有没有Client端所需要的资料,如果有的话,那就将资料直接送到Client端而不经过向Internet要求资料的程序;
4) 将数据传回给客户端使用
5)在经过1, 2, 3查寻知道cache没有资料,或者资料过期之后, Proxy会向Internet上面的目标网站要求资料;
6)在将资料取回之后, proxy会先将取得的资料『储存一份到cache当中』;
7)最后才将资料传回给Client端使用。
 
代理服务器优点与类型
优点:
1)       通过缓存增加访问速度
2)       提供用私有ip访问internet的方法
3)       提高网络的安全性
4)       方便对用户的管理
类型:
1) 标准代理服务器

2) 透明代理服务器

3) 反向代理服务器

安装前期准备工作
1)源代码编译优化
一般情况下,优化参数都是通过 export 命令设定 CFLAGS CXXFLAGS ,然后 configure 的时候会自动读入, make 的时候会自动使用所选的优化参数。通过添加优化参数,让程序针对某个 CPU 型号和某个系统进行最大优化,减少文件大小、 CPU 使用率、内存使用率。优化后的程序,将不再具有跨系统跨平台的能力。
首先查看 CPU 信息,然后根据 CPU 信息到 http://gentoo-wiki.com/Safe_Cflags去获取CPU优化参数
如下图:
 
[root@server soft]#  cat /proc/cpuinfo |more  
processor        : 0
vendor_id        : GenuineIntel
cpu family       : 6
model            : 23
model name       : Intel(R) Xeon(R) CPU           E5420 @ 2.50GHz
stepping         : 10
cpu MHz          : 2493.978
cache size       : 6144 KB
physical id      : 0
siblings         : 4
core id          : 0
cpu cores        : 4
apicid           : 0
fdiv_bug         : no
hlt_bug          : no
f00f_bug         : no
coma_bug         : no
fpu              : yes
fpu_exception    : yes
cpuid level      : 13
wp               : yes
flags            : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush d
ts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr
lahf_lm
bogomips         : 4987.95
 
由于服务器model name 是Intel(R) Xeon(R) CPU,我选择如下图:
配置:
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=Prescott -O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
env

查看设置环境变量是否生效
红色标记,说明生效了.
 
3)修改描述符参数值
文件描述符用来限制一个程序能同时打开的文件数目,默认是 1024 。也就是说,如果不修改文件描述符,那么一个程序只能同时打开 1024 个文件,而 Squid 会同时打开成千上万个文件,所以远远是不够的,为了保证最高的效率和响应速度,要更改文件描述符的大小 .
两种情况: a. 用户每次访问 squid squid 会按照需要打开文件,然后读取文件内容再返回给用户。
b.squid 预先打开访问频率高的文件,用户访问 squid squid 直接把内容返回给用户。相对来说,后面的方法可以对用户的请求进行更加快的反应。
首先修改以下两个文件。
#define __FD_SETSIZE 1024
1024 改为 65536 ,然后保存,这是 Linux 能接受的最大数值。

刚才编辑的这两个文件是 C/C++ 程序里面的头文件,编译 squid 的时候会被自动引用。除了这两个文件以外,我们还需要对当前环境进行设置。也就是你用 ssh 登录到系统时的一些设定。每个登录进程都可以进行单独的设置, 当关闭目前登录回话,环境变量的设置就失效了 .
ulimit 用来设置当前环境的一些资源限制。这个命令是对环境进行设置,所以退出当前登录进程后命令将会失效。
我们输入下面的命令
#ulimit -Hs 65536
#ulimit -n 65536
也可以永久修改这些限制,开机自动生效,配置如下:
vi /etc/security/limits.conf,添加以下内容
*                soft   nofile          65536 
*                hard   nofile          65536
H 参数是硬性限制, s 是堆栈上限, n 是文件描述符上限。
注释:
ulimit 参数介绍:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-v size:设置虚拟内存的最大值.单位:kbytes
安装与配置
安装
 tar -zxvf squid-3.0.STABLE24.tar.gz
cd squid-3.0.STABLE24
./configure --prefix=/usr/local/squid\--enable-gnuregex\--enable-icmp\--enable-linux-netfilter\--enable-default-err-language="Simplify_Chinese"\--enable-kill-parent-hack\--enable-cache-digests\--enable-dlmalloc\--enable-poll\--enable-async-io=240\--enable-delay-pools\--with-filedescriptors=65536\--enable-snmp\--enable-arp-acl\--mandir=/usr/share/man/--with-large-files
 
注释
可以用命令查看
 ./configure --help
--enable-gnuregex
在访问控制列表和其他配置指令里,squid使用正则表达式作为匹配机制。GNU的正则表达式库包含在squid的源代码包里;它可以在没有内建正则表达式的操作系统中使用。./configure脚本侦察你系统中的正则表达式库,假如必要,它可以激活使用GNU正则表达式。如果因为某些理由,你想强制使用GNU正则表达式,比如在proxy未来的规划当中。可能利用到正则表示法的方式来抵挡一些恶意的网站,你可以将这个选项加到./configure命令后.
--enable-icmp
squid能利用ICMP消息来确定回环时间尺寸,非常象ping程序。你能使用该选项来激活这些功能。
--enable-linux-netfilter
Netfilter是linux 2.4系列内核的包过滤器名字。假如你想在linux2.4或以后的版本中使用HTTP拦截功能,那么激活该选项。
--enable-default-err-language=lang
该选项设置error_directory指令的默认值。例如,假如你想使用荷兰语,你能这样指定:
% ./configure --enable-default-err-language=Dutch
你也能在squid.conf里指定error_directory指令,在附录A中有描述。假如你忽略该选项,英语是默认错误语言。
--enable-kill-parent-hack
在我们关掉squid的时候,连同parent process 一起关掉
--enable-cache-digests
Cache消化是ICP的另一个替代,但有着截然不同的特性
--enable-dlmalloc[=LIB]
在一些系统上,内建的内存分配机制(malloc)在使用squid时表现不尽人意。使用--enable-dlmalloc选项将squid源代码包中的dlmalloc包编译和链接进来。假如你的系统中已安装dlmalloc,你能使用=LIB参数指定库的路径。
--enable-poll
unix提供两个相似的函数用以在I/O事件里扫描开放文件描述符:select()和poll()../configure脚本通常能非常好的计算出何时使用poll()来代替select().假如你想强制使用poll(),那么指定该选项。
 
--enable-async-io[=N_THREADS]
异步I/O是squid技术之一,用以提升存储性能。aufs模块使用大量的线程来执行磁盘I/O操作。该代码仅仅工作在linux和solaris系统中。=N_THREADS参数改变squid使用的线程数量。如果网站的服务器配置很高,可以尝试将这个数字改为160以上。如果是小网站的话,可以考虑降低到40左右.
请注意--enable-async-io是打开其他三个./configure选项的快捷方式,它等同于:
--with-aufs-threads=N_THREADS
--with-pthreads
--enable-storeio=ufs,aufs
 
--enable-delay-pools
延时池是squid用于传输形状或带宽限制的技术。该池由大量的客户端IP地址组成。当来自这些客户端的请求处于cache丢失状态,他们的响应可能被人工
 --with-filedescriptors=65536
支持最大文件描述符
--enable-snmp
简单网络管理协议(SNMP)是监视网络设备和服务器的流行方法。该选项导致编译过程去编译所有的SNMP相关的代码,包括一个裁切版本的CMU SNMP库。
--enable-arp-acl
允许基于MAC地址的存取过滤
--mandir=/usr/share/man
指定man的安装目录
--with-large-files
让log支持大于2G
 
make; make install
make[3]: Leaving directory `/root/soft/squid-3.0.STABLE24/tools'
make[2]: Leaving directory `/root/soft/squid-3.0.STABLE24/tools'
make[1]: Leaving directory `/root/soft/squid-3.0.STABLE24/tools'
make[1]: Entering directory `/root/soft/squid-3.0.STABLE24'
Build Successful.
make[2]: Entering directory `/root/soft/squid-3.0.STABLE24'
make[2]: Nothing to be done for `install-exec-am'. ==================说明安装成功
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/root/soft/squid-3.0.STABLE24'
make[1]: Leaving directory `/root/soft/squid-3.0.STABLE24'
[root@server squid-3.0.STABLE24]#        
ll /usr/local/squid--enable-gnuregex/
总计  24
drwxr-xr-x 2 root root 4096 03-04 23:35 bin
drwxr-xr-x 2 root root 4096 03-04 23:35 etc
drwxr-xr-x 2 root root 4096 03-04 23:35 libexec
drwxr-xr-x 2 root root 4096 03-04 23:35 sbin
drwxr-xr-x 5 root root 4096 03-04 23:35 share
drwxr-xr-x 3 root root 4096 03-04 23:35 var
bin/ :放置主要的squid执行scripts的目录,重要的是RunCache那个档案;
etc/ :几乎所有的squid设定档都在这里;
libexec/ :一些函式库;
sbin/ :重要的就是那个squid的执行档!
share/ :一些错误讯息代码表示档案,以及一些小图示放置的目录;
var/ :预设是放置log file的,不过我不喜欢放在这里,这点等一下我们会修改的!
第一次运行 squid 时,要先设置 /usr/local/squid/var 权限,还有在 /usr/local/squid/etc/squid.conf 添加主机, visible_hostnam viong  并制定 http_port  端口号 . 这里预设个 80
 
# chown -R nobody:nobody /usr/local/squid/var
 
 /usr/local/squid/sbin/squid –zD
首次运行 squid 需要初始化 cache ,由于 squid 要验证其 DNS 可用才能启动,目前都没配置,所以我先禁用初始化 DNS 测试,先让 squid 启动
 netstat -ntpl |grep 80
tcp         0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN    
[root@viong soft]#       
 sh squid.sh start   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值