#./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-arp-acl –enable-err-language=”Simplify_Chinese” –enable-default-err-languages=”Simplify_Chinese” –enable-poll –enable-linux-netfilter –enable-underscore
#make
#make install
#make install
我个人安装软件都比较喜欢用源码包自己编译,觉得这样知道你自己在做什么,用rpm包好像不知道做什么的就安装好了。下面我们对各个编译参数进行解释,当然你可以通过./configure –help来查看其他的参数,以及各个参数的英文解释。
–prefix=/usr/local/squid :指定软件的安装路径
–enable-gnuregex :由于Squid大量使用字符串处理做各种判断,加入此项能更好的处理。
–enable-async-io=80 :这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高。如果服务器比较糟糕就根据实际情况设了。另外此项还另cache文件支持aufs
–enable-icmp :加入icmp支持
–enable-kill-parent-hack :关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦
–enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。
–disable-ident-lookups :防止系统使用RFC931规定的身份识别方法。
–enable-cahce-digests :加快请求时,检索缓存内容的速度。
–enable-arp-acl :可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
–enable-err-language=”Simplify_Chinese” 和
–enable-default-err-languages=”Simplify_Chinese” :指定出错是显示的错误页面为简体中文
–enable-poll :应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。
–enable-linux-netfilter :可以支持透明代理
–enable-underscore :允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。
–enable-gnuregex :由于Squid大量使用字符串处理做各种判断,加入此项能更好的处理。
–enable-async-io=80 :这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高。如果服务器比较糟糕就根据实际情况设了。另外此项还另cache文件支持aufs
–enable-icmp :加入icmp支持
–enable-kill-parent-hack :关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦
–enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。
–disable-ident-lookups :防止系统使用RFC931规定的身份识别方法。
–enable-cahce-digests :加快请求时,检索缓存内容的速度。
–enable-arp-acl :可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。
–enable-err-language=”Simplify_Chinese” 和
–enable-default-err-languages=”Simplify_Chinese” :指定出错是显示的错误页面为简体中文
–enable-poll :应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。
–enable-linux-netfilter :可以支持透明代理
–enable-underscore :允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。
1. 文件描述符
文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。Unix 操作系统通常给每个进程能打开的文件数量强加一个限制。更甚的是,unix 通常有一个系统级的限制。
因为squid 的工作方式,文件描述符的限制可能会极大的影响性能。当squid 用完所有的文件描述符后,它不能接收用户新的连接。也就是说,用完文件描述符导致拒绝服务。直到一部分当前请求完成,相应的文件和socket 被关闭,squid 不能接收新请求。当squid发现文件描述符短缺时,它会发布警告。
通常情况下,Squid 默认为1024个文件描述,一般情况已经够用。当系同高度繁忙时,肯能会用到4096个或更大。在编译 Squid 前推荐将描述符更改至,系统限制级别的 2~3倍。
在linux系统下使用 ulimit -n 命令查看当前系统定义的文件描述符数量。
shell> ulimit -n
编译修改/usr/include/bits/typesizes.h 头文件内的__FD_SETSIZE 值
#define __FD_SETSIZE 65536
使用ulimit -Hn 命令增加Kernel对文件描述符的限制,不必重启机器
shell> echo 65536 > /proc/sys/fs/file-max
shell> ulimit -Hn 65536
2. 临时端口号
临时端口是TCP/IP 栈分配给出去连接的本地端口。换句话说,当squid 发起一条连接到另一台服务器,内核给本地socket 分配一个端口号。这些本地端口号有特定的范围限制。
临时端口号短缺,对繁忙的Squid Server(每秒数百个链接)影响很大,当端口号不够
用过时链接会进入 TIME_WAIT 状态。在调试 Squid 时需要使用命令
用过时链接会进入 TIME_WAIT 状态。在调试 Squid 时需要使用命令
shell> netstat -an |grep TIME_WAIT
在linux系统上,增加可用的临时端口号(如:1024~44444)
shell> echo “1024 40000″ >/proc/sys/net/ipv4/ip_local_port_range
3.configure Squid
./configure
–prefix=/usr/local/squid
–enable-epoll
–enable-storeio=aufs,diskd,ufs
–enable-async-io
–with-aufs-threads=”N_thread”(多少线程工作)
–enable-removal-policies=”LIST”(2.5为3种排除机制)
–prefix=/usr/local/squid
–enable-epoll
–enable-storeio=aufs,diskd,ufs
–enable-async-io
–with-aufs-threads=”N_thread”(多少线程工作)
–enable-removal-policies=”LIST”(2.5为3种排除机制)
注:一下参数仅为参考,实际情况要根据Squid 版本来操作!
./configure 脚本有大量的不同选项,它们以-开始。当你敲入./configure –help 时,能看到选项的完整列表。一些选项对所有configure 脚本是通用的,还有一些是squid 专有的。下面是你可能用得到的标准选项:
–perfix =PREFIX
如前面描述的一样,这里设置安装目录。安装目录是所有可执行文件,日志,和配置文件的默认目录。在整本书中,$prefix 指你选择的安装目录。
如前面描述的一样,这里设置安装目录。安装目录是所有可执行文件,日志,和配置文件的默认目录。在整本书中,$prefix 指你选择的安装目录。
–localstatedir =DIR
该选项允许你改变var 目录的安装位置。默认是$prefix/var,但也许你想改变它,以使squid 的磁盘缓存和日志文件被存储在别的地方。
该选项允许你改变var 目录的安装位置。默认是$prefix/var,但也许你想改变它,以使squid 的磁盘缓存和日志文件被存储在别的地方。
–sysconfdir =DIR
该选项允许你改变etc 目录的位置。默认的是$prefix/etc。假如你想使用/usr 作为安装位置,你也许该配置–sysconfdir为/etc.
该选项允许你改变etc 目录的位置。默认的是$prefix/etc。假如你想使用/usr 作为安装位置,你也许该配置–sysconfdir为/etc.
3-1. 以下是squid 的专有./configure选项:
–enable-dlmalloc[=LIB]
在一些系统上,内建的内存分配机制(malloc)在使用squid 时表现不尽人意。使用–enable-dlmalloc 选项将squid 源代码包中的dlmalloc 包编译和链接进来。假如你的系统中已安装dlmalloc,你能使用=LIB 参数指定库的路径。请见http://g.oswego.edu/dl/html/malloc.html更多关于dlmalloc 的信息。
在一些系统上,内建的内存分配机制(malloc)在使用squid 时表现不尽人意。使用–enable-dlmalloc 选项将squid 源代码包中的dlmalloc 包编译和链接进来。假如你的系统中已安装dlmalloc,你能使用=LIB 参数指定库的路径。请见http://g.oswego.edu/dl/html/malloc.html更多关于dlmalloc 的信息。
–enable-gnuregex
在访问控制列表和其他配置指令里,squid 使用正则表达式作为匹配机制。GNU 的正则表达式库包含在squid 的源代码包里;它可以在没有内建正则表达式的操作系统中使用。./configure脚本侦察你系统中的正则表达式库,假如必要,它可以激活使用GNU正则表达式。如果因为某些理由,你想强制使用GNU正则表达式,你可以将这个选项加到./configure命令后。
在访问控制列表和其他配置指令里,squid 使用正则表达式作为匹配机制。GNU 的正则表达式库包含在squid 的源代码包里;它可以在没有内建正则表达式的操作系统中使用。./configure脚本侦察你系统中的正则表达式库,假如必要,它可以激活使用GNU正则表达式。如果因为某些理由,你想强制使用GNU正则表达式,你可以将这个选项加到./configure命令后。
–enable-carp
Cache数组路由协议(CARP)用来转发丢失的cache到父cache的数组或cluster。在10.9章有更多关于CARP的细节。
Cache数组路由协议(CARP)用来转发丢失的cache到父cache的数组或cluster。在10.9章有更多关于CARP的细节。
–enable-async-io[=N_THREADS]
同步I/O 是squid 技术之一,用以提升存储性能。aufs 模块使用大量的线程来执行磁盘I/O 操作。该代码仅仅工作在linux 和solaris 系统中。=N_THREADS 参数改变squid 使用的线程数量。aufs 和同步I/O 在8.4 章中被讨论。
请注意–enable-async-io 是打开其他三个./configure 选项的快捷方式,它等同于:
–with-aufs-threads=N_THREADS
–with-pthreads
–enable-storeio=ufs,aufs
–with-pthreads
同步I/O 是squid 技术之一,用以提升存储性能。aufs 模块使用大量的线程来执行磁盘I/O 操作。该代码仅仅工作在linux 和solaris 系统中。=N_THREADS 参数改变squid 使用的线程数量。aufs 和同步I/O 在8.4 章中被讨论。
请注意–enable-async-io 是打开其他三个./configure 选项的快捷方式,它等同于:
–with-aufs-threads=N_THREADS
–with-pthreads
–enable-storeio=ufs,aufs
–with-pthreads
该选项导致编译过程链接到你系统中的P 线程库。aufs 存储模块是squid 中唯一需要使用线程的部分。通常来说,如果你使用–enable-saync-io 选项,那么不必再单独指定该选项,因为它被自动激活了。
–enable-storeio=LIST
Squid 支持大量的不同存储模块。通过使用该选项,你告诉squid 编译时使用哪个模块。在squid-2.5 中,支持ufs,aufs,diskd,和null 模块。通过查询src/fs 中的目录,你能得到一个模块列表。LIST 是一个以逗号分隔的模块列表,例如:
% ./configure –enable-storeio=afus,diskd,ufs
Squid 支持大量的不同存储模块。通过使用该选项,你告诉squid 编译时使用哪个模块。在squid-2.5 中,支持ufs,aufs,diskd,和null 模块。通过查询src/fs 中的目录,你能得到一个模块列表。LIST 是一个以逗号分隔的模块列表,例如:
% ./configure –enable-storeio=afus,diskd,ufs
ufs 模块是默认的,看起来问题最少。不幸的是,它性能有限。其他模块可能在某些操作系统中不必编译。关于squid 存储模块的完整描述,请见第8章。
–with-aufs-threads=N_THREADS
指定aufs 存储机制使用的线程数量(见8.4章)。squid 默认根据缓存目录的数量,自动计算需要使用多少线程。
指定aufs 存储机制使用的线程数量(见8.4章)。squid 默认根据缓存目录的数量,自动计算需要使用多少线程。
–enable-heap-replacement
该选项不再使用,但被保留用于向后兼容性。你该使用–enable-removal-policies 来代替。
该选项不再使用,但被保留用于向后兼容性。你该使用–enable-removal-policies 来代替。
–enable-removal-policies=LIST
排除策略是squid 需要腾出空间给新的cache目标时,用以排除旧目标的机制。squid-2.5支持3个排除策略:最少近期使用(LRU),贪婪对偶大小(GDS),最少经常使用(LFU)。
排除策略是squid 需要腾出空间给新的cache目标时,用以排除旧目标的机制。squid-2.5支持3个排除策略:最少近期使用(LRU),贪婪对偶大小(GDS),最少经常使用(LFU)。
然而,因为一些理由,./configure 选项使指定的替代策略和需要执行它们的基本数据结构之间的差别模糊化。LRU是默认的,它以双链表数据结构执行。GDS和LFU使用堆栈的数据结构。
为了使用GDS 或LFU 策略,你指定:
% ./configure –enable-removal-policies=heap
% ./configure –enable-removal-policies=heap
然后你在squid 的配置文件里选择使用GDS或LFU。假如你想重新使用LRU,那么指定:
% ./configure –enable-removal-policies=heap,lru
更多的关于替换策略的细节请见7.5 章。
% ./configure –enable-removal-policies=heap,lru
更多的关于替换策略的细节请见7.5 章。
–enable-icmp
如在10.5 章中描述的一样,squid 能利用ICMP消息来确定回环时间尺寸,非常象ping程序。你能使用该选项来激活这些功能。
如在10.5 章中描述的一样,squid 能利用ICMP消息来确定回环时间尺寸,非常象ping程序。你能使用该选项来激活这些功能。
–enable-delay-pools
延时池是squid 用于传输形状或带宽限制的技术。该池由大量的客户端IP 地址组成。当来自这些客户端的请求处于cache 丢失状态,他们的响应可能被人工延迟。关于延时池的更多细节请见附录C。
延时池是squid 用于传输形状或带宽限制的技术。该池由大量的客户端IP 地址组成。当来自这些客户端的请求处于cache 丢失状态,他们的响应可能被人工延迟。关于延时池的更多细节请见附录C。
–enable-useragent-log
该选项激活来自客户请求的HTTP 用户代理头的日志。更多细节请见13.5 章。
该选项激活来自客户请求的HTTP 用户代理头的日志。更多细节请见13.5 章。
–enable-referer-log
该选项激活来自客户请求的HTTP referer 日志。更多细节请见13.4 章。
该选项激活来自客户请求的HTTP referer 日志。更多细节请见13.4 章。
–disable-wccp
Web cache 协调协议(WCCP)是CISCO 的专有协议,用于阻止或分发HTTP 请求到一个或多个caches。WCCP默认被激活,假如你愿意,可以使用该选项来禁止该功能。
Web cache 协调协议(WCCP)是CISCO 的专有协议,用于阻止或分发HTTP 请求到一个或多个caches。WCCP默认被激活,假如你愿意,可以使用该选项来禁止该功能。
本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/225209,如需转载请自行联系原作者