使用Apache架设WWW服务器

Author: 常安 Date: 2000年 第25期

  随着Linux的汉化程度不断提高,相信国内有不少电脑爱好者都想感受一下这个稳定且功能强大的操作系统,但它的各种复杂配置却让不少用户望而却步。不少装有Linux的朋友最终还得跑到Windows 98里去调试CGI、PHP等需要服务器支持的程序,完全浪费了Linux强大的服务器功能。下面我就介绍一下如何使用Apache在Linux上架设WWW服务器。
#1    一、安装Apache
  要使用Apache,就要在安装Linux时选择安装Web Server,并在启动服务(Internet Server)中开启httpd这一服务,这样系统就会自动安装好Apache,并在系统第一次启动时启动httpd进程。如果你已经完成了Linux的安装,却没有装Web Server,那也没关系,你可以重新安装Linux并选择UPDATE,挑选名为Apache的软件包安装到本机。当然,如果你想安装最新版本,还可以到http://www.apache.org/ 网站上去下载。
#1    二、设置WWW配置文件
  WWW服务器的配置文件共有httpd.conf、srm.conf、access.conf三个文件(有些Linux并没有这三个文件,而是httpd.conf-dist、srm.conf-dist、access.conf-dist,其实你只要将它们去掉-dist复制成我们所需要的文件就行了),都存放在 /etc/httpd/conf 路径下。要重新设置这些文件,我们就必须先了解它们的内容和主要参数的意义。
  首先,我要介绍一下 # 的用法。# 在配置文件中处于一行的开头,表示该行为注释,不参与执行。如果你希望使用某个被注释掉的参数,就必须将其行首的 # 去掉。了解了这一点,我们再来看看这三个配置文件:
#1  1.httpd.conf
  httpd.conf(^25050401a^1)可以说是这三个设置文件中最为重要的,因为它定义了httpd服务器的一般属性、端口号(port)、执行者的身份等,因此我将做较为详细的介绍。编辑 httpd.conf,你会发现有以下一些参数:
  ServerType:有standalone 和inetd两个值可供选择。这是要你选择你的Server是单独启动(standalone),还是借由互联网络伺服程序inetd来启动。一般我们默认使用单独启动就行了。如果你对 ARPA Berkeley Services 不是很了解的话,请不要随意更改。
  Port:分配给你的服务器的端口号。ServerType为standalone时一般都设成80。当然,如果你需要也可以设置成其它的port,但必须小于1024。倘若你分配了一个大于1024的端口号给Web Server,你就必须在你的URL后面跟上端口号才能访问到你的页面。比如你分配给你的服务器的端口号是8080,那么你访问时需要输入http://yourdomain:8080。
  ServerAdmin:服务器管理员的E-mail 地址,默认的是root@localhost,你可以改为你自己的E-mail地址。
  ServerRoot:存放服务器的设置文件、出错文件和记录文件的目录。
  BindAddress:允许连接到你的服务器上的虚拟主机的IP地址。你可以设置为一个IP地址或用 * 来表示网络上的所有虚拟主机。
  ErrorLog:存放服务器出错信息的文件。
  TransferLog:用来存放已传输过的文件(只包含文件名)的记录文件。
  PidFile:指定存放httpd进程号的文件。
  ScoreBoardFile :记录进程信息的文件。
  ServerName:定义服务器的hostname,比如www.computer.swnu.edu.cn。如果你的机子没有固定的IP,那就不用写了。
  Timeout:传输或接收的延时。大于这个时间服务器会自动断开链接。
  KeepAlive:是否让你的服务器支持断点续传功能,可以选 on 或者 off。
  MaxKeepAliveRequests:设置续传功能的数目。内置设成最多100,如果设成0就是不支持续传功能。当然,数目设得越多就会浪费更多的硬盘空间。
  KeepAliveTimeout:等待下一个请求的时间,如果使用者超过这个时间还没有向你的服务器发出要求,则它就不能再续传了。同样的,秒数设得越大硬盘中的垃圾就会越多。
  MaxClients:允许的最大客户个数,默认的是150。你不必担心设得过高会浪费CPU、内存资源,因为Apache会周期性地检查目前Server的load状态,以调整目前应该运行几个process。
#1  2.srm.conf
  srm.conf(^25050401b^2)主要是用来指定你的文档的位置。
  DocumentRoot:指定你(root)存放HTML文件的路径,一般用默认值就行了。比如,你设置的DocumentRoot是/home/httpd/html,服务器的地址是202.98.32.96,则在URL中输入http://202.202.98.96所看到的文件就是/home/httpd/html中的index.html。
  UserDir:定义使用者存放html文件的路径。如果你有一个用户的主目录为 /home/wjq,当在URL中输入http://yourdomain/~wjq时,系统就会到/home/wjq/X/中去取这个用户的个人主页。其中X为UserDir所指定的目录。
  DirectoryIndex:用来定义别人连入时所看到的第一个文件,一般都为index.html。
  ScriptAlias:定义存放CGI的路径。比如你设置为 ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/,那么当有人连到你的页面时,服务器就到/home/httpd/cgi-bin/路径下去找寻CGI然后执行,而其显示的路径却是Alias的路径/cgi-bin/。
  AddHandler:用来定义CGI的格式,约定俗成以 .cgi 结尾的文件为CGI文件。
  如果你想运行更多格式的HTML文件,那就可以按需要把下面几个参数前的#去掉。
  AddType text/html .shtml AddHandler Server-parsed.shtml:允许使用Server-parsed HTML格式的文件的文件(.shtml)。
  AddHandler imap-file map:允许页面有imagemap。
  AddHandler type-map var:允许运行 map 格式的html语法。
  剩下的都是一些小细节,不改也无妨。
#1  3.access.conf
  access.conf(^25050401c^3)主要是设置目录的基本存取权限,以及规范远端机器是否能连接到你的WWW服务器的相关设置。下面我们先来看看此文件的其中一段非注释部分:
  <Directory /home/httpd/html>
  Options Indexes IncludesNOEXEC FollowSymLinks
  AllowOverride None
  order allow,deny
  allow from all
  </Directory>
  这部分是以<Directory /home/httpd/html>开头,以</Directory>结束的。其中开头的部分<Directory /home/httpd/html>表示下面的设定是针对/home/httpd/html目录的。Options 用于定义在DocumentRoot里的文件所能执行的操作,这一命令有很多的参数,各参数的功能如下:
  None:表示页面除了看之外不能做任何事。
  All:允许进行除看动画、听音乐之外的任何操作。
  ExecCGI:开启执行CGI程序的功能。
  explicitly:允许看动画或是听音乐之类的操作。
  FollowSymLinks:开启一个动态的链接,当有客户访问到该目录时会自动的链接到另一个相关的目录中去。
  Indexes:如果在目录中没有找到index.html文件,就显示文件列表。
  而后是AllowOverride参数,该参数是设定访问控制的,其后可跟Allow、None、FileInfo、AuthConfig、Limit等选项,不过一般都设为 None,表示任何人都可以阅读DocumentRoot内的文件。
  order allow,deny 就是定义有allow(允许)和deny(不允许)两种命令模式,其后的allow from all表示允许网络上的所有计算机连接到这台服务器。同样的,你也可以做以下定义:
  order allow,deny
  deny from all
  allow from 202.98.32.96
  这就表示只有202.98.32.96的计算机允许连接到你的服务器。
  以此类推,我们还可以对其它目录进行设置。下面给出的就是对/home/httpd/cgi-bin 目录进行设置的范例:
  <Directory /home/httpd/cgi-bin>
  AllowOverride None
  Options ExecCGI
  </Directory>
  它表示不能对/home/httpd/cgi-bin 进行访问控制,但允许执行CGI程序,这就表明这是一个用来存放CGI程序的目录。
  通常,这三个配置文件的参数的默认值是不用更改的,但是如果你同时在一台机子上开了几个Web Server时就要注意:你必须给每一个Web Server分配一个不同的port号并分别指定他们的errorlog文件和pidfile文件。
  至此,我们已经配置完了Apache服务器,接下来就是要重新启动httpd了。
#1    三、重新启动httpd,完成服务器的配置
  进入Linux终端模式,执行/etc/rc.d/init.d/httpd stop终止httpd 进程,当然你也可以通过查看其pid号码将其kill;然后执行/etc/rc.d/init.d/httpd start重新启动刚才配置好的httpd,再进入X windows并启动Netscape,在URL中输入localhost或本机的IP地址,如果没有什么意外你应该看到一个关于Apache的页面。这时,你可以将自己的主页拷贝到/home/httpd/html/目录中,别人就可以通过浏览器访问到你的主页了。
  这样,一个功能强大的服务器就算架设完成了。