• 沒有找到結果。

8.3.1 Apache 概述

Apache 是 Internet 上最流行的 Web 服务器软件,它安全、高效、稳定、适用于各种平台,

关键它还是免费的和开放源代码的。从 1995 年开始直到今天,经过不断的发展,Apache 小组 开发的 Apache httpd 服务器软件已经成为市场的领导者。在所有的 Web 服务器软件中,Apache 占有绝对优势,远远领先于 Microsoft 的 IIS 服务器软件。

许多世界知名的网站都是基于 Linux 操作系统的,如 Yahoo、Hotmail 等网站。在 Linux 系统上架设 Web 服务器所使用的最多、最广泛的软件就是 Apache。它功能强大,高度稳定,

与 Linux 配合得十分完美,是在 Linux 上构建 Web 站点时首选的方案。另外,也有 Windows 平台下的 Apache 软件。可以到官方网站 http://www.apache.org 免费下载 Apache 最新的版本。

8.3.2 Apache 服务器的安装

在安装 Red Hat Linux 9 时,可以选择安装 Apache 服务器,而在 Red Hat Linux 9 中内置的

Apache 服务器版本为 httpd-2.0.40-21,如果不知道是否已安装此版本的软件,可以使用下面的 方法来判断。

[root@rh9 root]# rpm -qa httpd httpd-2.0.40-21.i386.rpm

如果看到上面的结果,则表示该软件已经安装。否则,需要找出第二张安装光盘,保存在 RedHat/RPMS 目录的 httpd-2.0.40-21.i386.rpm。可以使用下面的命令进行安装。

[root@rh9 root]# mount /mnt/cdrom

[root@rh9 root]# cd /mnt/cdrom/Red Hat/RPMS [root@rh9 root]# rpm -ivh httpd-2.0.40-21.i386.rpm

另 外 , 为 了 使 用 图 形 化 的 Apache 服 务 器 管 理 工 具 , 建 议 用 户 也 安 装 redhat-config-httpd-1.0.1-18.i386.rpm 软件包。

8.3.3 Apache 服务器的基本配置

Apache 的配置文件是包含了若干指令的纯文本文件,其文件名为 httpd.conf,在 Apache 启动时,会自动读取配置文件中的内容,并根据配置指令影响 Apache 服务器的运行。配置文 件改变后,只有在下次启动或重新启动后才会生效。

配置文件中的内容分为注释行和服务器配置命令行。行首有“#”的即为注释行,注释不 能出现在指令的后边,除了注释行和空行外,服务器会认为其他的行都是配置命令行。配置文 件中的指令不区分大小写,但指令的参数通常是对大小写敏感的。对于较长的配置命令,行末 可使用反斜杠“\”换行,但反斜杠与下一行之间不能有任何其他字符(包括空白)。可以使用 apachectl 或者 httpd 的命令行参数-t 来检查配置文件中的错误,而无需启动 Apache 服务器。

[root@rh9 root]# httpd -t

httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Syntax OK

[root@rh9 root]# apachectl -t

httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Syntax OK

整个配置文件总体上划分为 3 部分(section),第 1 部分为全局环境设置;第 2 部分是服 务器的主要配置;第 3 部分用于设置和创建虚拟主机。下面介绍一些常用的配置命令。

1.常规配置指令

(1)ServerRoot。所谓 ServerRoot 是指整个 Apache 目录结构的最上层,在此目录下可包 含服务器的配置、错误和日志等文件。如果安装时使用 rpm 版本的方式,则默认目录是 /etc/httpd,一般不需要修改。注意,这里不能在目录路径的后面加上斜线(/)。

(2)ServerName。设置服务器用于辨识自己的主机名和端口号,该设置仅用于重定向和 虚拟主机的识别。命令用法为:“ServerName 完全合格的域名[:端口号]”。

对于 Internet 的 Web 服务器,应保证该名称是 DNS 服务器中的有效记录。默认配置文件 中对此没有设置,应根据服务器的实际情况进行设置。比如当前 Web 服务器的域名为 www.cqcet.cn,则可设置为:ServerName www.cqcet.cn 或 ServerName www.cqcet.cn:80。

当没有指定 ServerName 时,服务器会尝试对 IP 地址进行反向查询来获得主机名。如果在

服务器名中没有指定端口号,服务器会使用接受请求的端口。为了加强可靠性和可预测性,应 使用 ServerName 显式地指定一个主机名和端口号。

(3)Listen。Listen 命令告诉服务器接受来自指定端口或者指定地址的某端口的请求。如 果 Listen 仅指定了端口,则服务器会监听本机的所有地址;如果指定了地址和端口,则服务器 只监听来自该地址和端口的请求。利用多个 Listen 指令,可以指定要监听的多个地址和端口,

比如在使用虚拟主机时,对不同的 IP、主机名和端口需要作出不同的响应,此时就必须明确 指出要监听的地址和端口。其命令用法为:“Listen [IP 地址]:端口号”。Web 服务器使用标准 的 80 号端口,若要对当前主机的 80 端口进行侦听,则配置命令为:Listen 80,假设当前服务 器绑定了 61.186.160.104 和 61.186.160.105 IP 地址,现需要对其 80 端口和 8080 端口进行监听,

则配置命令如下。

Listen 61.186.160.104:80 Listen 61.186.160.104:8080 Listen 61.186.160.105:80 Listen 61.186.160.105:8080

(4)ServerAdmin。用于设置 Web 站点管理员的 E-mail 地址。当服务器产生错误时(如 指定的网页找不到),服务器返回给客户端的错误信息中将包含该邮件地址,以告诉用户该向 谁报告错误。其命令用法为:“ServerAdmin E-mail 地址”。

(5)DocumentRoot。用于设置 Web 服务器的站点根目录,其命令用法为:“DocumentRoot 目录路径名”,默认设置为:DocumentRoot "/var/www/html",注意,目录路径名的最后不能 加“/”,否则将会发生错误。

(6)ErrorDocument。用于定义当遇到错误时,服务器将给客户端什么样的回应,通常是 显示预设置的一个错误页面。其命令用法为:“ErrorDocument 错误号 所要显示的网页”。在 默认的配置文件中,预定义了一些对不同错误的响应信息,但都注释掉了,只需去掉前面的“#”

号即可开启。

(7)DirectoryIndex。用于设置站点主页文件的搜索顺序,各文件间用空格分隔。例如,

要将主页文件的搜索顺序设置为 index.php、index.html、index.htm、default.htm,则配置命令 为:“DirectoryIndex index.php index.html index.htm default.htm”。

(8)User 和 Group。User 用于设置服务器以哪种用户身份来响应客户端的请求。Group 用于设置将由哪一组来响应用户的请求。User 和 Group 是 Apache 安全的保证,千万不要把 User 和 Group 设置为 root。

(9)AddDefaultCharset。用于指定默认的字符集。在 HTTP 的回应信息中,若在 HTTP 头中未包含任何关于内容字符集类型的参数时,此指令将指定的字符集添加到 HTTP 头中,此 时将覆盖网页文件中通过 META 标记符所指定的字符集。命令用法为:“AddDefaultCharset 字 符集名称”。

Apache 默认的字符集为 ISO-8859-1,对于含有中文字符的网页,若网页中没有指定字符 集,则在显示中文的时候会出现乱码,解决的办法就是将默认字符集设置为 GB2312,其配置 命令为:“AddDefaultCharset GB2312”。

2.性能配置指令

一般情况下,每个 HTTP 请求和响应都使用一个单独的 TCP 连接,服务器每次接受一个

请求时,都会打开一个 TCP 连接并在请求结束后关闭该连接。若能对多个处理重复使用同一 个连接,则可减小打开 TCP 连接和关闭 TCP 连接的负担,从而提高服务器的性能。

(1)Timeout。用于设置连接请求超时的时间,单位为秒。默认设置值为 300,超过该时 间,连接将断开。若网速较慢,可适当调大该值。

(2)KeepAlive。用于启用持续的连接或者禁用持续的连接。其命令用法:“KeepAlive on|off”,配置文件中的默认设置为 KeepAlive on。

(3)MaxKeepAliveRequests。用于设置在一个持续连接期间允许的最大 HTTP 请求数目。

若设置为 0,则没有限制;默认设置为 100,可以适当加大该值,以提高服务器的性能。

(4)KeepAliveTimeout。用于设置在关闭 TCP 连接之前,等待后续请求的秒数。一旦接 受请求建立了 TCP 连接,就开始计时,若超出该设定值还没有接收到后续的请求,则该 TCP 连接将被断开。默认设置为 10 秒。

(5)控制 Apache 进程。对于使用 prefork 多道处理模块的 Apache 服务器,对进程的控 制,可在 prefork.c 模块中进行设置或修改。配置文件的默认设置如下。

<IfModule prefork.c>

StartServers 8 MinSpareServers 5 MaxSpareServers 20 MaxClients 150 MaxRequestsPerChild 1000

</IfModule>

在配置文件中,属于特定模块的指令要用<IfModule>指令包含起来,使之有条件地生效。

<IfModule prefork.c>表示如果 prefork.c 模块存在,则在<IfModule prefork.c>与</IfModule>之间 的配置指令将被执行,否则不会被执行。下面分别介绍各配置项的功能。

① Startservers

用于设置服务器启动时启动的子进程的个数。

② MinSPareservers

用于设置服务器中空闲子进程(即没有 HTTP 处理请求的子进程)数目的下限。若空闲 子进程数目小于该设置值,父进程就会以极快的速度生成子进程。

③ MaxSPareservers

用于设置服务器中空闲子进程数目的上限。若空闲子进程超过该设置值,则父进程就会 停止多余的子进程。一般只有在站点非常繁忙的情况下,才有必要调大该设置值。

④ Maxclient

用于设置服务器允许连接的最大客户数,默认值为 150,该值也限制了 httpd 子进程的最 大数目,可根据需要进行更改,比如更改为 500。

⑤ MaxRequestsPerChild

用于设置子进程所能处理请求的数目上限。当到达上限后,该子进程就会停止。若设置 为 0,则不受限制,子进程将一直工作下去。

3.日志配置指令

日志对于 Web 站点必不可少,它记录着服务器处理的所有请求、运行状态和一些错误或 警告等信息。要了解服务器上发生了什么,就必须检查日志文件,虽然日志文件只记录已经发

生的事件,但是它会让管理员知道服务器遭受的攻击,并有助于判断当前系统是否提供了足够 的安全保护等级。

(l)ErrorLog。用于指定服务器存放错误日志文件的位置和文件名,默认设置为:

“ErrorLog logs/error_log”。

此处的相对路径是相对于 ServerRoot 目录的路径。在 error_log 日志文件中,记录了 Apache 守护进程 httpd 发出的诊断信息和服务器在处理请求时所产生的出错信息。在 Apache 服务器 出现故障时,可以查看该文件以了解出错的原因。

(2)LogLevel。用于设置记录在错误日志中信息的数量,其中可能出现的记录等级依照 重要性降序排列,分别是:debug、info、notice、warn、error、crit、alert 和 emerg。

当指定了某个特定级别后,所有级别高于它的信息也将被记录在日志文件中。配置文件 中的默认配置级别为 warn,可根据需要进行调整。级别设置过低,将会导致日志文件的急剧 增大。以下是/var/log/httpd/error_log 记录中的部分内容。

[root@rh9 root]# more /var/log/httpd/error_log

[Mon Nov 09 14:11:01 2009] [notice] Digest: generating secret for digest authentication ...

[Mon Nov 09 14:11:01 2009] [notice] Digest: done

[Mon Nov 09 14:11:02 2009] [notice] Apache/2.0.40 (Red Hat Linux) configured -- resuming normal operations

[Mon Nov 09 14:11:21 2009] [warn] child process 6052 still did not exit, sending a SIGTERM [Mon Nov 09 14:11:21 2009] [warn] child process 6053 still did not exit, sending a SIGTERM [Mon Nov 09 14:11:21 2009] [notice] caught SIGTERM, shutting down

--More--(25%)

(3)LogFormat。此选项用来定义“CustomLog”指令中使用的格式名称,以下是系统默

(3)LogFormat。此选项用来定义“CustomLog”指令中使用的格式名称,以下是系统默

相關文件