squid 学习笔记(2)---编译安装
编译:
cd squid-2.5.STABLE4 ./configure --enable-icmp --enable-htcp make
安装:
su password: make install
假如你通过使用--enable-icmp 选项,激活了 squid 的 ICMP 衡量功能,那么必 须安装 pinger 程序。pinger 程序必须以超级用户权限安装,因为仅仅允许 root 来发送和接受 ICMP 消息。下列命令以相应的许可来安装 pinger 程序:
#make install-pinger
在安装完后,你将在 squid 的安装目录里(默认是/usr/local/squid)见到下列 目录和文件:
sbin
sbin 目录的程序正常只能被 root 启动
sbin/squid
Squid 的主程序
bin
bin 目录包含对所有用户可用的程序
bin/RunCache
RunCache 是一个 shell 脚本,你能用它来启动 squid。假如 squid 死掉,该脚本 自动重启它,除非它检测到经常的重启。RunCache 是一个时间遗留的产物,那 时 Squid 还不是后台服务进程。在最近的版本里,RunCache 很少用到,因为 Squid 自动重启它自身,当你不使用-N 选项时。
bin/RunAccel
RunAccel 与 RunCache 几乎一致,唯一的不同是它增加了一个命令行参数,告诉 squid 在哪里侦听 HTTP 请求。
bin/squidclient
squidclient 是个简单的 HTTP 客户端程序,你能用它来测试 squid。它也有一些 特殊功能,用以对运行的 squid 进程发起管理请求。
libexec
libexec 目录传统的包含了辅助程序。有一些命令你不能正常的启动。然而,这 些程序通常被其他程序启动。
libexec/unlinkd
unlinkd 是一个辅助程序,它从 cache 目录里删除文件。如你后面看到的一样, 文件删除是个性能瓶颈。通过在外部进程里执行删除操作,Squid 提升了一些执 行性能。
libexec/cachemgr.cgi
cachemgr.cgi 是 Squid 管理功能的 CGI 接口。为了使用它,你需要拷贝该程序 到你的 WEB 服务器的 cgi-bin 目录。
libexec/diskd(optional)
假如你指定了--enable-storeio=diskd,你才能看到它。 l
ibexec/pinger(optional)
假如你指定了--enable-icmp,你才能看到它
etc
etc 目录包含 squid 的配置文件。
etc/squid.conf
这是 squid 的主要配置文件。初始的该文件包含了大量的注释,用以解释每一个 选项做什么。在你理解了这些配置指令后,建议你删除这些注释,让配置文件更 小和更容易阅读。注意假如该文件存在,安装过程不会覆盖该文件。
etc/squid.conf.default
这是从源代码目录中拷贝过来的默认配置文件。在升级了 squid 安装后,你也许 发现有一份当前默认配置文件的拷贝是有用的。可能会增加新的配置指令,一些 存在的旧指令可能有所改变。
etc/mime.conf
mime.conf 文件告诉 squid 对从 FTP 和 Gopher 服务器获取的数据使用何种 MIME 类型。该文件是一个关联文件名扩展到 MIME 类型的表。正常而言,你不必编辑 该文件。然而,你可能需要增加特殊文件类型的接口,它们在你的组织内使用。
etc/mime.conf.default
这是从源代码目录里拷贝过来的默认 mime.conf 文件。
share
share 目录通常包括 squid 的只读数据文件。
share/mib.txt
这是 squid 的 SNMP 管理信息基础(MIB)文件。squid 自身不使用该文件,然而, 你的 SNMP 客户端软件(例如 snmpget 和多路由走向图(MRTG))需要该文件,用 以理解来自 squid 的 SNMP 对象可用。
share/icons
share/icons 目录包含大量的小图标文件,squid 用在 FTP 和 Gopher 目录列举 里。正常而言,你不必担心这些文件,但如果需要,你可以改变它们。
share/errors
share/errors 目录包含了 squid 显示给用户看的错误消息模板。这些文件在你 安装 squid 时,从源代码目录拷贝而来。如果需要你可以编辑它们。然而,在每 次运行 make install 时,安装过程总会覆盖它们。所以假如你想定制错误消息, 建议你把它们放在不同的目录。
var
var 目录包含了不是很重要的和经常变化的文件。这些文件你不必正常的备份它 们。
var/logs
var/logs 目录是 squid 不同日志文件的默认位置。当你第一次安装 squid 时, 它是空的。一旦 squid 开始运行,你能在这里看到名字为 access.log,cache.log 和 store.log 这样的文件。
var/cache
假如你不在 squid.conf 文件里指定,这是默认的缓存目录(cache_dir)。
打补丁
在你运行 squid 一段时间后,你可能发现需要打源代码补丁,用以修正 bug 或者 增加试验性的功能。在 squid-cache.org 站点上,对重要的 bug 修正会发布补丁。 假如你不想等到下一个官方发布版本,你能下载补丁,并且打到你的源代码中。 然后你需要重新编译 squid。
为了打补丁-或者有时候叫差别文件-你需要一个叫做"patch"的程序。你的操作 系统必须有该程序。如果没有,你可以从GNU工具集里下载 (http://www.gnu.org/directory/patch.html).
为了打补丁,你必须把补丁文件存放在系统中某处。然后进入到 squid 的源代码 目录,运行如下命令:
% cd squid-2.5.STABLE4 % patch < /tmp/patch_file
默认的,在 patch 程序运行时,它告诉你它正在做什么。通常输出滚动非常快, 除非有问题。你能安全的忽略它输出的 offset NNN lines 警告。假如你不想见 到所有这些输出,使用-s 选项选择安静模式。 当补丁更新了源代码后,它创造了原始文件的拷贝。例如,假如你对 src/http.c 打一个补丁,备份文件名就是 src/http.c.orig.这样,假如你在打了补丁后想 撤销这个操作,简单的重命名所有的.orig 文件到它们以前的格式。为了成功的 使用该技术,建议你在打补丁之前删除所有的.orig 文件。
在你打完补丁后,你必须重新编译 squid。make 的先进功能之一就是它仅仅编译 改变了的文件。但有时候 make 不能理解错综复杂的依赖关系,它没有完整的重 编译所需文件。为了安全起见,通常建议你去重编译所有文件。最好的方法是在 开始编译之前清除源代码树:
%make clean %make
重运行 configure
以相同的选项重运行./configure,使用如下命令:
%config.status --recheck
另一个技术是`touch config.status`文件,它更新了该文件的时间戳。这导致 make 在编译源代码之前,重新运行./configure 脚本:
% touch config.status % make
如果增加或删除./configure 选项,你必须重新敲入完整的命令行。假如你记不 住以前的选项,请查看 config.status 文件的顶部。例如:
% head config.status
在运行./configure 之后,你必须再次编译和安装 squid。安全起见,建议先运 行 make clean:
%make clean %make
回想一下,./configure 会缓存它在你系统中发现的东西。在这样的形式下, 你可能想清除这些缓存,从头开始编译过程。假如喜欢,你可以简单的删除 config.cache 文件。然后,下一次./configure 运行时,它不会使用以前的数值。 你也能恢复 squid 源代码树到它的 configure 之前的状态,使用如下命令:
%make distclean
这将删除所有的目标文件和其他被./configure 和 make 程序产生的文件。