Apache源于NCSA网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如、Yahoo!、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了ApacheGroup,后来这个团体在NCSA的基础上创建了Apache。
下面我们就开始漫漫征服Apache之旅,通过循序渐进的需求实例,一步步地学习使用Apache,从入门到精通。
系统需求运行Apache不需要太多的计算资源。它在有6-10MB硬盘空间和8MBRAM的Linux系统上运行得很好。然而,只运行Apache可能不是你想做的事情。更可能的是,你想运行Apache来提供WWW服务、启动CGI进程以及充分利用所有WWW能够提供的令人惊奇的功能。在这种情况下,你需要提供反映负载要求的额外的磁盘空间和内存空间。也就是说,如果仅仅是启动WWW服务并不需要太多的系统资源,但是想要能为大量的客户提供服务就需要更多的系统资源。
1.如果你安装的Linux版本中带用Apache的话,就在选择所要安装的服务器的时候,将";
模块配置:模块是Apache的组成部分,它为Apache内核增加新功能。通过使用模块配置,可以自定义在Apache服务器中需要什么功能,这个部分也是Apache灵活性的表现。模块配置行如下所示:
如果你需要Apache服务器具备什么功能,就将那个模块用AddModule语句加到配置文件Configuration中去。
编译Apache:执行命令"make";根据机器性能的不同,经历一段5-30分钟的编译,就大功告成了。将编译好的可执行文件ess.conf、ess.conf":用于设置系统中的存取方式和环境;",然后将主页存放到"/home/d
这个配置选项指定如何运行WEB服务器。Apache可以使用两种方法来运行服务器:standalone(独立的)和d(由d运行的)。standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务。d参数表示WEB服务不是以一个单独的守候进程的形式支持。而是由d这个超级服务器守候进程进行代劳,当它收到一个客户端的WEB服务请求的时候,再启动一个WEB服务进程为其服务。从功能的角度看,这两种方法几乎是相同的。但它们之间实际有很大区别,区别在于服务器的性能。一个由inted运行的服务器进程在它结束对请求服务的同时立刻退出。而在standalone模式下,子WWW服务器进程在退出之前要挂起一段时间,这就给它们提供了机会,可以重新用来服务新的请求。
在standalone模式下,不存在对每个请求启动新进程的开销,所以它的效率更高;而d模式被认为比standalone模式更具安全性。
此种模式下,WWW服务器侦听特定端口的连接请求。当客户机发出到特定端口地址的连接请求时,主服务器进程启动子WWW服务进程来服务该请求。另外还需要告诉主服务器进程侦听的特定端口地址,使用命令:
d是侦听有小于1024的端口连接请求的守护进程(一个服务器进程)。与前面的方法不同,当客户系统发出到WWW服务器的连接请求时,d启动一个WWW服务器进程,由此进程服务此请求,完成服务后即退出。如果选择通过d服务器来运行Apache,需要编辑/etc/d.conf文件为Apache添加一条新的记录:
在RedHatLinux中,默认是采用d服务器来运行Apache,所以只要你在安装时选择了
srm.conf是资源配置文件,用它来告诉服务器你想在WWW站点上提供什么资源以及在哪里和如何提供们。
ess.conf文件用来设置WWW站点上诸如文件、目录和脚本项目的访问权限。该文件的第一段非注释部分如下:
大家应该注意到,这一个部分是以开始,以结束的。这表示在其中间的部分都是针对指定目录"/home/ess.conf"文件中设定的权限是否可以被在文件"ess"中设定的权限覆盖。它有两个参数:
现在我们一起来看看关于目录"/home/ess"中设定来覆盖这里所设置的权限。使所有的人都可以取得控制。
需要说明的是,不同的LINUX系统中,可以在这个文件中看到的信息不完全相同,但是根据这里给出的信息,大家可以参照命令的解释自行理解文件中的设置,以及根据自己的需要进行相应的修改。
在上面,我们可能已经根据新的需求更改了相应的配置选项,如果我们要使得这个新的配置立即生效。我们就必须重新启动WEB服务进程。在LINUX中,我们可以十分方便地使用命令行来使得WEB服务进程重启。
第一步:在DocumentRoot目录外创建一个目录,然后将所有的CGI程序都集中存放在这个目录下。例如,你可创建一个/home/ess.conf中添加下列配置:
在这种方法中,Apache服务器将/~user/cgi-bin请求翻译成为了/home/user/Public_html/cgi-bin/,并允许执行任何带有正确扩展名(.cgi或.pl)的CGI程序。
ScriptAliasMatch~([a-z] )/cgi-bin/(.*)/home/$1/public_html/cgi-bin/$2
这个命令将用户名与$1相匹配,其中$1与~([a-z] )相等。将/cgi-bin/后面的任何内容与$2相匹配,其中$2与(.*)相等。
/home/ess模块,这个模块缺省状态下是被安装了的。该模块用以下几种Apache命令来提供访问控制功能。
主机的部分域名,如:;完整的IP地址,如:192.166.1.102;部分IP地址,如:192.166网络地址/网络掩码对,网络地址/nn(CIDR定义)
当你一步步地看到这里的时候,相信你的WWW站点已经建好,并且已经在上展现出来了。这时你可能就会关心谁造访过你的站点,或者想知道你的Apache服务器现在的运行状态与性能如何。下面我们一起通过解读Apache的日志来实现这个伟大的愿望。
如果你的Apache象缺省配置一样加入了mod_info模块的话,你就可以通过访问http://localhost/server-info查看服务器信息。
如果你的Apache象缺省配置一样加入了mod_status模块的话,你就可以通过访问http://localhost/apache-status查看服务器的运行状态信息,其中包括:
日志文件是Apache工作的记录,Apache包括了mod_log_config模块,它用来记录日志。在缺省情况下,它用通用日志格式CLF规范来写。CLF日志文件内对每个请求均有一个单独行,形如:hostidentanthuserdaterequeststatusbytes