Apache是使用范围最广的Web服务器工具套件,这里我们将详细介绍如何在Red Hat Linux 9.0环境里安装、启动和配置Apache服务器。 

  1.安装Apache服务器 
  在安装Red Hat Linux 9.0时,会提示是否安装Apache服务器。如果不能确定是否已经安装,可以在终端命令窗口输入以下命令: 

  [root@ahpeng root] rpm -qa | grep httpd 

  如果结果显示为“httpd-2.0.40-21”,则说明系统已经安装Apache服务器。 

  如果安装Red Hat Linux 9.0时没有选择Apache服务器,则可以在图形环境下单击“主菜单→系统设置→添加删除应用程序” 菜单项,在出现的“软件包管理”对话框里确保选中“万维网服务器”选项,然后单击“更新”按钮,按照屏幕提示插入安装光盘即可开始安装。 

  另外,你也可以直接插入第1张安装光盘,定位到/RedHat/RPMS下的httpd-2.0.40-21.i386.rpm安装包,然后在终端命令窗口运行以下命令即可开始安装进程: 

  [root@ahpeng RPMS] rpm -ivh httpd-2.0.40-21.i386.rpm 

  安装好Apache服务器,可以在终端命令窗口运行以下命令来启动Apache服务: 

  [root@ahpeng root] /etc/rc.d/init.d/httpd start 

  重新启动Apache服务: 

  [root@ahpeng root] /etc/rc.d/init.d/httpd restart 

  关闭Apache服务: 

  [root@ahpeng root] /etc/rc.d/init.d/httpd stop 

  确认Apache服务已经启动后,我们可以在Web浏览器里输入以下地址,如果可以看到默认的Apache首页,则说明Apache服务器工作正常。 

  Htpp://WebServerAddress  (http;//192.168.1.XX/)

  此处的WebServerAddress指代Web服务器的IP地址或者域名。即是说WebServerAddress应该用实际的Web服务器的IP地址或者域名来代替。 

  2.配置httpd.conf文件 
  在早期Apache服务器版本里,其配置内容分散在httpd.conf、srm.conf、access.conf三个文件里。而新版本的 Apache服务器,则统一在httpd.conf里进行配置。对于默认安装的Red Hat Linux来说,该配置文件位于 /etc/httpd/conf目录下,如果安装的是tar.gz版本,则该文件位于/usr/local/apache/conf目录。 

  利用httpd.conf,我们可以对Apache服务器进行全局配置、主要或预设服务器的参数定义、虚拟主机的设置。httpd.conf是一个文本文件,我们可以用Vi、Kate等文本编辑工具进行修改。通过分析该httpd.conf配置文件,我们不难发现: 

  该配置文件分为若干个小节,例如Section 1: Global Environment(第一小节:全局环境);Section 2: 'Main' server configuration(第二小节:主服务器配置)等。 

  每个小节都有若干个配置参数,其表达形式为“配置参数名称 具体值”,每个配置参数都有详尽的英文解释(用#号引导每一个注释行)。 

  为了帮助大家理解,这里给出httpd.conf的最常用配置参数: 

  (1)DocumentRoot 

  该参数指定Apache服务器存放网页的路径,默认所有要求提供HTTP服务的连接,都以这个目录为主目录。以下为Apache的默认值: 

  DocumentRoot "/var/www/html" 

(2)MaxClients 

  该参数限制Apache所能提供服务的最高数值,即同一时间连接的数目不能超过这个数值。一旦连接数目达到这个限制,Apache服务器则不再为别的连接提供服务,以免系统性能大幅度下降。本例假设最大连接数是150个: 

  MaxClients 150 

  (3)Port 

  该参数用来指定Apache服务器的监听端口。一般来说,标准的HTTP服务默认端口号是80,一般不要更改这个数值。本例为80端口: 

  Port 80 

  (4)ServerName 

  该参数使得用户可以自行设置主机名,以取代安装Apache服务器主机的真实名字。此名字必须是已经在DNS服务器上注册的主机名。如果当前主机没有已注册的名字,也可以指定IP地址。本例将服务器名设为Peter.vicp.net: 

  ServerName Peter.vicp.net 

  (5)MaxKeepAliveRequests 

  当使用保持连接(Persistent Connection)功能时,可以使用本参数决定每次连接所能发出的要求数目的上限。如果此数值为 0,则表示没有限制。建议尽可能使用较高的数值,以充分发挥Apache的高性能,本例设置每次连接所能发出的要求数目上限为100: 

  MaxKeepAliveRequests 100 

  (6)MaxRequestsPerChild 

  该参数限制每个子进程(Child Process)在结束前所能处理的请求数目,一旦达到该数目,这个子进程就会被中止,以避免长时间占据Apache(或者Apache服务器所采用的函数库),防止造成内存或者其他系统资源的超负荷。 

  需要注意的是,该参数的数值并不包括保持连接所发出的请求数目。举例说明,如果某个子进程负责某一个请求,该请求随后带来保持连接功能所需的10个请求,这时候对于该参数而言,Apache服务器会认为这个子进程只处理了1个要求,而非11个要求。 

  以下设置最多可以处理10个要求: 

  MaxRequestsPerChild 10 

  (7)MaxSpareServers 和MinSpareServers 

  提供Web服务的HTTP守护进程,其数目会随连接的数目而变动。Apache服务器采用动态调整的方法,维持足够的HTTP守护进程数目,以处理目前的负载,也就是同时保持一定的空闲HTTP守护进程来等候新的连接请求。 

  Apache会定期检查有多少个HTTP守护进程正在等待连接请求,如果空闲的HTTP守护进程多于MaxSpareServers参数指定 的值,则Apache会终止某些空闲进程;如果空闲HTTP守护进程少于MinSpareServers参数指定的值,则Apache会产生新的HTTP 守护进程。本例将最高空闲守护进程设置为20个,将最低的空闲守护进程设置为5个: 

  MaxSpareServers 20 

  MinSpareServers 5 

  当然这只是Apache的一些基本设置项,大家可以根据自己的实际情况加以灵活的修改,以充分发挥Apache的潜能。如果修改配置文件之后没能立即生效,可以重启Apache服务。 

  注意:修改之前一定要先备份! 

  3.图形化配置界面 
  图形化配置直观、简单,足够应付Apache服务器的日常管理维护工作。我们可以通过单击“主菜单→系统设置→服务器设置→HTTP服务器” 菜单项,或者直接在“运行命令”对话框里输入“apacheconf”命令并回车,来访问“Apache配置”对话框。可以看到该配置对话框共有4个标签 页。 

  (1)“主”标签页 

  在“服务器名”框中可以输入服务器的名称,等同于httpd.conf文件里的“ServerName”字段。“网主电子邮件地址”框中可以 输入管理员的邮件地址,等同于httpd.conf文件里的“ServerAdmin”字段。单击“可用地址”选项组中的“添加”(或者“编辑”)按钮, 我们可以添加或者修改服务器的IP地址和端口。 

  (2)“虚拟主机”标签页 

  所谓的虚拟主机服务就是指将一台计算机虚拟成多台Web服务器。利用Apache服务器提供的“虚拟主机”服务,我们可以利用一台计算机提供多个Web服务。 

  用Apache设置虚拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于名字的虚拟主机。基于IP地址的虚拟主机的实现方法有一个严重的不足,每增加一个虚拟主机,就必须增加一个IP地址。所以这里介绍如何创建基于名字的虚拟主机。 

  假设一台Apache服务器的IP地址是210.79.81.212,主机名称为www.companyname.net,同时它拥有两个别 名:sales.companyname.net、marketing.companyname.net。虽然这3个网站的IP地址相同,都指向 210.79.81.212,但是由于架设了基于名字的虚拟主机,所以可以指向不同的网页。 

  设置时,请单击“虚拟主机”标签页上的“添加”按钮,在打开的配置对话框的“主机信息”下拉列表框里选中“基于名称的虚拟主机”选项,然后输入合适的数据IP地址、主机名称等,记住,还要添加合适的别名,如图2所示。 

 
[root@test root]# cd /usr/local/apache2/conf
[root@test root]# vi httpd.conf

ServerRoot "/usr/local/apache2"
# 最上层的 Apache 目录!我们安装的时候,以这个目录来安装的,他就是 ServerRoot 啰!
# 其实,也就是说,如果底下以『相对路径』的方式写的,那么就是相对于这个路径!
# 当然,写绝对路径就没有任何影响啦!

PidFile logs/httpd.pid
# 不要跟我说不晓得 PID 是什么?查看一下 Linux 基础的资源管理去!
# 这个项目在设定 Apache 的 PID 记录文件!可以用在重新读取设定文件等等的功能!
# 如上面所言,因为写了相对路径,所以实际的目录为 /usr/local/apache2/logs/httpd.pid
# 通常我也喜欢将他移动到 /var/log/httpd 底下去,统一管理较方便!
# 我喜欢将这行改变为PidFile /var/log/httpd/httpd.pid

Timeout 300 
# 这是用来设定连接到你这部主机的客户端,当超过 300 秒客户端还没有 
# 办法连上你的主机时,就予以断线处理! 

KeepAlive On
# 是否允许持续性联机,亦即一个联机有多个要求!这里通常设定为 On 比较好,
# 就鸟哥的经验来看,设定为 Off 似乎会产生很多 Time_Wait 的封包!粉怪!

MaxKeepAliveRequests 100
# 在持续性的联机当中,最多允许的联机数目!如果不要限制,可以设定为 0 ,
# 当然,官方网站上面说,要有较佳的效能,最好设定大一点,所以我都将他改为 200 以上。

KeepAliveTimeout 15
# 同一个联机的 Client 下次的需求没有在 15 秒内送出,那么该联机会被视同断线喔!

<IfModule prefork.c>
StartServers         5
MinSpareServers     5
MaxSpareServers    10
MaxClients        150
MaxRequestsPerChild  0
</IfModule>
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
# 这两段主要是与系统的效能较有关系!如果不需要效能设定的话,那么使用默认值就很够了!
# 1. MinSpareServers 与 MaxSpareServers 是开启 httpd 服务数目的地方,当你执行
#    /usr/local/apache/bin/apachectl start 之后, 在 shell 下执行 
#    ps -aux|grep http 就可以看到 http 的数量, 通常这与你的 RAM 有关。
#    如果是小站的话,可以设小一点, 例如最小设 3 最大设 5 即可!
# 2. 而 StartServers 则设与 Min 相同即可!
# 3. 至于 MaxClients 则可以设小一点,因为设定太大很耗系统资源,
#    而太小则无法让很多人连上来!所以可以设成例如 100

Listen 80
# 设定监听的 port ,如果你要更改 WWW 的 port number ,可以在这里修改,例如 8080

User nobody
Group nogroup
# 这个是设定 apache 所产生的,就是刚刚我们上头所设定的 MinSpareServers ,之后会产生
# 一些 process ,那么这些 processes 的拥有者与拥有群组 ( owerner & group ) 是谁!
# 这个与未来的『 PID 权限及 Linux 权限设定』有关!通常如果是 RPM 安装的话,
# 大致上都会是 apache ,而如果是 Tarball 安装,通常是 nobody 与 nogroup 吧!
# 是否有该 user 还要查看 /etc/passwd 及 /etc/group 喔!不能设错!否则无法启动 apache

ServerAdmin root@localhost
# 这个是设定你的机器的 httpd 管理员账号!设成你的e-mail吧!例如我都设定为:
# 我的机器上:ServerAdmin  test@localhost

#ServerName new.host.name:80
# 设定主机名称的地方,若有需要的话才设定,否则可以将他 mark 掉也没关系!
# 但如果你需要让 Apache 自动帮你将其它名称连过来的主机名称修改时(下一个设定),
# 那么这里就需要填写啰!此外的此外,需要了解的是,有时,例如 Openlinux server 3.1.1 
# 如果没有设定这个的话,那么你的 WWW 将无法启动!另外,如果设定错误,同样无法启用!
# 因此,没有特别要求的话,那么这个就暂时不要设定吧!免得自找麻烦~

UseCanonicalName Off
# 主机的别名啦!例如你的主机有三个名称时,那么这个 Off 的设定,会让 Client 端
# 可以分别使用三个名称显示在他们的浏览器上面,如果是 On 的话,那么将以上面的
# ServerName 内容来显示在他们的浏览器上面,而不是原来他们写的主机名称喔!
# 说是这样说,但是我试不出来这个功能~~ @_@

AddDefaultCharset ISO-8859-1
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
# Apache 的预设显示语言编码!请特别留意,因为这里的设定并不适合台湾的繁体中文,
# 呵呵!所以底下请『务必』修改成这样!否则您的网页总是无法显示中文喔!
# 这两行大概在 httpd.conf 的 750 ~ 800 行之间!请以搜寻的方式找一下!
AddDefaultCharset Big5
LanguagePriority tw en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv

HostnameLookups Off
# 在记录档案的时候,登录档的内容,来捉取我们数据的主机是以 IP 还是主机名称来显示?
# 当然是 IP 来显示比较快喔!所以,这里通常设定为 Off ,不需要转译 IP 成为主机名!

 
  • 目录路径设定:

  •  
    [root@test root]# cd /usr/local/apache2/conf
    [root@test root]# vi httpd.conf

    DocumentRoot "/usr/local/apache2/htdocs"
    # 将 /usr/local/apache2/htdocs 设定为 Apache 的根目录!
    # 这个就是主机的主网页啦!你可以将他移到任何你高兴的地方!
    # 不过,比较重要的限制是,最好这个目录底下不要包含重要的信息,例如你不要将根目录 / 
    # 设定为这个 DocumentRoot 吧! ^_^ 否则你的主机下的任何数据,不就任何人都可以使用 
    # 浏览器来查看?岂不是很危险!

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    # 这个是设定根目录,亦即是 /usr/local/apache2/htdocs 这咚咚的属性啦!
    # 使用 Options 来设定相关属性,相关的属性还有底下几个ㄋㄟ!
    ExecCGI  :使该目录底下的 CGI 具有可以执行的能力!重要项目!如果您要您的
           某个目录可以执行 CGI 的程序时,那么请将该目录多加 ExecCGI 这个属性!
    FollowSymLinks :让您的 link 的目录或档案,虽然在其它的目录下,仍然可以连接出去!
             举个例子来说,目前我的主页是 /usr/local/apache2/htdocs ,但我想
             连接到 /home/vbird/testing 底下,然而我又不想多加一个 directory 
             的设定值在 httpd.conf 内,那么我可以在 /usr/local/apache2/htdocs 
             使用 ln 连结一个名为 vbird 使他指向 /home/vbird/testing ,那么
             当我网址输入 http://localhost/vbird 时,就可以到
             /home/vbird/testing 了!
             如果没有设定这个属性,那么就无法连接出去喔!
    Includes  :在 Server 端的工作可进行!
    Indexes   :如果在该目录底下找不到 index.html 时,就显示整个目录下的文件名称!
           粉危险吧! ^_^ 所以啰,尽量不要包含 Indexes 这个项目啦!
    MultiViews :这个东西有点类似多国语言支持啦!你可在同一目录下的同一个档案,
           编写多个不同语言的档案,并且以一个 *.var 的档案来规范不同编码!
           有兴趣的话,请自行参考自己的 /usr/local/apache2/htdpc/index.html.var
    All :全部的属性都启动啦!但是不包含 MultiViews !

    <Directory "/usr/local/apache2/htdocs">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    # 1. 这段主要在设定 / 的属性啦!可以看到预设的情况中有 indexes 喔!所以赶紧将他拿掉
    # 2. 至于 AllowOverride 主要与认证网页的设定有关啦!亦即 .htaccess 档案!意思是说,
    #    httpd.conf 在与 .htaccess 相同目录下的设定中,哪些设定会用来取代 .htaccess 的
    #    设定内容?当然啦, .htaccess 这个档案设定较为灵活,所以当然设定为 None 啰!
    #    仍然是以 .htaccess 的设定为主啦!
    # 3. Order allow,deny 注意喔,那个 allow,deny 中间是以 , 隔开,并没有空格!不要
    #    设定错了!这个东西与底下的 Allow 在设定『权限』的啦!我们后面会再详谈!

    UserDir public_html
    # 这玩意儿在设定个人家目录下的首页在何处啦!这里预设是 public_html ,举例来说,
    # 我的家目录是 /home/test ,那么这个使用者的首页目录在 /home/test/public_html !
    # 当然,这个目录是可变的!就看你要怎么设定啰! ^_^
    # 例如很多人都喜欢将这个目录设定为 www ㄋㄟ!呵呵!也顺道去修改一下 /etc/skel 的内容

    DirectoryIndex index.html index.html.var
    # 这个就是当我们输入 http://192.168.1.2 时,那么 Apache 将会去搜寻该目录底下的文件名!# 预设只有两个,太少了!如果我们使用 php 之类的,哇!那可就糗了!所以,这里可以改成
    DirectoryIndex index.html index.htm index.php index.cgi index.php3 index.html.var
    # 如果还有喜欢的预设档名,将他加进去吧!这就是首页的网页名称啰! ^_^

    Alias /icons/ "/usr/local/apache2/icons/"
    <Directory "/usr/local/apache2/icons">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    # Aliase 之设定主要也是在简化一些繁复的连结内容啦!举上面的例子来说,我们的 Apache
    # 根目录在 /usr/local/apache2/htdocs 里面,那么输入网址 http://localhost 则到该目录
    # 在上面的设定中,则输入 http://localhost/icons 会跑到 /usr/local/apache2/icons 
    # 的意思!如此一来,设定上较为简便了!

    Alias /manual "/usr/local/apache2/manual"
    <Directory "/usr/local/apache2/manual">
        Options Indexes FollowSymLinks MultiViews IncludesNoExec
        AddOutputFilter Includes html
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    # 这个与上面的设定相同!所以,未来只要输入 http://localhost/manual 即可到达自己的
    # 主机上面的说明文件喔!很简易吧! ^_^

    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
    <Directory "/usr/local/apache2/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
    # ScriptAlias 这部份则大概专属于 CGI 之类的可执行程序吧!呵呵!要了解一下,
    # 我们预设都是将 http://localhost/cgi-bin 设定为可执行的 CGI 程序放置区!
    # 那么 CGI 程序要开放的权限有哪些!呵呵!就上面设定的啰!


 

  “Apache配置”对话框的其他两个标签页的设置内容基本等同于前面所介绍的httpd.conf参数配置,这里就不再介绍了。