Squid 中文权威指南


第一章是Squid 的简介性描述,与技术关联不多,我不准备多翻译。 1.1 Web 缓存 这节里需要明白3个概念: cache 命中 - 在squid 每次从它的缓存里满足HTTP 请求时发生。cache 命中率,是所有HTTP 请求中命中的比例。Web 缓存典型的cache 命中率在30%到60%之间。另一个相似的度量单位叫做字节命中率,描绘了cache 提供服务的数据容量(字节数)。 cache丢失 - 在squid 不能从它的缓存里满足HTTP 请求时发生。cache 丢失的理由有很多种。最明显的,当squid 第一次接受到对特殊资源的请求时,就是一个cache 丢失。类似的情况是,squid 会清除缓存以释放空间给新对象。另外的可能是资源不可到达。原始服务器会指示cache 怎样处理响应。例如,它会提示数据不能被缓存,或在有限的时间内才被重复使用,等等。 cache确认 - 保证squid 不对用户返回过时数据。在重复使用缓存对象时,squid 经常从原始服务器确认它。假如服务器指示squid 的拷贝仍然有效,数据就发送出去。否则,squid升级它的缓存拷贝,并且转发给客户。 1.2 Squid 的简明历史 对本节感兴趣的读者请阅读英文原文档。 1.3 硬件和操作系统要求 Squid 运行在所有流行的Unix 系统上,也可以在Microsoft Windows 上运行。尽管squid的Windows 支持在不断改进,但也许在Unix 上容易一些。假如你有一个喜欢的操作系统,我建议你使用那个。否则,假如你找人推荐,我很喜欢FreeBSD。 squid 对硬件要求不算高。内存是最重要的资源。内存短缺会严重影响性能。磁盘空间也是另一个重要因素。更多的磁盘空间意味着更多的缓存目标和更高的命中率。快速的磁盘和驱动器也是有利的。如果你舍得花钱,SCSI 磁盘比ATA 的执行性能好。当然快速的CPU也是好的,但它并不是提高性能的关键因素。 因为squid 对每个缓存响应使用少数内存,因此在磁盘空间和内存要求之间有一定联系。基本规则是,每G 磁盘空间需要32M内存。这样,512M 内存的系统,能支持16G 的磁盘缓存。你的情况当然会不同。内存需求依赖于如下事实:缓存目标大小,CPU 体系(32位或64 位),同时在线的用户数量,和你使用的特殊功能。 人们经常问如此问题:“我的网络有X 个用户,需要配备什么样的硬件给squid?”因为许多理由,这样的问题好难回答。特别的,很难说X 个用户将产生多少流量。我告诉人们去建立一个有足够磁盘空间,可存储3-7 天web 流量数据的系统。例如,假如你的用户每天8 小时耗费1M 流量(仅仅HTTP 和FTP 传输),那就是每天大约3.5G。所以,我可以说,每兆web 传输你需要10 到25G 的磁盘空间。 1.4 squid 是开源的 Squid 是自由软件和合作项目。假如你觉得squid 有用,请考虑以下面一种或几种方法来回报该项目: 1.参与squid 用户讨论列表,回答问题和帮助新用户。 2.测试新版本,报告bug 或其他问题。 3.致力于在线文档和FAQ。假如你发现错误,将它报告给维护者。 4.将你的局部修改提交给开发者。 5.对开发者提供财政支持。 6.告诉开发者你想要的新功能。 7.告诉你的朋友和同学,Squid 非常Cool。 Squid 是在GNU 公用许可证(GPL)下发行的自由软件。关于GPL 的更多信息请见:http://www.gnu.org/licenses/gpl-faq.html 1.5 Squid 的Web 主页 Squid的主页在http://www.squid-cache.org 你自己阅读该站点吧。 1.6 获取帮助 1.6.1 FAQ Squid的FAQ文档在http://www.squid-cache.org/Doc/FAQ/FAQ.html ,是对新用户的好信息资源。 1.6.2 邮件列表 Squid 有三个邮件列表可用。邮件列表主页在:http://www.squid-cache.org/mailing-lists.html 1.6.2.1 Squid 用户 订阅该邮件列表,发邮件到 squid-users-subscribe@squid-cache.org 1.6.2.2 Squid 公告 订阅该邮件列表,发邮件到 squid-announce-subscribe@squid-cache.org 1.6.2.3 Squid 开发 加入该邮件列表有所限制。它的内容发布在http://www.squid-cache.org/mail-archive/squid-dev/ 1.6.3 职业支持 即付费的支持 - 职业支持服务提供商列表,请见http://www.squid-cache.org/Support/services.html 1.7 启动Squid 请按下面的章节一步一步来吧。 第2章 获取Squid 2.1 版本和发布 Squid 开发者定期发布源代码。每一个发布版有一个版本号,例如2.5.STABLE4。版本号的第三部分以STABLE 或DEVEL(短期开发版本)开头。 也许你能猜到,DEVEL 版本倾向于拥有更新,更试验性的功能。但也许它们有更多的bugs。无经验的用户不应该运行DEVEL 版本。假如你选择运行一个DEVEL 版本,并且遇到了问题,请将问题报告给Squid 维护者。 在一段时间的开发期后,Squid 版本号变为STABLE。该版本适合于普通用户。当然,即使稳定版可能也有一些bugs。高的稳定版本(例如STABLE3,STABLE4)应该bugs 更少。假如你特别关心稳定性,你应该使用这些最近发布版本中的一个。 2.2 使用源代 为什么你不能copy 一份预编译的二进制代码到你的系统中,并且期望它运行良好呢?主要理由是squid 的代码需要知道特定操作系统的参数。实际上,最重要的参数是打开文件描述符的最大数量。Squid 的./configure 脚本在编译之前侦察这些值。假如你获取一个已编译的使用某个参数值的squid 到另一个使用不同参数值的系统中,可能会遇到问题。 另一个理由是许多squid 功能在编译时必须被激活。假如你获取一个别人已编译的squid文件,它不包含你所需要的功能,那么你又得再编译一遍。最后,共享库的问题可能使得在系统之间共享可执行文件困难。共享库在运行时被装载,如已知的动态链接一样。squid 在编译时会侦察你系统中的C 库的某些功能(例如它们是否被提供,是否能运行等)。尽管库功能不常改变,但两个不同的系统的C 库之间可能有明显的区别。如果两个系统差别太大,就会对Squid 造成问题。 获取squid 的源代码是非常容易的。请访问squid 的首页:http://www.squid-cache.org。首页有?..那么请访问squid 的众多镜像站点中的一个。镜像站点通常以"wwwN.CC.squid-cache.org"命名,N 是数字,CC 是国家的两位代码。例如,www1.au.squid-cache.org 是澳大利亚的镜像站点,在主页上有链接指向不同的镜像站点。 每一个squid 发布版分支(例如Squid-2.5)有它自己的HTML 页面。该页面有链接指向源代码,以及与其他发布版的差别。假如你从一个发布版升级到下一个,你应该下载这些差别文件,并且打上补丁,请见3.7 章节中的描述。每个版本的发布页描述新功能和重要的改进,也有链接指向已经修正的bugs。 如果web 访问不可行,你能从ftp://ftp.squid-cache.org 的FTP 服务器获取源代码,或者使用其他FTP 镜像。要获取当前版本,请访问pub/squid-2/DEVEL 或 pub/squid-2/STABLE目录。FTP 镜像也在许多国家有,你能用同样的国家代码去猜测一些FTP 镜像站点,例如ftp1.uk.squid-cache.org。 当前的Squid 发布版本大约1M 大小。在下载完压缩的打包文件后,你能继续第3章。 2.3 预编译的二进制文件 一些Unix 发布版可能预包含了Squid 的编译版。对Linux 系统,你可以找到Squid 的RPM 包。通常squid RPM 包含在你所买的Linux 光碟里。Freebsd/Netbsd/OpenBSD 也在它们的ports 或者packages 里面包含了squid。 虽然RPM 或者预编译的packages 能节省你一些时间,但它们也有一些弊端。就像我提过的一样,在你开始编译squid 之前,某些功能必须被激活或禁止。而你安装的预编译的包可能不包含你想要的特定功能。而且,squid 的./configure 脚本侦察你系统中的特定参数,这些在你系统中的参数可能与编译它的机器的参数不同。 最后,假如你想对squid 打补丁,你必须等某个人编译更新的RPM 或packages,或者你还得自己找源代码编译。 我强烈建议你从源代码编译squid,当然怎样选择由得你。 2.4 匿名CVS 你能匿名访问squid 的CVS 文件(只读)以保持你的源代码同步更新。使用CVS 的有利面是你能轻易获取当前运行版本的补丁。这样就容易发现近来改变了什么。 将这些补丁打到你所运行的版本中,有效的保持你的源代码和官方版本的同步。 CVS 使用树型索引系统,树干叫做头分支。对Squid 而言,这里也是所有的新改变和新功能的存放之地。头分支通常包含试验性的,也许不太稳定的代码。稳定的代码通常在其他分支上。 为了有效的使用squid 的匿名CVS,你首先应知道版本和分支是怎样被标明不同的。例如, 版本2.5 分支被命名为SQUID_2_5 。具体的发布有长的命名, 例如SQUID_2_5_STABLE4。为了得到squid 版本2.5.STABLE4,请使用SQUID_2_5_STABLE4标签;使用SQUID_2_5 得到最近的2.5 分支的代码。 为了使用squid 匿名CVS 服务,你首先必须设置CVSROOT 环境变量: csh% setenv CVSROOT server:anoncvs@cvs.squid-cache.org:/squid, 或者,对Bourne shell 用户: sh$ CVSROOT= server:anoncvs@cvs.squid-cache.org:/squid sh$ export CVSROOT 然后你就可以登陆到服务器: % cvs login (Logging in to anoncvs@cvs.squid-cache.org) CVS password: 在提示符下,敲入anoncvs 作为密码。现在你可以用这个命令检查源代码树: % cvs checkout -r SQUID_2_5 -d squid-2.5 squid -r 选项指定获取修订标签。省略-r 选项你将获得头分支。 -d 选项改变存放文件的顶级目录名。假如你省略-d 选项,顶级目录名就与模块名字一样。 最后的命令行参数(squid)是要检查的模块名字。 一旦你检查完squid 源代码树,你能运行cvs update 命令去升级你的文件,和保持文件同步。其他命令包括:cvs diff, cvs log, 和 cvs annotate。 想获取更多CVS 知识,请访问:http://www.cvshome.org 2.5 devel.squid-cache.org Squid 的开发者维持一个独立的站点,当前运行在SourceForge,提供了试验性的squid功能。请检查它们在http://devel.squid-cache.org.在这里...还未集成到squid 的官方源代码里。你能通过SourceForge 的匿名CVS 服务来访问这些工程,或者下载与标准版本不同的差别文件。 第3章 编译和安装 3.1 安装之前 假如你使用unix 有一段时间,并且已编译过许多其他软件包,那么只需快速的扫描本章。编译安装squid 的过程与安装其他软件相似。 为了编译squid,你需要一个ANSI C 编译器。不要被ANSI 字眼吓倒。假如你已经有一个编译器,它顺从ANSI 指令,那么也一样。GNU C 编译器(gcc)是很好的选择,它被广泛使用。大部分操作系统在其标准安装中附带了C 编译器,不过Solaris 和HP-UX 除外。假如你使用这样的操作系统,那可能没有安装编译器。 理论上你应该在即将运行squid 的机器上编译squid。安装过程侦察你的操作系统以发现特定的参数,例如可用文件描述符的数量。然而,假如你的系统没有C 编译器存在,你也许会在其他机器上编译squid,然后把二进制代码copy 回来。如果操作系统不同,那么squid可能会遇到问题。假如操作系统有不同的内核配置,squid 会变得混乱。 除了C 编译器,你还需要perl 和awk。awk 是所有unix 系统的标准程序,所以你不必担心它。perl 也是相当普及的,但它也许没有默认安装在你的系统上。你需要gzip 程序来解压源代码发布文件。 对Solaris 用户,请确认/usr/ccs/bin 包含在你的PATH 环境变量里,即使你使用gcc编译器。为了编译squid,make 和ar 程序需要在这个目录找到。 3.2 解开源代码包 在下载完源代码后,你需要在某个目录解开它。具体哪个目录无关紧要。你能解开squid在你的家目录或任何其他地方,大概需要20M 的自由磁盘空间。我个人喜欢用/tmp。使用tar 命令来展开源代码目录: % cd /tmp % tar xzvf /some/where/squid-2.5.STABLE4-src.tar.gz 一些tar 程序不支持z选项,该选项自动解压gzip 文件。如果这样,你需要运行如下命令: % gzip -dc /some/where/squid-2.5.STABLE4-src.tar.gz | tar xvf - 一旦源代码被展开,下一步通常是配置源代码树。然而,假如这是你第一次编译squid,你应确认特定的内核资源限制足够高。怎样发现,请继续。 3.3 调整内核 Squid 在高负载下,需要大量的内核资源。特别的,你需要给你的系统配置比正常情况更高的文件描述符和缓存。文件描述符的限制通常很恼人。你最好在开始编译squid 之前来增加这些限制的大小。 因为这点,你可能为了避免重建内核的麻烦,而倾向于使用预编译的二进制版本。不幸的是,不管如何你必须重建一个新内核。squid 和内核通过数据结构来交换信息,数据结构的大小不能超过设置的文件描述符的限制。squid 在运行时检查这些设置,并且使用最安全的(最小的)值。这样,即使预编译的二进制版本有比你的内核更高的文件描述符,但还是以你系统内核的实际数值为主。 为了改编一些参数,你需要重建新内核。这个过程在不同的操作系统之间不同。假如需要,请参阅Unix 系统管理员手册(Prentice Hall 出版)或者你的操作系统文档。假如你正使用Linux,可能不必重建内核。 3.3.1 文件描述符







- 1

- jarzen20132013-01-29内容还不错,只是... 好像不完整,传说中的第15章在哪里。
- 粉丝: 1
- 资源: 16

我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
已下载
下载帮助



