Linux下搭建web服务器Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的 Web服务器软件之一。
Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。
Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验 Internet网络,后来逐步扩充到各种Unix 系统中,尤其对Linux的支持相当完美。
Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。
Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
到目前为止Apache仍然是世界上用的最多的Web 服务器,市场占有率达60%左右。
世界上很多著名的网站如Amazon.c om、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Apache的诞生极富有戏剧性。
当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。
就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。
Apache的主要特征是:可以运行上所有计算机平台;支持最新的H TT P1.1协议;简单而强有力的基于文件的配置;支持通用网关接口CGI;支持虚拟主机;支持H TT P认证;集成P erl脚本编程语言;集成的代理服务器;具有可定制的服务器日志;支持服务器端包含命令(SSI)支持安全Soc k et层(SSL)用户会话过程的跟踪能力;支持FastCGI;支持J ava Servlets。
安装Apache下面我们就开始漫漫征服Apache之旅,通过循序渐进的需求实例,一步步地学习使用Apache,从入门到精通。
系统需求运行Apache不需要太多的计算资源。
它在有6-10MB硬盘空间和8MB R A M的Linux系统上运行得很好。
然而,只运行Apache可能不是你想做的事情。
更可能的是,你想运行Apache来提供WWW服务、启动CGI进程以及充分利用所有WWW能够提供的令人惊奇的功能。
在这种情况下,你需要提供反映负载要求的额外的磁盘空间和内存空间。
也就是说,如果仅仅是启动WWW服务并不需要太多的系统资源,但是想要能为大量的客户提供服务就需要更多的系统资源。
你可以通过以下三种方法安装Apache服务器。
1.如果你安装的Linux版本中带用Apache的话,就在选择所要安装的服务器的时候,将httpd这个服务选上,Linux安装程序将自动完成Apache的安装工作,并做好基本的配置。
2.使用可执行文件软件包,这比较适合那些对编译工作不是太熟悉的初级用户,因为它相对比较简单。
下载软件包apache_1.2.4.e.tar.g ztar xvz f apache_1.2.4.e.tar.g z这就完成了安装工作,简单吧!如果你使用的是R ed H at Linux的话,你也可以下载apache_1.2.4.rp m软件安装包,然后使用rpm -ivh apache_1.2.4.rpm命令安装。
3.如果你想把Apache服务器充分利用起来的话,就一定要自己编译Apache定制其功能。
下载包含Apache源代码的软件包 apache_1.2.4. tar.g z; 然后用tar命令将它解开;将当前目录改变为Apache源代码发行版的src目录;将配置样本文件(Con f i g uration.tmpl)复制为Con f i g uration文件;编辑Con f i g uration文件中的配置选项:M a k e f ile配置选项:一些编译选项:"CC="一行指定用什么编译软件编译,一般为"CC=g cc";如果需要将额外的标志(参数)指定给C编译软件,可以使用:EX T R A_CFLAGS=EX T R A_LFLAGS=如果系统需要特殊的库和包含文件,可以在这里指定它们:EX T R A_LI B S=EX T R A_INCLU DE S=如果你要改变代码优化设置的话,你须将下面一句去掉注释,然后改成你所需要的值:#OP TI M=-O2R ule配置选项:用来决定需要什么功能,一般情况下无需改变。
模块配置:模块是Apache的组成部分,它为Apache内核增加新功能。
通过使用模块配置,可以自定义在Apache服务器中需要什么功能,这个部分也是Apache灵活性的表现。
模块配置行如下所示:Add M odule modules/standard/mod_env.o如果你需要Apache服务器具备什么功能,就将那个模块用Add M odule 语句加到配置文件Con f i g uration中去。
下表列出了Apache的模块功能:模块名 功能 缺省mod_access 提供基于主机的访问控制命令 ymod_actions 能够运行基于M I ME类型的CGI脚本或H TT P请求方法 y mod_alias 能执行U R L重定向服务 ymod_asis 使文档能在没有H TT P头标的情况下被发送到客户端 ymod_auth 支持使用存储在文本文件中的用户名、口令实现认证 y mod_auth_dbm 支持使用DBM文件存储基本H TT P认证 nmod_auth_mys q l 支持使用M yS Q L数据库实现基本H TT P认证 nmod_auth_anon 允许以匿名方式访问需要认证的区域 ymod_auth_external支持使用第三方认证 nmod_autoindex 当缺少索引文件时,自动生成动态目录列表 ymod_cern_meta 提供对元信息的支持 nmod_c g i 支持CGI ymod_dir 能够重定向任何对不包括尾部斜杠字符命令的请求 ymod_env 使你能够将环境变量传递给CGI或SSI脚本 nmod_expires 让你确定Apache在服务器响应请求时如何处理E xpires ymod_headers 能够操作H TT P应答头标 ymod_imap 提供图形映射支持 nmod_include 使支持SSI nmod_in f o 对服务器配置提供了全面的描述 ymod_lo g_a g ent 允许在单独的日志文件中存储用户代理的信息 nmod_lo g_con f i g 支持记录日志 ymod_lo g_re f erer 提供了将请求中的R e f erer头标写入日志的功能 n mod_mime 用来向客户端提供有关文档的元信息 ymod_ne g otiation 提供了对内容协商的支持 ymod_setenvi f 使你能够创建定制环境变量 ymod_spelin g 使你能够处理含有拼写错误或大小写错误的U R L请求 n mod_status 允许管理员通过W EB管理Apache ymod_uni q ue_id 为每个请求提供在非常特殊的条件下保证是唯一的标识 n在src目录下执行:". /con f i g ure";编译Apache:执行命令"ma k e";根据机器性能的不同,经历一段5-30分钟的编译,就大功告成了。
将编译好的可执行文件httpd复制到 /etc/httpd/bin目录下;将Apache发行版的配置文件:access.con f、httpd.con f、mime.typ es、 srm.con f文件复制到/etc/httpd/con f目录下。
到此为止,安装完成。
一些说明在R ed H at Linux 6.0中,Apache将自己的所有配置文件和日志文件放在了"/etc/httpd"目录下,其中"/etc/httpd/con f"下为配置文件,"/etc/httpd/lo g"下为日志文件。
同时,它将建立"/home/httpd"目录,并在其下建立三个子目录:"ht ml/":在这个目录下存放H T M L(主页)文件;"c g i-bin/":在这个目录下可以存放一些CGI程序;"icons/":在这个目录下是服务器自带的一些图标。
配置Apache基础篇,让WWW服务器跑起来Apache 服务器软件的配置文件主要有:"access.con f":用于设置系统中的存取方式和环境;"httpd.con f":用于设置服务器启动的基本环境;"srm.con f":主要用于做文件资源上的设定;"mime.type":记录Apache服务器所能识别的M I ME格式。
在具体讲解之前,我们必须告诉大家,Apache已经在安装时就采用了一系列的缺省值,已经让WWW服务器跑起来了。
你只需要将装上Li nux+Apache的主机联入Internet,然后将主页存放到"/home/http d"目录下即可。
下面介绍一些最主要的配置选项的含义,以便大家用最小的精力、最小的配置准备好服务器。
httpd.con f tpd.con f是主配置文件。
它告诉服务器将如何运行。
一、最重要的配置选项ServerType standalone | inetd这个配置选项指定如何运行W EB服务器。
Apache可以使用两种方法来运行服务器:standalone(独立的)和inetd(由inetd运行的)。
stan dalone参数表示W EB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务。
inetd参数表示W EB服务不是以一个单独的守候进程的形式支持。
而是由Inetd这个超级服务器守候进程进行代劳,当它收到一个客户端的W E B服务请求的时候,再启动一个W EB服务进程为其服务。
从功能的角度看,这两种方法几乎是相同的。
但它们之间实际有很大区别,区别在于服务器的性能。