WEB服务器是互联网最基本的服务之一,几乎所有的公司都拥有自己的主页,以方便客户浏览和查看公司信息,同时,交互式的Web还可以提供与客户之间的信息交互,提高公司的影响及业务能力。本节主要介绍Linux下Web服务器的基本原理及其配置方法。
本章第1节主要介绍Web服务器的基本原理,介绍客户端和服务器是如何进行交互的,当前Internet中主流的Web服务器应用软件及其各自的特点,最后,对Linux下应用最为广泛的Web服务器软件APACHE作了详细介绍。
本章第2节主要介绍如何配置Linux下的APACHE服务器,包括图形界面下和文本模式下的配置过程。
本章第3节以一个具体实例介绍如何配置Linux下的APACHE服务器,按照这一过程,读者可以一步步地完成一个APACHE的配置。
16.1 Web服务工作原理
16.1.1 基本概念
1.资源设定
如图16-1所示为Web浏览的C/S工作模型。WWW 服务器提供一些重要数据,这些数据需要在客户端的浏览器中支持显示。服务器启动Web服务,拥有可供浏览的资源,客户端使用可解析服务器信息的浏览器查看资源,同时向服务器端请求需要的资源,服务器和客户端即通过这一方式实现信息的交互。
服务器所提供的资源其实就是一些文件,因此,管理员必须在服务器端先将数据文件写好,并放置在某个特殊的目录底下,这个目录就是整个网站的首页位置。在Linux操作系统中,这个目录默认为/var/www/html/或者是/srv/www/。
另外,客户端必须在浏览器的"网址栏"输入所需要的网址才行。这个网址格式如下所示:
<协议>://<主机地址或主机名称>[:port]/<目录资源>
这就是经常使用的URL(Uniform Resource Locator),其包括以下几个部分。
协议 常见的协议有http、https、ftp和telnet等。此协议告知浏览器"请使用此协议连接到主机"。
主机地址或主机名称 就是主机在因特网所在的IP位置(可以使用可解析的域名)。
端口 客户端的请求在服务器上的端口位置,一般来说,一个服务默认配置要启动一个系统端口,如Web默认为80,FTP默认为21,如果使用http协议,且服务器默认使用端口是80,则可以不输入此端口号,但如果是其他端口,如8080,则需要输入端口号。
目录资源 首页目录下的相对位置就是目录资源。例如,某网站数据放置在主机的 /var/www/html/目录中,则有如下内容:
http://www.embedded.com 对应/var/www/html/ http://www.embedded.com/linux_basic/index.asp对应/var/www/html//linuxbasic/ind ex.asp
1.1.HTTP 协议中的8种动作(方法)
2.Web服务器分类
WWW服务器的类型有WWW平台和网页程序语言与数据库(LAMP)。而目前WWW服务器软件主要有Apache与IIS,Apache是自由软件,可以在任何操作系统上安装,IIS是Windows下的,仅能在Windows操作系统上安装与执行。目前Internet提供WWW数据的主机大致上可以分为两种。
(1)仅提供使用者浏览的静态网页。这种类型的网站大多是静态网页,最多加一些动画图示,即仅提供浏览,服务器不需要与客户端互动,用户可以浏览数据,但无法进行信息交互,如数据的上传。
(2)提供使用者互动接口的动态网站。这种类型的网站可以让服务器与使用者互动,常见的有讨论区论坛与留言版。此类型的网站基于网页程序语言来达成与使用者互动的行为,常见的有PHP网页程序语言,配合MySQL数据库系统来进行数据的读、写。一个动态网站必须包括以下内容。
支持的操作系统。所需要的软件都能够安装执行。
可运作的WWW服务器。如Apache与IIS。
网页程序语言。如perl、PHP、Java、CGI、ASP 等。
数据储存之数据库系统。包括MySQL、MSSQL、以及Oracle等。
在整个平台设计中,目前常见的有两大系统,一个是Linux 操作系统平台下的,由Apache+MySQL+PHP组成,这个系统被称为LAMP ;另一个则是微软的IIS+SQL+ASP(.NET)服务器。
3.SSL及CA
HTTP传输协议传输数据是以明文方式传送的,所以用户的任何数据封包都可能被监听窃取,为了提高系统的安全性,就需要用到https协议,这种方式是采用了SSL(Secure Socket Layer)加密的机制。
Secure Socket Layer利用非配对的key pair(Public + Private key)来组成密钥,然后使用公钥加密后传输,目标主机再以私钥来解密,这样,在Internet上传输的数据为密文。相对来说,这些数据就比较安全,SSL就是在WWW广泛使用的加密方式。
要使用安全协议,WWW服务器必须要启动https传输协议,而浏览器则必须在网址列输入https://开头的网址,两者才能够进行沟通与联机。
Certificate Authorities(CA)是一个公认的公正单位,用户可以向其注册一个public key,客户端浏览器在浏览资源时,会主动地向CA单位确认该public key是否为合法注册过的(从而避免第3方欺骗行为),如果是的话,该次联机才会建立,如果不是,浏览器就会发出警告信息,告知使用者应避免建立联机。SSL和CA的更多信息请参阅以下网站。
SSL: CA:
16.1.2 APACHE2.0新特点
1.核心的增强
(1)新的编译系统:重写了原来的编译系统,现在是基于autoconf和libtool的, 使得Apache的配置系统与其他软件包更加相似。
(2)多协议支持:Apache现在已经拥有了能够支持多协议的底层构造。
(3)对非UNIX平台更好的支持:Apache 2.0在诸如BeOS,OS/2和Windows等非UNIX平台上有了更好的速度和稳定性。随着平台特定的multi-processing modules(MPMs)和 Apache Portable Runtime(APR)的引入,Apache在这些平台上的指令由它们本地的API指令实现,杜绝了以往使用POSIX模拟层造成的漏洞和性能低下现象。
(4)新的Apache API:2.0中模块的API有了重大改变。很多1.3中模块排序/模块优先级的问题已经不复存在了。2.0自动处理了很多这样的问题,模块排序现在用per-hook的方法进行,从而拥有了更多的灵活性。另外,增加了新的调用以提高模块的性能,而无需修改Apache服务器核心。
(5)IPv6支持:在所有能够由Apache Portable Runtime库提供IPv6支持的系统上, Apache默认获得IPv6侦听套接字。另外,Listen、NameVirtualHost和VirtualHost 指令支持IPv6的数字地址串(如"Listen [fe80::1]:8080")。
(6)过滤:Apache的模块现在可以写成过滤器的形式,当内容流经它到服务器或从服务器到达的时候进行处理。例如,可以用mod_include中的INCLUDES 过滤器将CGI脚本的输出解析为服务器端包含指令。mod_ext_filter允许外部程序充当过滤器的角色,就像用CGI程序做处理器一样。
(7)多语种错误回报:返回给浏览器的错误信息现在已经用SSI文档实现了多语种化。管理员可以利用此功能进行定制以达到观感的一致。
(8)简化了的配置:很多易混淆的配置项已经进行了简化。经常产生混淆的Port和BindAddress配置项已经取消了,用于绑定IP地址的只有Listen指令,ServerName 指令中指定的服务器名和端口仅用于复位和虚拟主机的识别。
(9)本地Windows NT Unicode支持:Apache 2.0在Windows NT上的文件名全部使用utf-8编码。这个操作直接转换成底层的Unicode文件系统,由此为所有以Windows NT(包括Windows 2000和Windows XP)为基础的安装提供了多语言支持。这一支持目前尚未涵盖Windows 95/98/ME系统,因为它们仍使用机器本地的代码页进行文件系统的操作。
(10)正则表达式库更新:Apache 2.0包含了兼容Perl的正则表达式库(PCRE)。所有的正则表达式现在都使用了更为强大的Perl 5的语法。
(11)UNIX线程:在支持POSIX线程的UNIX系统方面,现在Apache能在混合多进程、多线程模式下运行,使很多(但不是全部的)配置的可扩缩性得到改善。
2.模块的增强
(1)mod_ssl。Apache 2.0的新模块。此模块是一个面向OpenSSL提供的SSL/TLS加密协议的一个接口。
(2)mod_dav。Apache 2.0中的新模块。此模块继承了HTTP分布式发布和版本控制规范,用于发布和维护web内容。
(3)mod_deflate。Apache 2.0中的新模块。此模块允许支持此功能的浏览器请求页面内容在发送前进行压缩,以节省网络带宽。
(4)mod_auth_ldap。Apache 2.0.41中的新模块。此模块允许使用LDAP数据库存储HTTP基本认证所需的信息。随之而来的另一个模块mod_ldap则提供了连接池和结果的缓冲。
(5)mod_auth_digest。利用共享内存实现了对跨进程的session缓冲的额外支持。
(6)mod_charset_lite。Apache 2.0中的新模块。这个试验模块允许针对字符集的转换和重新编码。
(7)mod_file_cache。Apache 2.0中的新模块。这个模块包含了Apache 1.3中mod_ mmap_static模块的功能,另外进一步增加了缓冲能力。
(8)mod_headers。此模块在Apache 2.0中更具灵活性。现在,它可以更改mod_proxy使用的请求头信息,并可以有条件地设置回复头信息。
(9)mod_proxy。代理模块已经被完全重写,以充分利用新的过滤器结构的优势,从而实现一个更为可靠的兼容HTTP/1.1的代理模块。另外,新的<Proxy> 指令提供了更具可读性(而且更快)的代理站点控制;同时,已经不再支持重载<Directory "proxy:...">指令的方法。这个模块现在依照协议支持分为proxy_connect、proxy_ftp和proxy_http 3个部分。
(10)mod_negotiation。新的ForceLanguagePriority指令可以确保在所有情况下客户端都收到单一的一个文档,以取代不可接受或多选择的回应。另外,negotiation和MultiViews算法已经进行了优化,以提供更完美的结果,并提供了包括文档内容的新型类型表。
(11)mod_autoindex。经自动索引后的目录列表现配置为使用HTML表格,从而使格式更清晰,而且允许更为细化的排序控制,包括版本排序和通配符过滤目录列表。
(12)mod_include。新的指令集允许修改默认的SSI元素的开始和结束标签,而且允许以主配置文件里的错误提示和时间格式的配置取代SSI文档中的相应部分。正则表达式(现在已基于Perl的正则表达式语法)的解析和分组结果可以用mod_include的变量 $0 .. $9获得。
(13)mod_auth_dbm。现在可以使用AuthDBMType支持多种类似DBM的数据库。
16.2 配置RedHat Linux下APACHE服务器
16.2.1 Linux下APACHE软件包组件介绍
在使用APACHE软件包组件之前,请确保当前系统已经安装了这一组件,其命令如下:
[[email protected] root]# rpm -qa |grep httpd httpd-2.0.40-21 //服务器 redhat-config-httpd-1.0.1-18 //图形用户界面管理 httpd-manual-2.0.40-21 //手册
APACHE主要配置文件及目录说明如下所示。
(1)/etc/httpd/conf/httpd.conf。这是APACHE的主要配置文件。
(2)/usr/lib/httpd/modules/目录。Apache所支持模块的位置。
(3)/var/www/html/目录。默认主首页文件所在的目录,当输入http://localhost时所显示的数据位置。
(4)/var/www/error/目录。如果因为主机设定错误,或者是浏览器端要求的数据错误时,在浏览器上出现的错误信息位置。
(5)/var/www/icons/目录。这个目录提供Apache预设给予的一些小图示。
(6)/var/www/cgi-bin/目录。预设给一些可执行的CGI(网页程序)程序放置的目录。当用户输入http://localhost/cgi-bin/时所显示的数据所在。
(7)/var/log/httpd/目录。预设的Apache登录档文件位置。
(8)/usr/sbin/apachectl。Apache的主要执行文件。
(9)/usr/sbin/httpd。Apache二进制执行文件。
(10)/usr/bin/htpasswd。Apache密码保护文件,当用户在某些网页需要输入账号与密码时,Apache本身提供一个最基本的密码保护方式,该密码的产生就是透过这个指令来完成的。
16.2.2 图形界面下配置APACHE服务器
本节主要介绍如何在图形用户界面下配置APACHE服务器,要启动图形用户界面APACHE服务器配置工具,在shell提示符下输入"redhat-config-httpd"命令或者单击启动命令"开始-系统工具-服务设置-httpd服务"即可。使用HTTP配置工具来配置Apache HTTP服务器的一般步骤如下所示。
1.配置基本属性
在shell提示符下输入"redhat-config-httpd"命令打开如图16-2所示的Apache服务器基本配置界面,在此界面中可以设置以下主要参数。
(1)服务器名。文本字段中输入有权使用的完整域名。该选项和httpd.conf配置文件中的ServerName指令相对应。ServerName指令设置万维网服务器的主机名,它用来创建URL的重导向。如果当前没有定义服务器名称,万维网服务器会试图从系统中的IP地址来解析它。
(2)网主电子邮件地址。输入万维网服务器维护者的电子邮件地址。该选项和httpd.conf中的ServerAdmin指令相对应。如果配置服务器的错误页要包含电子邮件地址,该地址将会被用户用来向服务器的管理员提交问题。默认的值是[email protected]。
(3)可用地址。用来定义服务器接受进入连接请求的端口。该选项和httpd.conf中的Listen指令相对应。Red Hat默认配置Apache HTTP服务器在端口80上监听非安全万维网通信。单击"添加"按钮可以打开如图16-3所示的定义接受请求的其他端口窗口。如果选择"监听所有地址"选项,则本机所有IP地址(多个网络接口)接收到的请求将被接收,否则选择"地址"来指定服务器接受请求的地址。另外,读者可以在图16-3中指定监听的端口号,如果要指定低于1024以下的端口,必须为root用户。
2.配置默认主机参数
设置完成服务器基本参数后,单击"虚拟主机"选项卡打开如图16-4所示的"虚拟主机"配置界面,单击"编辑默认设置"将打开如图16-5所示的"虚拟主机属性"对话框。在此对话框中,主要设置"目录页搜寻列表"和"错误页码"两项,一般来说,"目录页搜寻列表"和"错误页码"中的默认值对于多数服务器都适用。
(1)目录页搜寻列表列出的项目定义DirectoryIndex指令。DirectoryIndex是用户通过在目录名后指定正斜线(/)来请求目录索引时由服务器提供的默认网页。
当某用户请求网页http://www.embedded.com时,服务器会试图寻找DirectoryIndex指令中列出的文件,并提供它找到的第1个文件。如果它没找到任何文件,并且Options Indexes为该目录设置,服务器就会生成并返回一个HTML格式的列表,列出该目录中的子目录和文件。因此,如果主页文件为asp文件类型,则需要将index.asp加放到此项。
(2)错误代号配置Apache HTTP服务器出现错误和问题时把客户重导向给本地或外部URL。该选项和ErrorDocument指令相对应。如果客户试图连接Apache HTTP服务器时出现了问题或错误,默认处理方式是显示"错误代号"列中的简单错误信息。
要取代默认配置,选择该错误代号,然后单击"编辑"按钮即可打开如图16-6所示的对话框。
选择"默认"来显示默认的简短错误信息。
选择"URL"来把客户重导向到一个外部 URL,并在"位置"字段中输入包括http://在内的 URL。
选择"文件"来把客户重导向到一个内部URL,并在万维网服务器的文档根下输入文件的路径。位置必须以斜线(/)开头,并相对于文档根的位置。
(3)在如图16-5所示界面下方的"默认错误页页脚"菜单中,可以选择下列选项之一。
显示页脚和电子邮件地址:在所有错误页中显示默认页脚的在ServerAdmin指令中指定的网站维护者的电子邮件地址。
显示页脚:在错误页的底部只显示默认的页脚。
无页脚:在错误页的底部不显示页脚。
如果读者想为不止一个URL或虚拟主机提供服务,则应添加额外的虚拟主机。
如图16-7所示为设置服务器日志记录位置对话框,服务器默认把传输日志写入 /var/log/httpd/access_log文件,把错误日志写入/var/log/httpd/error_log文件。
传输日志包含一个所有对万维网服务器连接企图的列表。它记录试图连接的客户的IP地址,试图连接的日期和时间,以及试图检索的万维网服务器上的文件。输入要贮存该信息的路径和文件名,如果路径和文件名不以斜线(/)开头,该路径就是相对于配置的服务器根目录而言的。
该选项与TransferLog指令相对应。
如图16-8所示的界面用来设置环境变量,为了CGI 脚本或服务器端嵌入(SSI)页,有时有必要修改环境变量。Apache HTTP服务器可以使用mod_env模块来配置被传递给CGI 脚本和 SSI 页的环境变量。
使用"为CGI脚本设置"部分来设置要传递给CGI脚本和SSI页的环境变量。譬如,要把环境变量MAXNUM设为50,单击"为CGI脚本设置"内的"添加"按钮,如图16-9所示,在"环境变量"文本字段内键入MAXNUM,在"要设立的值"文本字段内键入50,单击"确定"按钮。
使用"传递给CGI脚本"部分在服务器首次启动CGI脚本时传递环境变量值。要查看该环境变量,在shell提示下键入env命令。单击"传递给CGI 脚本"内的"添加"按钮,在弹出的对话框中输入环境变量的名称,单击"确定"把它添加到列表中。传递给CGI脚本部分配置PassEnv指令。
如果想删除某个环境变量,它的值就不会传递给CGI脚本和SSI页,使用"为CGI脚本取消设置"部分,单击其中的"添加"按钮,然后输入要取消设置的环境变量名称。它和UnsetEnv 指令相对应。
如图16-10所示,使用"目录"页来为指定目录配置选项,它与<Directory>指令相对应。单击右
上角的"编辑"按钮打开如图16-11所示对话框,为所有没有在下面"目录"列表中指定的目录配置"默认目录选项"。所选择的选项被列举在<Directory>指令内的Options指令中。用户可以配置下列选项。
ExecCGI 允许执行CGI 脚本。如果该选项没有被选,CGI脚本就不会被执行。
FollowSymLinks 允许追随符号链接。
Includes 允许服务器端嵌入。
IncludesNOEXEC 允许服务器端嵌入,但是在CGI脚本中禁用#exec和#include命令。
Indexes 如果请求的目录中不存在DirectoryIndex(如index.html),则显示目录内容格式化了的列表。
Multiview 支持content-negotiated mult- iviews,该选项被默认禁用。
SymLinksIfOwnerMatch 只有在目标文件或目录和链接的所有者相同时,才追随该符号链接。
要为指定目录指定选项,单击"目录"列表箱旁边的"添加"按钮,打开如图16-12所示的窗口,在窗口底部的"目录"文本字段内输入你要配置的目录,从右首的列表中选择选项,并用左边的选项配置Order指令,Order指令控制allow和deny指令被评价的顺序。在"允许主机来自"和"拒绝主机来自"文本字段内可以指定下列值之一。
允许所有主机 键入all以允许到所有主机的访问。
部分域名 允许所有名称匹配指定字符串或以指定字符串结束的主机的访问。
完整IP地址 允许到特定IP地址的访问。
子网 如192.168.1.0/255.255.255.0。
网络CIDR具体规范 如 10.3.0.0/16。
3.虚拟主机设置
管理可以使用HTTP配置工具来配置虚拟主机。虚拟主机允许为不同的IP地址、主机名或同一机器上的不同端口运行不同的服务器。例如,可以在同一个万维网服务器上使用虚拟主机来运行http://www.embedded1.com 和 http://www. Embedded2.com 这两个网站。图16-13所示为虚拟主机设置界面,对于默认的虚拟主机和基于IP的虚拟主机,该选项和<VirtualHost>指令相对应,对于基于名称的虚拟主机,该选项和 <NameVirtualHost> 指令相对应。
要添加虚拟主机,在图16-13中单击"添加"按钮打开如图16-14所示的虚拟主机参数设置对话框。
常规选项 设置只应用于正在配置的虚拟主机。在"虚拟主机名"文本字段内设置虚拟主机的名称。该名称被HTTP配置工具用来区别不同的虚拟主机。
文档根目录 设为包含该虚拟主机根文档(如index.html)的目录。该选项和<VirtualHost>指令内的DocumentRoot指令相对应。默认的DocumentRoot是/var/ www/html。
网主电子邮件地址 和VirtualHost内的ServerAdmin指令相对应。如果选择了要在错误页里显示页脚和电子邮件地址,该地址被用在错误页内的页脚上。
在"主机信息"部分可以选择"默认虚拟主机"、"基于IP的虚拟主机"或"基于名称的虚拟主机"。
默认虚拟主机 当请求的IP地址没有在另一个虚拟主机中确切列出时,默认的虚拟主机就会被使用。如果默认虚拟主机没有被定义,主服务器设置就会被使用。
基于IP的虚拟主机 一个根据服务器的IP地址来配置<VirtualHost>指令的屏幕就会出现。在"IP地址"字段内指定IP地址,要指定多于一个IP地址,用空格把它们分开。要指定端口,使用IP Address:Port格式。在"服务器主机名称"字段中指定虚拟主机的主机名。
基于名称的虚拟主机 如果选择了"基于名称的虚拟主机",一个根据服务器的主机名称来配置NameVirtualHost指令的窗口就会出现。
4.SSL设置
如图16-15所示,设置服务器的SSL信息,如果Apache HTTP服务器没有配置SSL支持,Apache HTTP服务器和它的客户之间的通信就不会被加密,这对于不包括私人或保密信息的网站来说是可行的,然而,索求信用卡信息的电子商务网站就应该使用Apache SSL支持来加密通讯。启用Apache SSL支持会启用mod_ssl安全模块。
另外,需要强调的是,不可以在SSL中使用基于名称的虚拟主机,因为SSL握手(浏览器接受安全万维网服务器的证书时)发生在识别正确的基于名称的虚拟主机的HTTP请求之前。
5.服务器设置
如图16-16所示为"服务器"设置,用来配置基本的服务器设置,其包括以下参数设置。
锁文件 与LockFile指令相对应。在服务器使用USE_FCNTL_SERIALIZED_
ACCEPT 或USE_FLOCK_SERIALIZED_ACCEPT编译时,该指令把路径设为锁文件所用的路径。它必须贮存在本地磁盘上。
PID 文件 与PidFile指令相对应。该指令设置服务器记录进程 ID(PID)的文件。该文件应该只能够被根用户读取。
核心转储目录 与CoreDumpDirectory指令相对应。Apache HTTP服务器在转储核心前会试图转换到该目录中,默认值是ServerRoot。然而,如果运行服务器的用户所使用的身份没有到该目录的写权限,核心转储就无法被写入。
用户 与User指令相对应。它设置服务器回答请求所用的userid。用户的设置决定服务器的访问权限,该用户所无法访问的文件,网站来宾也不能够访问。默认的User是apache。
6.调整性能
如图16-17所示为"调整性能"设置,主要用来配置使用的服务器子进程的最大数量,以及客户连接方面的Apache HTTP服务器选项。读者可以直接选择默认设置。
最多连接数量 为服务器能够同时处理的客户请求的最多数量。服务器为每个连接创建一个httpd子进程,进程数量达到最大限度后,直到某子进程结束,万维网服务器才能够接受新客户连接。
连接超时 定义服务器在通信时等候传输和回应的秒数。
每次连接最多请求数量 为每个持续连接所允许的最多请求次数。默认值为100,这应该在多数情况下都适用。该选项与MaxRequestsPerChild 指令相对应。
7.启动服务
完成配置后单击"确定"即可保持配置,所有设置信息将写入httpd配置文件中,此时,要重新启动服务,命令如下:
[[email protected] root]# /etc/rc.d/init.d/httpd restart
至此,所有配置基本完成,以下总结一下配置过程。
(1)打开配置图形界面,配置基本设置。
(2)在"虚拟主机"下配置默认设置。
(3)在"虚拟主机"下配置默认的虚拟主机。
(4)如果想为不止一个URL或虚拟主机提供服务,则需要添加额外的虚拟主机。
(5)在"服务器"下配置服务器设置。
(6)在"调整性能"标签下配置连接设置。
(7)把所有必要的文件复制到DocumentRoot和cgi-bin目录中。
(8)退出程序并保存设置。
16.2.3 APACHE服务器文件说明
文件/etc/httpd/conf/httpd.conf是APACHE主要配置文件,如果读者希望通过文件方式配置APACHE服务器,则只需要修改此文件的参数。以下分几个部分介绍这一配置文件内容。
1.全局参数设置
全局参数说明如下:
[[email protected] root]# cat /etc/httpd/conf/httpd.conf ### Section 1: Global Environment ServerTokens OS //当服务器响应主机头信息时显示Apache的版本 //和操作系统 ServerRoot "/etc/httpd" //设置相对根目录路径,即配置文件和日志文件 //相对路径 #ScoreBoardFile run/httpd.scoreboard PidFile run/httpd.pid //设置运行Apache时PidFile的路径 Timeout 300 /若300S后没有收到数据断开链接 KeepAlive Off //是否允许保持连接 MaxKeepAliveRequests 100 //客户机一次请求连接能够响应的请求数 KeepAliveTimeout 16 //在保持连接功能时,相信连接超过16s,则断开 StartServers 8 //设置启动时运行的进程数 MinSpareServers 5 //最小空闲进程数 MaxSpareServers 20 //最大空闲进程数 MaxClients 160 //同一时间最大连接数 MaxRequestsPerChild 1000 //每个子进程在结束处理请求前能处理的连接数 Listen 12.34.56.78:80 Listen 80 //设置监听的IP地址和端口号(改成其他端口, //则访问的时候需要使用端口号,默认为80) //对于有多个IP地址时很有必要
2.主服务信息设置
主服务信息设置配置内容如下:
…… ###Section2:‘Main‘server configuration User apache //运行Apache的用户 Group apache //运行Apache的组 ServerAdmin /设置网络管理员E-mail地址 ServerName linux.yangzd.com:80 //设置主机名称,即域名 #ServerName 172.25.0.112:80 UseCanonicalName Off DocumentRoot "/var/www/html" //设置主目录 //设置目录访问权限 <Directory /> Options FollowSymLinks /允许符号链接跟随,访问不在本目录下的文件 AllowOverride None //禁止覆盖操作 </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <LocationMatch "^/$> Options -Indexes ErrorDocument 403 /error/noindex.html </LocationMatch>
<IfModule mod_userdir.c>
UserDir disable
</IfModule>
#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
//设置默认文件
DirectoryIndex index.html index.html.var
AccessFileName .htaccess //设置保护目录配置文件的名称
<Files ~ "^\.ht"> //拒绝访问的文件名称
Order allow,deny
Deny from all
</Files>
TypesConfig /etc/mime.types //指定负责处理MIME对应格式的配置文件的存放位置
DefaultType text/plain //指定默认的MIME文件类型为纯文本或HTML文件
<IfModule mod_mime_magic.c> //如果mod_mime_magic.c文件加载,指定Magic信息码位置
# MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>
HostnameLookups Off //是否记录访问者的IP地址和主机名
ErrorLog logs/error_log //设置错误日志文件记录位置
LogLevel warn //记录错误信息的级别
//日志文件的格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined //设置访问日志文件
#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
#CustomLog logs/access_log combined
//设置Apache产生的页面中使用Apache服务器的版本签名
ServerSignature On
//创建虚拟目录及权限
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /manual "/var/www/manual"
<Directory "/var/www/manual">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule>
<Directory "/var/www/cgi-bin"> //cgi目录的访问权限
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
//设置自动生成目录列表的显示方式
IndexOptions FancyIndexing VersionSort NameWidth=*
//配置以下参数用于告之服务器在遇到不同的文件类型时采用的MIME编码格式
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
……
//默认图标
DefaultIcon /icons/unknown.gif
//当服务器自动列出目录时,在所生成的页面之后显示README.html文件
ReadmeName README.html
//当服务器自动列出目录时,在所生成的页面之前显示HEADER.html文件
HeaderName HEADER.html
//实现在线解压.z.gz.tgz文件
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
//设置网页类型的种类
AddLanguage da .dk
……
//当启动内容协商时,设置显示语言的先后顺序
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
ForceLanguagePriority Prefer Fallback
//设置默认的字体
AddDefaultCharset ISO-8859-1
//添加其他字体
AddCharset ISO-8859-1 .iso8859-1 .latin1
……
AddCharset GB2312 .gb2312 .gb //中文字体
……
//添加新的类型
AddType application/x-tar .tgz
//设置对某些扩展名和处理方式
AddHandler imap-file map
AddHandler type-map var
//使用过滤器执行SSI
AddOutputFilter INCLUDES .shtml
//错误页面别名
Alias /error/ "/var/www/error/"
<IfModule mod_negotiation.c>
<IfModule mod_include.c>
<Directory "/var/www/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback
</Directory>
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var //错误页面位置
……
</IfModule>
</IfModule>
//浏览器配置类型
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
……
3.虚拟主机参数设置
配置虚拟主机参数如下:
…… ### Section 3: Virtual Hosts #<VirtualHost *> # ServerAdmin # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost>
要完成服务配置,读者还需向相应目录添加可浏览资源,重新启动服务后,客户端才能正常访问服务器并浏览系统资源。
16.3 APACHE服务配置实例
16.3.1 系统要求
在同一台主机上配置两个基于域名的WEB服务器,域名分别为test.embedded.com和web.embedded.com,使用这两个域名分别访问本机(10.216.1.2)目录/var/www/html和/var/www/html1/下的主页文件index.html文件。域名服务器为10.216.1.2,它进行两个域名的解析工作。因为本域名并没有在公网上注册,因此,用户需要将客户端的DNS服务器设置成为10.216.1.2。
16.3.2 配置流程
1.添加网页文件
WEB服务器最主要的功能就是向用户提供可供浏览的资源文件,因此,用户在配置服务器之前,请确保当前系统存在两个主页目录及文件信息。
[[email protected] root]#mkdir/var/www/html1/ //创建test.embedded.com主页目录 [[email protected] root]#ls/var/www/html //主页文件信息 index_files index.html usage [[email protected] root]#ls/var/www/html1 //web.embedded.com主页目录 index_files index.html
2.图形界面下配置
(1)在Shell提示符下输入"redhat-config-httd"命令打开如图16-18所示的Apache主参数设置界面设置"服务器名"和"网主电子邮件地址",其他选项采用默认设置。
(2)选择"虚拟主机"选项卡,打开虚拟主机设置,单击"添加"按钮打开如图16-19所示的虚拟主机参数设置,在"虚拟主机名"文本框内设置虚拟主机名称,在"文档根目录"文件框内输入当前WEB服务器的主页目录"/var/www/html"。
(3)在"主机信息"选项中选择"基于名称的虚拟主机"项,即以域名方式,在"IP地址"输入IP地址"10.216.1.2",在"主机名称"输入域名"web.embedded.com"。
(4)如图16-20所示,按照同样方式设置另一个虚拟主机,其基本属性设置如图16-20所示。设置完成后,返回到如图16-21所示的虚拟主机列表界面(作者将默认虚拟主机删除)。其他所有参数保持默认设置,然后单击"确定"按钮保存设置并返回。
(5)完成以上设置后,重新启动HTTPD服务。
[email protected] root]# cat /etc/rc.d/init.d/httpd restart
16.3.3 测试
在客户端使用域名浏览服务器测试的情况如下所示。在测试之前,请确保本机DNS服务器地址能进行供两个域名的解析。
C:\>ipconfig /all Ethernet adapter 本地连接: …… IP Address. . . . . . . . . . . . : 10.216.1.9 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 10.216.1.1 DHCP Server . . . . . . . . . . . : 10.200.16.1 DNS Servers . . . . . . . . . . . : 10.216.1.2 ……
设置完成后,以域名web.embedded.com访问网页的情况如图16-22所示。以域名test.embedded.com访问网页的情况如图16-23所示。
参考: http://book.51cto.com/art/200811/96744.htm