建立Linux下的Web服务器可以选用Netscape的Enterprise Server,或者使用免费软件Apache。 Netscape可以完全支持基于IP的虚拟主机,但对基于域名的虚拟主机却不支持,因此只能显示最外面的一层网页。基于IP的虚拟主机需要一个独立的IP;基于域名的虚拟主机,可以多个虚拟主机共用一个IP。利用HTTP 1.1协议,靠不同的域名来区分可以大大节省IP地址资源。Apache完全支持以上两种虚拟主机方式,并且克服了Netscape经常出现服务塞死的现象。Apache是目前互联网上使用广泛的Web服务器。下面详细讲解如何利用Apache来架设自己的Web服务器。
安装
首先我们要介绍Apache的安装过程。
第一,先到http://www.apache.org下载最新版本的Apache。如果是在Windows下,把该文件下载在C盘,C盘在Linux中对应于/dev/hda1。
第二,进入Linux,并以 root 的身份登录并进行挂接文件系统。
# mkdir c
# mount -t vfat /dev/hda1 /c
因为我们将Apache的源码放置于c盘,所以现在要先把它挂载至新建的目录/c里面。
第三,把此程序拷贝到/tmp下,以便操作。
#cp /c/apache_1.3.9.tar.gz /tmp
注意:Linux下所有的文件名都是区分大小写的。接下来,我们就要把源码从压缩包中解压缩出来。相应的命令为:
#cd /tmp
#tar zxvf apache_ 1.3.9.tar.gz
解压缩后进入存放源码的目录,使用编译配置脚本进行环境的设置。
#cd /tmp/apache_1.3.9
#./configure--sysconfdir=/etc/httpd
--datadir=/home/httpd
--logfiledir=/var/log/httpd
--enable-module=most
--enable-shared=max
--disable-rule= WANTHSREGEX
这里告诉Apache把配置文件保存在/etc/httpd目录中,其它文件(例如HTML手册文档、CGI-BIN目录)都保存在 /home/httpd目录下。也告诉Apache将最常用的模块作为DSO模块编译。DSO就是Dynamic Shared Object的缩写。通过DSO支持的模式编译Apache,能够随时从Apache里面增加和移除模块,而不需要重新编译它,具体的模块见下文。
第四,在执行./configure 之后,配置脚本会自动生成 Makefile。这时,我们就可以开始编译源码了。
#make
源码编译完成后,就要使用make install安装Apache至缺省的目录下。当然也可以通过以下命令:
#rpm -ivh apache*.rpm
安装Apache的RPM包。这种方法较为简单,因此不再详细介绍。
配置
安装完Apache后,开始它的配置工作。在其主目录下有httpd.conf、aclearcase/" target="_blank" >ccess.conf、srm.conf 及Magic等四个文件,其中httpd.conf是主要的配置文件,access.conf是访问控制配置文件,srm.conf 则是对于Web主机的文件资源的配置文件。Magic是针对mime模块的设置,我们一般不改动这个文件。
在Apache运行的时候,它先调用httpd.conf,接着是srm.conf,最后是access.conf。在较新的Apache发行版本中,它建议srm.conf和access.conf 两个文件的内容为空,把设置选项完全存放在httpd.conf之中,这样会更加有利于服务器的安全性。
下面就以httpd.conf来开始我们神奇的Web网络世界。
1.全局环境变量的设置
httpd.conf是以全局环境变量的设置开始的。我们将要一步步介绍其具体的参数。
ServerType standalone
ServerRoot "/etc/httpd"
第一行“ServerType”指令,说明Apache是以一个独立的(Standalone)守护进程的身份运行于后台,还是由另外的后台守护进程(Xinetd)在接到HTTP请求的时候唤醒。对于正式的互联网站点来说,standalone可以提供比xinetd方式更快的客户端响应速度。因此我们选用standalone模式。第二行代码介绍了该服务器配置文件的相对根目录,一般是/etc/httpd,我们在安装时已经设置好。请注意,不要在此目录最后加“/”。
LockFile /var/lock/httpd.lock
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
LockFile在安装Apache时指定选用了USE_FCNTL _SERIALIZED_ACCEPT,USE_FLOCK_SERIALIZED_ACCEPT等参数。作为Apache连接出现错误的记录文件,它会把进程的PID值自动加在该文件中。请注意,该文件应保存在本地的硬盘中。PidFile记录着每次服务器运行时的进程号。ScoreBoardFile是某些特定系统上服务程序中父子进程通讯记录的文件。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
以上两项是指定服务器资源及控制权限的文件,在默认情况下并不使用它们。
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
这四项设定了服务器的连接属性。第一行说明了TCP中ack的响应时间为300秒;第二项表示是否保持服务响应的连接;紧接着的两项定义了这种连接的最大响应数目及响应时间。如果MaxKeepAliveRequests设为0,那它便是unlimited,当然这就要考虑系统的承载能力了。
MinSpareServers 5
MaxSpareServers 20
StartServers 8
这三项定义了服务程序的最小、最大空的子进程数目及服务程序开始时的进程数。5、20、8分别是它们的默认数值。
MaxClients 150
MaxRequestsPerChild 100
以上两行定义了同一时刻最多的客户连接数目和每个连接的子进程数。
Listen 3000
Listen 12.34.56.78:80
BindAddress *
这里定义了服务程序监听来自以上IP、端口号的Request。由于BindAddress只支持*(代表所有的IP),所以产生了Listen这个参数以便更灵活地处理客户机的响应。
ExtendedStatus On/Off
这条指令说明了是否跟踪服务程序所产生的扩展状态。
以下是对于DSO的支持,分别利用了LoadModule、AddModule参数。我们可以阅读表1,加载自己所需要的模块。
2.主服务器设置
下面设置主服务器(非虚拟服务主机)。
Port 80
这个参数给出了服务程序开启监听的端口号为80。
User nobody
Group nobody
ServerAdmin root@localhost
ServerName localhost
上面的第一、二行代表了打开服务进程的用户名和用户组名。第三、四行则是管理员的邮件地址和此服务器的主机名。
DocumentRoot "/home/httpd/html"
DirectoryIndex index.html index.htm index.shtml index.cgi
UserDir public_html
Apache组件 | 中文注解信息 |
Core | Apache的核心特点 |
mod_access | 基于主机名或IP地址的存储控制 |
mod_actions | 基于文件类型/方式的脚本的执行 |
mod_alias | 别名和重定向 |
mod_asis | 处理文件.asis |
mod_auth | 使用文本文件的用户认证 |
mod_auth_anon | FTP风格的匿名认证 |
mod_auth_db | 使用berkeley的DB文件进行用户认证 |
mod_auth_dbm | 使用DBM的文件进行用户认证 |
mod_autoindex | 自动列出目录 |
mod_browser | 基于用户端字符串的环境设定。在Apache1.3或更高版本中用mod_setenvif代替 |
mod_cern_meta | 支持http开头的图元文件 |
mod_cgi | 支持cgi脚本的执行 |
mod_cookies | 支持网景的cookies功能。在Apache1.2中被mod_usertrack代替 |
mod_digest | MD5认证 |
mod_dir | 基本目录索引得控制 |
mod_did | 启动时载入可执行文件到服务器的功能。在Apache1.3中被mod_so代替 |
mod_dll | 在1.3b6中被mod_so代替 |
mod_env | 传递环境信息到cgi脚本中 |
mod_example | 演示Apache API |
mod_expires | 对有文件应用过期选项 |
mod_headers | 加入任意的http头文件 |
mod_imap | 影像地图档的控制 |
mod_include | 服务器端剖析文档 |
mod_info | 服务器端配置信息 |
mod_isapi | 对Windows isapi扩展支持 |
mod_log_agent | 客户端使用者程序纪录 |
mod_log_common | 标准的一般记录档案格式的日志。在Apache1.2或更高的版本中被mod_log_config模块代替 |
mod_log_config | 对服务器端请求,使用用户端指定的格式,代替mod_log_common的用户可配置日志 |
mod_log_referer | 纪录文档指南 |
mod_mime | 通过文件名决定文件类型 |
mod_mime_magic | 通过“神奇的数字”来决定文件类型 |
mod_mime_magic | 通过“神奇的数字”来决定文件类型 |
mod_mmap_static | 为了提高服务速度映射文件到内存 |
mod_negotiation | 内容协商 |
mod_poxy | 支持代理缓存的功能 |
mod_rewrite | 通过使用规则的表达式来实现强大的url到文件名的映射 |
mod_setenvif | 基于客户端信息的环境变量的设置 |
mod_so | 试验性的在执行时支持转载模块(Windows中的dlls) |
mod_speling | 自动监视upl中的正确性 |
mod_status | 服务器状态显示 |
mod_userdir | 用户的home目录 |
mod_unique_id | 对每个请求产生独立的请求标识符 |