当前位置:web 服务器 > Apache >>

apache服务器

6.3 WWW服务器

  现在要开始我们的重点内容了:www server。目前能做www server的程序很多,在UN

  IX下较常见的免费服务器就有很多种,例如NSCA,Apache等等。我们讨论的将是世界上

  最常用的一种,即Apache Server。

  6.3.1 Apache服务器

  按照apache开发组的说法,Apache代表“A patched Server”,因为它是在更古老的

  一些服务程序上通过一连串的补丁开发出来的。除非你买的是sun那样的系统,否则几乎

  每个UNIX发行商都可以免费提供apache的源代码或者是可以安装的软件包。几乎所有的

  Linux发行版本都会附带apache的软件包或者源代码,当然你也可以到任何能够提供UNI

  X系统应用的ftp站点去下载这个东西,所以我不想告诉你如何去下载它的代码了。

  可以取得的apache软件包可以是目标代码形式或者源代码方式,我们这里假定你用的

  是rpm包,例如redhat或者turbo Linux附带的apache rpm包。以下说明的内容将适用于

  这种rpm的缺省设置,特别是缺省目录设置,在后面我们将解释apache的编译,在那里我

  们将讨论目录设置和模块设置等功能。

  Apache的缺省配置文件放在/etc/httpd/conf下面,在较早的版本中,配置被分成几个

  文件,如/etc/httpd/conf/httpd.conf,/etc/httpd/conf/srm.conf和/etc/httpd/con

  f/access.conf。在较新的apache版本中,建议你只使用一个配置文件,即/etc/httpd/

  conf/httpd.conf。我们将主要的讨论比较新的这种配置方式。我的版本是apache-1.3.

  9。特别需要注意的是,如果你的系统配置目录中除了httpd.conf之外还有srm.conf和a

  ccess.conf的话,那么系统缺省要去察看这两个文件。因此,建议你将这两个文件从系

  统上删除。

  /etc/httpd/conf/httpd.conf文件相当长,我们首先介绍基本的内容,在设置apache

  的工作中,第一个任务是设置html文档的位置。

  新的httpd.conf一般被分成几个段落,第一部分是全局变量的位置,按照我们习惯的

  方式,将在缺省的httpd.conf上进行必要的修改,下面列出一些我们比较感兴趣的选择

  :

  ServerType

  这个选项用来设置你的apache如何启动,它有两个选择,即standalone和inetd。sta

  ndalone表示你的服务器程序是直接作为服务器守护进程启动,而inetd表示apache服务

  器将在inetd程序中启动。一般我们总是建议用standalone方式,因为inetd在请求较多

  的时候会出现一些问题。即使用ServerType standalone子句。

  ServerRoot "/home/httpd"

  设置Apache的缺声运行路径。不过,除非你在某些配置选项中使用相对路径,否则它

  从来不会影响什么。

  ErrorLog

  CustomLog

  这两行设置缺省的记账文件的位置,errorlog和customlog分别是出错信息和正常工作

  信息的记录地点,例如

  ErrorLog /var/log/httpd/error_log

  CustomLog /var/log/httpd/access_log common

  Port

  这个参数指明http服务器使用的端口,缺省值是80,当然你也可以选择其他的端口,

  但是这意味着你在连接的时候必须明确地指出使用的端口。

  范例:

  Port 80

  User

  Group

  设置服务器运行时使用的身份,通常我们为了安全,总是要把它设置成nobody,如:

  User nobody

  Group nobody

  ServerAdmin

  这个选项用来设置当服务器出现问题时,用来反馈问题的邮件地址,例如

  ServerAdmin webmaster@mydomain.com

  ServerName

  通常apache服务器会从域名服务信息中得到服务器的域名,但是你也可以使用这个选

  项来避免域名服务器出错时apache失效。例如

  ServerName www.mydomain.com

  DocumentRoot

  这个选项设置缺省的服务器使用的html文件的位置,例如:下面的一行

  DocumentRoot "/home/httpd/html"

  意味着 http://www.mydomain.com/xxx.html 被解释为/home/httpd/html/xxx.html。

  ScriptAlias

  定义CGI脚本目录,例如

  ScriptAlias /cgi-bin/ “/home/httpd/cgi-bin”

  定义CGI脚本应该放在/home/httpd/cgi-bin/目录下,而反映在浏览器中的目录是/cg

  i-bin/。

  DirectoryIndex

  这个选项定义缺省的主页文件,例如,DirectoryIndex index.html意味着http://ww

  w.mydomain.com/将显示/home/httpd/html/index.html。

  index.html

  Alias

  建立目录别名,例如

  Alias /ftp/ “/home/httpd/html/ftp/”

  UserDir

  用宿主目录作为html目录。参考6.3.2节。

  AccessFileName

  定义身份控制的文件名,通常总是设置成为AccessFileName .htaccess

  AddType

  AddHandler

  这两个选项用来加入各种文件映射,或者说MIME类型。通常AddType设定某种特定的文

  件类型对应某个特定的扩展名字,而AddHandler则为这种类型定义一个处理程序。例如

  ,AddHandler cgi-script .cgi表示无论在什么地方,凡是看上去是一个.cgi的扩展名

  的程序就作为CGI脚本执行(应该避免,对吗?不过对于那些~user的目录你可能只能用

  这个办法了。好在还有一个options ExecCGI也对可以执行cgi的目录进行限制)

  另外的一个常用的设定是

  AddType text/html .shtml

  AddHandler server-parsed .shtml

  这两行允许服务器处理那些.shtml并且将它翻译成html送出。

  显然,我们现在的任务主要是修改DocumentRoot和ScriptAlias,DirectoryIndex,写

  一个简单的html文件,放到缺省的主页目录里,例如/home/httpd/html/index.html,设

  置其属性为755,然后就可以启动apache了:

  /usr/sbin/apachectl start

  或者

  /usr/sbin/httpd

  如果是重新启动apache,执行/usr/sbin/apachectl restart或者killall –HUP ht

  tpd。然后在浏览器中就可以实验页面服务是否可以使用了。如果apache抱怨找不到htt

  pd.conf,可以执行

  httpd –f /etc/httpd/httpd.conf

  6.3.1 目录管理

  如同其他所有的网络服务一样,Apache同样使用各种安全性控制,例如存取地址控制

  和身份控制。这里我们先讲地址和目录控制。

  Apache将目录作为单元来进行存取控制,每个目录在/etc/httpd/conf/httpd.conf中

  使用一个段落,首先的是/目录,这实际是设置缺省值:

  <Directory />

  Options FollowSymLinks

  AllowOverride None

  </Directory>

  每个段落都是由这样的两组尖括号构成的行夹起来的,其中最主要的句子是Options,

  AllowOverride,Allow/Deny,Order等。

  Options

  这个子句用来说明一些主要的设置,目前可以使用的设置有Indexes,Includes,Fol

  lowSymLinks,ExecCGI,MultiView,当然还有两个最简单的选择就是None和All。None

  是禁止所有选择,而All允许上面的所有Options。一般我们主要关心的是Indexes和Fol

  lowSymLinks。Indexes是设定是否允许在目录下面没有index.html的时候显示目录,而

  FollowSymLinks决定是否可以通过符号连接跨越DocumentRoot。例如,尽管/ftp不在/h

  ome/httpd/html下面,但是我们仍然可以使用符号连接建立一个/home/httpd/html/ftp

  使得可以直接输入http://mydomain.com/ftp来访问这个目录。

  使用FollowSymLinks的办法很简单,就是首先在合适的目录段落里面Options Follow

  SymLinks,(符号连接的上层就可以)然后建立一个别名:

  Alias /ftp/ “home/httpd/html/ftp/”

  后面的是你建立的到/ftp的符号连接。注意这一行应该位于所有目录段落之外。

  AllowOverride

  AllowOverride定义是否允许各个目录用目录中的.htaccess(后面解释)覆盖这里设定

  的Options。它的选择有Options,FileInfo,AuthConfig,Limit或者它们的组合,当然

  还有None和All。

  由于/是缺省设置,所以这里没有设置太多的内容,相反,我们应该在/之后独立设置

  各个目录的控制,例如:

  <Directory "/home/httpd/html">

  Options Indexes FollowSymLinks

  AllowOverride None

  Order allow,deny

  Allow from all

  </Dir
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
访问www.zzzyk.com 试试
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,