现在在Internet上最热门的服务之一就是WWW(World Wide Web)服务。如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB服务器上,当然你可以使用一些免费的主页空间来发布。但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的LINUX主机上。然后,在LINUX主机上架设一个WEB服务器。你就可以将主页存放在这个自己的WEB服务器上,通过它把自己的主页向外发布。
4.1 选择和安装WEB服务器软件
目前,在世界各地有许多公司和学术团体,根据不同的计算机系统,开发出不同的服务器,如Apache、CERN、Microsoft Internet Information System、NCSA、WebSite等。它们各有所长。而在许多LINUX的发行版本中,已经集成了一个免费的、使用广泛的、技术成熟的WEB服务器软件Apache。
笔者经过实际的试用,发觉Apache与LINUX的配合还是十分理想的,所以在此笔者就具体地介绍一下Apache在Red Hat Linux 6.0下的配置与实现。
如果我们在安装LINUX的选择启动进程中选中httpd选项。这样Apache就会将自动完成安装,并且能够满足日常的应用需要,我们只需要进行一些更具体的设置工作就行了。
4.2 Apache的组成
在Red Hat Linux 6.0中,Apache将自己的所有配置文件和日志文件放在了“/etc/httpd”目录下,其中“/etc/httpd/conf”下为配置文件,“/etc/httpd/log”下为日志文件。
同时,它将建立“/home/httpd”目录,并在其下建立三个子目录:“html/”:在这个目录下存放HTML(主页)文件;“cgi-bin/”:在这个目录下可以存放一些CGI程序;“icons/”:在这个目录下是服务器自带的一些图标。
4.3 Apache的设置
Apache服务器软件的配置文件主要有:“access.conf”:用于设置系统中的存取方式和环境;“httpd.conf”:用于设置服务器启动的基本环境;“srm.conf”:主要用于做文件资源上的设定;“mime.type”:记录Apache服务器所能识别的MIME格式。
在具体讲解之前,我们必须告诉大家,LINUX系统已经在安装时就采用了一系列的缺省值,而大家可以根据下面的讲解来理解这些设置的意义,然后根据自己的实际情况做一些细微的调整,以更加适合于你的具体应用。
4.3.1 access.conf的配置
当我们使用“vi”来打开它的时候,我们会发现,就象LINUX一样,内容十分繁多,看得人头晕眼花的。请大家一定要明确,凡是最前面是以“#”号开头的,表示这一行是注释语句,是帮助大家理解文件内容的,而不是配置文件本身。在下面的讲解中,我们也将把这些注释语句略去不说。
该文件的第一段非注释部分如下:
Option Indexes Includes ExecCGI FollowSymLink
AllowOverride None
Order allow , deny
allow from all
大家应该注意到,这一个部分是以开始,以结束的。这表示在其中间的部分都是针对指定目录――“/home/httpd/html”而言的。
1.Option命令有很多的参数,各个参数的意义如下所示:
All:准许以下所有功能(MultiViews除外);
MultiViews:准许内容协商的Multiviews;
Indexes:若该目录下无index文件,则准许显示该目录下的文件以供选择;
IncludesNOEXEC:准许SSI(Server-side Includes),但不可使用#exec和#include功能;
Includes:准许SSI;
FollowSymLinks:准许符号链接到其他目录;
ExecCGI:准许该目录下可以使用CGI。
2.而AllowOverride命令则是用来决定是否准许在“access.conf”文件中设定的权限是否可以被在文件“.htaccess”中设定的权限覆盖。它有两个参数:
All 准许覆盖;None 不准许覆盖。
3.Order命令:用来设定谁能从这个服务器取得控制。它也有两个参数:
allow 可以取得控制;deny 禁止取得控制。
现在我们一起来看看关于目录“/home/httpd/html”的设置的含义:它使得这个目录,如果不存在index.htm文件时,列出目录信息以供选择,准许SSI,允许执行CGI程序,开启了动态连接。它不允许再使用在文件“.htaccess”中设定来覆盖这里所设置的权限。使所有的人都可以取得控制。
该文件的第二段非注释部分如下:
Option ExecCGI
AllowOverride None
这个表示目录“/home/httpd/cgi”的设置为,当前目录下可以执行CGI程序。不允许再使用在文件“.htaccess”中设定来覆盖这里所设置的权限。
需要说明的是,不同的LINUX系统中,可以在这个文件中看到的信息不完全相同,但是根据这里给出的信息,大家可以参照命令的解释自行理解文件中的设置,以及根据自己的需要进行相应的修改。
4.3.2 httpd.conf的配置
这个文件中有许多设定命令,用来设置服务器的运行环境。以下是一些常用的部分:
1. ServerType命令,用来设定服务器的启动方式。它的命令格式如下:
命令格式: ServerType [standalone/inted]
standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务。
inetd参数表示WEB服务不是以一个单独的守候进程的形式支持。而是由Inetd这个超级服务器守候进程进行代劳,当它收到一个客户端的WEB服务请求的时候,再启动一个WEB服务进程为其服务。
在此建议使用standalone参数。
2. Port命令,为服务器的服务指定端口号(套接字)。一般来说,WEB服务使用知名端口号――80,如果你设定了别的端口号,别人再使用你的WEB服务时,就必须输入“http://xxx.xxx.xxx:端口号”,这样是不方便的。所以,建议这里设置为Port 80。
命令格式: Port 端口号例:Port 80
3. Server Admin命令,用来设置WEB管理员的E-Mail地址。这个地址会出现在系统连接出错的时候,以便访问者能够将情况及时地告知WEB管理员。
命令格式: Server Admin [you E-Mail address]
例:Server Admin admin@xxx.com
4. BindAddress命令,用来设定要从哪个地址来接受服务。
命令格式: BindAddress [*/IP/FQDN]
例:BindAddress IP 表示只接受输入IP地址的访问者
BindAddress FQDN 表示只接受输入域名地址的访问者
BindAddress * 表示接受以上两种方式的访问者
5. ErrorLog命令,用来指定错误记录文件名称和路径。
命令格式: ErrorLog [log filename]例:ErrorLog /var/httpd/error.log
6. CacheNegotiatedDocs命令,让代理服务器将数据留在缓存中。在很多情况下,默认为不让代理服务器将数据留在缓存中的,所以这条设定命令是被注释掉的。
7. Timeout命令,只要客户端超过这里设定的秒数还没有完成一个请求的话,服务端将终止这次请求服务。如果网络速度较慢的话,建议在此设置较大的数值。以给客户端更多机会。
命令格式: Timeout [second]例:Timeout 120
8. KeepAlive命令,设置是否开启连续请求的功能。
命令格式: KeepAlive [on/off]
9. MinSpareServer命令,用于设置WEB服务进程的最小空闲个数。当WEB服务进程空闲个数小于此设置时,系统将会自动打开更多的服务进程以使得空闲的WEB服务进程的最小空闲个数。
命令格式: MinSpareServer [number]例:MinSpareServer 5
要注意的是,这个数字太大的话,则空闲的进程在浪费系统资源,大大减少了整个系统的资源。如果太小,则有可能造成频繁的连接使得系统应接不瑕。设置的原则是,如果这个服务器是专用的WEB服务器,则将这个值尽量地设大,否则就设置得够用就可以。
10. MaxSpareServer命令,这个命令则是设置WEB服务进程的最大空闲个数。
命令格式: MaxSpareServer [number]例:MaxSpareServer 10
这个命令与前一个相配合,可以使得WEB服务进程在内存中所占资源最合理。
11.StartServers命令,用来设置刚开启WEB服务器时生成几个服务进程。
命令格式: StartServers [number]例:StartServers 5
12.MaxClients命令,用来设置接受客户端请求的最大数目,以使得维护系统稳定性,避免系统负载过大。
命令格式: MaxClients [number]例:MaxClients 150
4.3.3 srm.conf的配置
这个文件主要用来指定主页文档的位置。下面介绍三个最常用的命令。
1. DocumentRoot命令,用来指定主文档的地址。
命令格式: DocumentRoot [Path]例:DocumentRoot /home/httpd/html
2. UserDir命令,用来指定个人主页的位置。如果你有一个用户test,那么它主目录是“/home/test”,当客户端输入 http://yourdomain/~test”,系统就会到对应的目录“/home/test/UserDir/”中去寻找。其中“UserDir”就是在UserDir命令中设置的指定目录。
命令格式: UserDir [Path]例: UserDir Public_html
3. DirectoryIndex命令,用来声明首页文件名称。一般地,我们使用“index.html”或“index.htm”作为首页的文件名。如果这样设置后,那么客户端发出WEB服务请求时,将首先调入的主页是在指定目录下文件“index.html”或“index.htm”。