分享
 
 
 

编译Apache

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

逐步指导如何定制世界最流行的Web服务器

概要:

如果你的工作职则包括管理Apache,很有可能有一天你需要自己编译Apache。Mark 和Cary介绍了一些Apache的编译及其模块的选项,并演示了他们如何建立一个命令行的配置来编译Apache。

作者:Mark Lomarinski 和 Cary Collett

现在你已经拿到了你那闪亮的新Linux机器,它已经安装了Apache,运行地很好。但是现在你需要升级你的Web服务器,或你想运行一些可选的模块,可能你也想去掉一些缺省的模块,你不见得在已编译的Apache版本中找得到你需要的模块。

现在就需要你自己编译Apache了。

即使你不需要增加或删除Apache模块,在你事业的某一刻作为系统管理员你也有可能需要改变Apache的实时配置。

不管是哪种情况,Apache的缺省配置或配置你自己的安装在最开始都会让人气馁。

这个月,我们要谈谈编译Apache1.3的实时配置及其它常用的实时.conf 文件例子。

获得Apache

获得apache源代码最方便的方法是到Apache项目网址(http://www.apache.org/)或其镜相点(见以下的资源)上的下载区域(http://your.nearyby.apache.mirror/dist/)。选择最新的版本。在我们写这篇文章的时候最新版是1.3.3。

由于Apache小组一直在修补bug并改进代码,重要的是你得到最新的版本。

编译Apache

在1.3版以前,Apache使用的配置的基础即不是GNU的autoconf也不是Imake---两种最常用的自动配置的工具。另外,也没有现成的安装可使你用熟悉的办法安装。

现在一切都会很好办,如果你在你想要运行Apache的目录中解开tarball。 但是如果你想要在不同的目录树中运行Apache,你将不得不用手复制目录结构。

版本1.3使用GNU autoconf但是仍然为宁愿它的那些人支持配置的旧的风格。 除此之外基于更多标准的GNU autoconf,版本1.3使增加第三方模块变得容易: 为了增加一种新的模块,你

在构成Apache时简单地使用--激活模块指示。 因此不再需要编辑文件。

只要你在配置使用autoconf的Apache时运行./configure--help是一个好主意。 这应该产生一个配置会接受的冗长的一般标记表,在最后还有你所编译程序的列表。

由于这是一张长的表,你将有可能想要通过进入把它输送到你特别喜爱页码程序(例如,less):

./configure--help|less

在./configure--help开始时所列出的输出选项中,有一个你将要很有可能想要使用--prefix。 它控制Apache安装的根目录的位置。 其它有用的指示下面在表格上被列出。

--datadir=DIR

文件根(htdocs)和cgi-bin目录将在

什么地方被建立,缺 省为/share

--runtimedir=DIR

过程识别(PID)文件将在什么地方被保存

缺省为/var/apache/run

--logfiledir=DIR

log文件将在什么地方被保存

缺省为<prefix>/var/apache/log

如果DIR前面没有/,它被理解为与你冠有--prefix的目录有关,否则被理解为一条绝对的路径。

所有这些(除安装目录外)能在.conf文件中的时间库中修改。 然而,如果你想要新的Apache控制程序(Apachetl)充分发挥作用而没有任何修改,你至少应该在编译时间表明的位置留下PID文件。

好的规则

更进一步的--help输出是更有趣的指示。 下一段是一套配置规则,我们想用Apache支持IRIXN32,IRIXNIS,PARANOID,SHARED-CHAIN,SHARED-CORE,SOCKS4,SOCKS5,和/或WANTHSREGEX。

头两项规则与SGI的Irix有关,它们可以忽略并保留缺省值。 PARANOID是在编译模块时间里与执行Shell命令的Apache1.3能力相联系的。 如果你键入

--enable-rule=PARANOID

配置将发出回声它执行的命令终端。

SHARED-CHAIN和SHARED-CORE规则是Apache动态的共用的对象(DSO)支持的一部分。 DSO大部分的强迫特性让你再编译模块并装载它而不用再编译Apache。

DSO仍然是实验性和有疑问的,尤其如果你使用不支持它的第三方模块。 我们不推荐DSO除非你确实需要它。

你可能需要SHARED-CHAIN,如果你有模块你作为编译共用的对象,其参考其它共用的对象或者库。

SHARED-CORE也使Apache核心共用。 对于这个例子,只要使用其缺省值。

SOCKS4和SOCKS5指示仅仅在你使用Apache作为proxy服务器时使用。 它们分别支持SOCK代理协议的版本4和5。 使用Apache作为代理人服务器超出本文的范围,如此我们暂时放开这个话题,但是我们计划在未来讨论它。

最后是WANTHSREGEX规则。 它控制Apache是否将使用系统常规的表达库或者随Apache发布来的regex库。 我们通常发现简单地使用随Apache发布的regex库是容易的。 这样,所有规则中,这是将在配置命令行中唯一一个。

在规则段之下是激活第三方模块的两条指令。第一,--add-module=<file>,将首先从<file>拷贝模块到Apache建造目录并激活它;第二,--activate-module=<file>,如果你已经在适当的位置上有模块,此指令会被使用。

<file>的确切的形式依模块而变化。 我们将不再讨论增加第三方模块,但是我们计划在以后讨论。

模块操纵

下一段控制随Apache而来的模块,许多你从不需要触到。

完全的列表(从./configure--help输出)为:

access=yes

actions=yes

alias=yes

asis=yes

auth=yes

auth-anon=no

auth-db=no

auth-dbm=no

autoindex=yes

cern-meta=no

cgi=yes

digest=no

dir=yes

env=yes

example=no

expires=no

headers=no

imap=yes

include=yes

info=no

log_agent=no

log_config=yes

log_referer=no

mime=yes

mime_magic=no

mmap-static=no

negotiation=yes

proxy=no

rewrite=no

setenvif=yes

so=no

speling=no

status=yes

unique_id=no

userdir=yes

usertrack=no

所有的模块的短描述能在src/Configuration中被找到。 有些模块你很有可能将要用到,下面是简要的描述。 我们没有涉及到的那些模块可以使用缺省设置。 简言之,如果你对一些模块

不是很确定的话就使用其缺省设置。

下列的组模块控制进入和验证,如果你不打算限制Web进入或者使用一种其它的方法,你可以使其禁用。

Acess

你想要进入控制吗?

auth

检查Unix-style口令和组文件的基本的验证。

auth-anon

使用匿名的FTP-style usernames和口令。

auth-dbm

使用Berkeley db文件存储usernames,口令,和组信息。如果你有很多usernames并关心性能, 这是很有用的。

digest

使用HTTP文摘验证,这比基本的验证更安全。

expire(过期)模块让你定制Expire: 基于像进入时间或者修改时间一样的事情的各种各样的资源的标题。

如果你想要能够跟踪你站点的点击,不想要使用某种进入控制的方法,你能使usertrack激活。 它使用cookie值作为一个唯一的ID。

共用的模块通过so模块成为可用。 如上所述,共用的模块和DSO是实验性的,不推荐使用。

在Apache1.3中鼓励你通过客户log记录所有登录。 Apache提供复制标准的agent和refer报告格式的log格式。 这意味你将很有可能想要把log_config设置把为On,log_agent和log_refer为off,因为它们是多余的。

如果你不想要你的用户自动地有一个目录可以为HTML服务(通过http://your.server.com/~user),你能使userdir模块禁用。

最后,如果你需要做URI-to-filename地图,你能够重写模块。 它可让你使用常规的表达式对要求做复杂(和简单!) 重写。

一个具体的例子: 我们如何构成Apache

当我们建立构成命令行,我们喜欢打开Xemacs缓冲器并且打出(或者拷贝和粘贴)命令并且为将来的再编译保存它。

我们当前Apache配置行看起来如下:

./configure--prefix=/home/httpd--enable-rule=WANTHSREGEX--activate-module=src/modules/PyApache/mod-pyapache.c--activate-module=src/modules/php3/libphp3.a--enable-module=headers

首先,我们告诉Apache使用捆绑的regex库; 然后,我们使两种第三方模块可用:PyApache的(在Apache中嵌入Python 解释器以消除Python CGI语句解释程序的启动时间)和PHP3(类C的

HTML嵌入语言); 最后,我们打开标题模块,因为我们为登录目的使用某种专断的标题。

当我们运行配置,我们得到以下输出:

Configuring for Apache, Version 1.3.3

+ activated pyapache module (modules/PyApache/mod_pyapache.c)

+ activated php3 module (modules/php3/libphp3.a)

Creating Makefile

Creating Configuration.apaci in src

Creating Makefile in src

+ configured for Linux platform

+ setting C compiler to gcc

+ setting C pre-processor to gcc -E

+ checking for system header files

+ adding selected modules

o PyApache uses ConfigStart/End

o php3_module uses ConfigStart/End

+ doing sanity check on compiler and options

Creating Makefile in src/support

Creating Makefile in src/main

Creating Makefile in src/ap

Creating Makefile in src/regex

Creating Makefile in src/os/unix

Creating Makefile in src/modules/standard

Creating Makefile in src/modules/PyApache

Creating Makefile in src/modules/php3

所有坚苦的工作现在被完成! 键入:

make install

它应该建造二进制文件(httpd加一些帮助程序),建立目录树并且安装各种文件。

Apache1.3的缺省目录布局是:

./bin

帮助程序和原代码(htpasswd)

./etc/apache

Apache配置文件

./include/apache

Apache标题文件

./libexec

共用的对象文件

./man

man 页

./sbin

服务器二进制,apachectl原本,log rotator

./share/cgi-bin

缺省CGI原本/二进制的目录

./share/htdocs

缺省文件根

./share/htdocs/manual

Apache手册

./share/icon

包含各种图标GIFs的目录

./var/apache/log

log文件的目录

./var/apache/proxy

proxy缓存目录

./var/apache/run

httpd.pid(包含主要的httpd过程标识

符的文件)在此目录

与Apache1.3一样apachectl原代码也是新的,它让你停止、开始,得到服务器状态并且再装入.conf文件。从安装目录开始运行Apache键入

sbin/apachectl start.

运行sbin/apachectl(没有变元)将给你变元和简短描述的列表。

你现在有手工定制的Apache服务器运行并准备提供页面服务并且执行CGIs!

关于更多信息,你当然应该访问Apache的Web页面,在那里你总可以找到最新的信息、补丁和公告。你也可以登记Apache邮件列表。(apache-anounce-request@apache.org)或者阅读 comp.infosystems.www.servers.unix newsgroup。

我们下个月将从功能、安全、和性能等方面讨论Apache的运行配置。接下来的部分将讨论诸如mod-php3和mod-perl的各种第三方模块。

关于作者

Mark Komarinski是Waltham,MA的Auraora Technologies的系统管理人员。他是以前Linux期刊LinuxCompanion的专栏作者和作者。 他和Cary Collett 共同发表了The Linux System Administration Handbook

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有