Apache 服务器探秘.docx

上传人:b****6 文档编号:3712884 上传时间:2022-11-24 格式:DOCX 页数:30 大小:39.52KB
下载 相关 举报
Apache 服务器探秘.docx_第1页
第1页 / 共30页
Apache 服务器探秘.docx_第2页
第2页 / 共30页
Apache 服务器探秘.docx_第3页
第3页 / 共30页
Apache 服务器探秘.docx_第4页
第4页 / 共30页
Apache 服务器探秘.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

Apache 服务器探秘.docx

《Apache 服务器探秘.docx》由会员分享,可在线阅读,更多相关《Apache 服务器探秘.docx(30页珍藏版)》请在冰豆网上搜索。

Apache 服务器探秘.docx

Apache服务器探秘

Apache服务器探秘1

1.1Apache服务器2

1.1.1简介2

1.1.2Apache服务器安装(linux/unix)2

1.2Apache服务器的配置4

1.2.1.httpd.conf5

1.2.2.access.conf7

1.2.3.srm.conf7

1.3Apache服务器功能介绍9

1.3.1服务器控制9

1.启动服务器10

2.停止服务器10

3.重启动服务器10

4.获得服务器的状态10

5.查看服务器配置文件11

6.测试ApacheServer11

1.3.2访问控制11

1.Options11

2.AllowOverride12

3.13

1.3.3根据客户主机名或IP地址限制访问13

1.Allow13

2.Deny14

3.Order14

1.3.4使用用户认证来限制某些文档的访问14

1.3.5用户web目录16

1.3.6虚拟主机17

1.4Apache服务器的其他服务20

1.4.1CGI脚本(php、perl)20

1.CGI配置20

2.CGI程序的调试21

1.4.2Apache的proxy服务21

代理模块的编译21

代理模块的指令集22

代理服务器的配置24

1.5Apache常见故障排除25

Apache服务器探秘

杜广达

内容提要

本文介绍了Linux的Web服务器——Apache服务器。

在互联网飞速发展的今天,Web功能的使用与开发已经成为操作系统不可缺少的配套部分。

Apache是常见的支持HTTP协议的Web服务器之一,也是使用最广泛的Web服务器。

本文将帮助你在自己的Linux系统中配置自己Web服务器。

本文主要介绍了以下内容:

●Apache服务器安装

●Apache服务器配置文件

●Apache服务器功能介绍

●Apache服务器的CGI和proxy服务

●Apache服务器的常见故障排除

关键字:

Apache,Web服务器,Linux

1.1Apache服务器

1.1.1简介

Apache是常见的支持HTTP协议的Web服务器之一,也是使用最广泛的Web服务器。

截止到1999年1月,世界上大约有超过300万台Internet服务器使用的是ApacheServer。

ApacheServer的主要特点是稳定性高、速度快、功能多。

通过第三方的评测,ApacheServer比大多数的Web服务器都快。

Apache服务器既是一种软件,又是一个工程。

它是由千千万万的服务器代码和文档开发者共同努力的结果。

在1995年4月,公开发行了第一套ApacheServer,版本号是0.6.2。

ApacheServer的名字来源于“APatCHyServer”。

现在最新的版本是1.3.12。

前不久,我国将Linux操作系统正式确定为重点发展方向。

ApacheServer以其对UNIX和Linux的最好支持,使它必定成为我国今后Web服务器的主流。

1.1.2Apache服务器安装(linux/unix)

通常来说,大家在安装linux时可以选择安装WEBSERVER,并在INTERNETSERVICES中开启httpd这一项服务,这样系统就会自动的安装好apache,并且在系统第一次启动时启动httpd进程。

在作好一些相应的配置后,在你的Xwindows环境下打开NETSCAPE或IE,并在URL中填入localhost或本机的IP地址,就会访问到apache的默认的页面。

如果说你没有安装WEBSERVER,你可以重新安装Linux并选择UPDATE,挑选apache的软件包安装到本机。

当然,如果你想要安装最新的版本,可以到http:

//www.apache.org/网站上去下载最新的版本。

我们假设你已经将源代码拷贝到一个目录下。

这时可以人工配置或使用APACI的自动配置界面。

这里我们详细介绍后者。

在源代码的根目录中,你会找到一个叫做configure的脚本,该脚本是使用APACI配置Apache所必须的。

你可以通过在该脚本后加“--help”来取得帮助:

./configure--help

在配置时所做的第一步是决定其安装位置。

Apache默认的安装路径是/usrlocal/apache。

但你也可以自行指定安装位置。

例如,你可以运行下面的命令来将Apache安装在一个叫做/usr/apache的目录下:

./configure--prefix=/usr/apache

该脚本会将所有的Apache文件安装在指定的目录下。

你也可以使用--prefix选项将指定类型的文件定位到其他目录。

具体prefix选项请参看表1-1:

选项名

功能

Binddir=DIR

把可执行文件安装在指定DIR目录下

Compat

按照Apache1.2安装路径安装

Datadir=DIR

把只读数据文件安装在指定DIR目录下

Exec-prefix=DIR

把依赖于结构的文件安装在指定DIR目录下

Includedir=DIR

把包含文件安装在指定DIR目录下

Libexecdir=DIR

把可执行程序安装在指定DIR目录下

Layout

列出详细的安装路径的目录结构

Localstatedir=DIR

把可修改数据文件安装在指定DIR目录下

Logfiledir=DIR

把日志文件安装在指定DIR目录下

Mandir=DIR

把人工页面安装在指定DIR目录下

Proxycachedir=DIR

把代理缓存数据安装在指定DIR目录下

Runtimedir=DIR

把运行时数据文件安装在指定DIR目录下

Sbindir=DIR

把系统管理员可执行文件安装在指定DIR目录下

Sysconfdir=DIR

把配置文件安装在指定DIR目录下

表1-1configure脚本prefix选项列表

接下来是决定是否使用Apache开发人员提供的标准模板配置。

如果你第一次编译Apache,那么推荐使用标准配置来熟悉整个过程。

基于APACI配置的标准(或缺省)的配置文件是存储在src子目录下的Configuration.apaci。

该文件中,有5种行类型:

注释行:

以“#”符号作为起始字符的行,用于描述信息和屏蔽那些不希望设置的选项。

例如:

#RuleSHARED_CORE=default

Makefile选项行:

指类似于“CC=gcc”的行。

用于指定生成的Makefile文件中的选项。

例如:

EXTRA_CFLAGS=’$(SRCDIR)/apaci’

规则行:

以“Rule”开头的行。

用于控制Configure怎样创建Makefile文件。

例如:

RuleSOCKS4=no

模块选择行:

以“AddModule”开头的行。

用于增加模块。

例如:

AddModulemodules/standard/mod_cgi.o

可选模块选择行:

以“%Module”开头的行。

把某些模块编译到Apache里但不激活。

如果你需要修改Configuration.apaci文件的内容,你不必要直接修改该文件。

本文建议通过使用配置脚本来完成。

例如,通过以下脚本来使能、使非规则:

./configure--prefix=/usr/apache--enable-rule=SOCKS4

./configure--prefix=/usr/apache--disable-rule=SOCKS4

同理可以使用,-enable-module,-disable-module来使能、使非模块:

./configure--prefix=/usr/apache--enable-module=cgi

./configure--prefix=/usr/apache--disable-module=cgi

在成功的运行上面介绍的脚本后,你已经可以编译并安装Apache了。

从Apache源代码目录的根目录下执行make命令来编译Apache源程序。

如果成功将产生WWW服务器的可执行二进制文件httpd。

在没有任何错误信息的情况下,你可以运行makeinstall命令来安装Apache。

否则,请查看错误信息并重新按配置步骤运行一遍。

只要你已经编译并安装了Apache,你就可以运行makeclean来删除任何在编译时创建的对象文件。

1.2Apache服务器的配置

每个Apache发布的源代码中都包括下面的缺省配置文件:

●access.conf

●httpd.conf

●srm.conf

●magic

●mime.types

后两个文件在大多数情况下应给予保留。

magic文件是用在一个叫做mod_mime_magic的特定模块中的,mime.types文件是控制对于一个给定的文件扩展名来说将何种类型的MIME发送给用户。

我们需要定制的文件是httpd.conf、access.conf、srm.conf。

它们有相同的结构,你可以将所有的指令放在httpd.conf文件里而将另外两个文件置空。

在最新版本中,仅保留了httpd.conf文件。

不论是只需要修改一个配置文件还是三个配置文件都要修改,其具体步骤内容都是完全一致的。

本文仍介绍具有三个配置文件的Apache版本。

在正式开始之前,我们先来介绍以下Apache配置文件的格式。

这些配置文件有两种类型的信息:

可选注释和服务器指令。

第一个字符为“#”符号的是注释行,它们对服务器软件不起作用,服务器在对这些文件进行语法分析时会忽略掉所有的注释行;除了注释和空行外,服务器把其他的行认为是完整的或部分的指令。

指令又分成与shell命令类似的命令和伪HTML标记。

例如:

Directiveargumentargument#与shell命令类似的命令

#伪HTML标记

Port80#与shell命令类似的命令

#伪HTML标记

与HTML不同,伪HTML标记必须各占一行。

我们可以把命令组成一组放在某个伪HTML标记中,象上面那样。

下面针对每个配置文件介绍各指令的含义。

1.2.1.httpd.conf

清单1-1给出了本节要介绍的命令在httpd.conf文件中的缺省用法。

清单1-1httpd.conf命令举例

ServerTypestandalone

Port80

Usernobody

Groupnobody

ServerName202.204.3.16

ServerAdmincuckoodoo@

ServerRoot"/www"

ErrorLog/www/logs/error_log

Timeout300

PidFile/www/logs/httpd.pid

KeepAliveOn

KeepAliveTimeout15

MaxClients150

MaxKeepAliveRequests100

MinSpareServers5

StartServers5

ServerType

此指令指定Web服务器以何种方式工作。

有两个值可供选择standalone和inetd。

Standalone表示你的httpd进程是以一个单独的守护进程(daemon)的方式在后台侦听是否有客户端的请求,启动httpd的命令将加进系统启动脚本文件/etc/rc.d/rcX.d中;Inetd表示你的httpd进程不是以守护进程(daemon)的方式运行,而是由Inetd这个internetservices的进程侦听,一旦有客户的请求,它会自动的启动httpd这个进程来提供相应的服务。

对这种方式,启动httpd的命令将加进/etc/inetd.conf文件中。

因为在standalone方式下,为每个请求装载一个新进程的负载几乎不存在,所以此种方式更高效。

因此,此指令默认的是Standalone方式,对于一个比较繁忙的网站,本文建议您选择Standalone方式启动httpd。

Port

你分配给你的WEBSERVER的端口号。

此指令仅对Standalone方式启动的服务器有意义。

Httpd的默认端口是80,也可以分配给自己的WEBSERVER一个大于1024的端口号。

如果你这样做,你必须在你的URL后面跟上你的端口号才能访问到你的页面。

比如你分配给你的服务的端口号是8888,那么你访问时需要输入

http:

//domainname:

8888

User和Group

象Port指令一样,这两条指令仅对standalone服务器有意义。

这两条指令分别指定httpd提供服务的子进程的用户标识(UID)和组标识(GID)。

当主Web服务器进程调用一个子服务器来完成一个请求时,主Web服务器进程根据这些指令的设置的值修改子进程的UID和GID。

为了安全原因,本文推荐你以属于一个具有非常低权限的组的、具有非常低权限的用户方式运行子服务器进程。

在大多数UNIX系统中,用户名nobody以及nogroup组具有最低权限。

ServerName

你机子的名称,如果你有域名,填入你本机的域名。

如果没有,就填入你的主机名或IP地址。

ServerAdmin

服务管理员的email地址,默认的是本机的root用户,所以是root@localhost。

当服务器产生一个错误时,该email地址会显示出来。

ServerRoot

用来存放服务的配置、出错和记录文件的最底层的目录。

如果你使用APACI接口编译和安装Apache,那么缺省ServerRoot为你在配置脚本中提供的prefix值;否则,你需要修改缺省值为一个合适的目录。

ErrorLog

用来存放你WEBSERVER的出错信息的文件。

如果你将该指令设置为一个相对路径(即路径不是以“/”开头),那么这个路径就被认为是相对于ServerRoot目录的。

不管你将日志放在什么地方,你应该确信只有主服务器进程对该目录有写的权限。

允许其他用户对该日志目录有写的权限意味着某些人会未经许可就获得了你的主Web服务器进程的UID,一般这个UID就是root帐户。

Timeout

设置服务器等待的最大时间值,服务器等待下列事件:

接受GET请求;接收TCP/IP包文确认;接收POST或PUT请求。

注意:

下面介绍的指令仅用于standalone服务器。

PidFile

该指令指定的文件存放了httpd进程的进程号。

KeepAlive

有两个可选值:

on或off。

该指令指定是否支持永久性连接。

使用永久性连接允许多个请求在同一个TCP连接上发送,在某些情况下,如果一个HTML文档有大量的图象,则可以降低大约50%的通信延迟。

KeepAliveTimeout

规定了服务器在断开与客户机的连接之前等待下一个请求的最大时间。

默认值是15秒。

MaxClients

本指令指定允许的最大客户个数。

默认值是150个。

最大的可能值是256个。

如果你想处理多于256个同时连接,则需要修改src/include/httpd.h的标题头文件并将HARD_SERVER_LIMIT常量设置为你所希望的限制值。

在对新服务器重新编译之后,你就可以将此指令设置为所期望的限制值。

MaxKeepAliveRequests

规定了每个KeepAlive连接所服务的最大请求数。

StartServers

设置了Apache在一开始所启动的子服务器进程的初始数目。

通常上面的参数的默认值是不用改的,但是如果你同时在一台机子上开几个WEBSERVER时要注意:

第一,你要给每一个WEBSERVER分配不同的port号;第二,要分别指定他们的errorlog文件和pidfile文件;第三,不懂的参数不要随意改动,即使改动也要一次改一个,并留有记录以便恢复。

1.2.2.access.conf

清单1-2给出了本节要介绍的命令在access.conf文件中的缺省用法。

清单1-2access.conf命令举例

OptionsIndexesIncludesNOEXEC

AllowOverrideNone

AllowOverrideNone

OptionsExecCGI

本节介绍的命令主要是用于对目录的功能和访问的控制的设定。

下面我针对默认的页面的配置文件进行说明。

该清单由两个对组成。

是用来将一组指令包含在一起。

所包含的指令的范围在所指定的目录路径(及子目录)中有效。

第一部分是以开头,以结束的。

其中开头的部分Directory/home表示下面的设定是针对/home目录的。

而指令Options和AllowOverride请参看本文后面的部分(1.3.2根据主机名或IP地址访问)。

第二部分表示对目录/home/httpd/cgi-bin不进行访问控制,允许执行CGI程序。

这就表明这是一个用来存放CGI程序的目录。

1.2.3.srm.conf

清单1-3给出了本节要介绍的命令在srm文件中的缺省用法。

清单1-3srm.conf命令举例

DocumentRoot/www/docs/

UserDirPublic_html

DirectoryIndexindex.htmindex.htmlindex.phpindex.php3

AccessFileName.htaccess

Alias/rfc/"/home/share/RFC_2000.3.17/"

ScriptAlias/cgi-bin/"/home/httpd/cgi-bin/"

AddHandlercgi-script.cgi

该此文件告诉服务器你想从你的Web服务器提供何种资源,以及从哪里、如何提供这些资源。

下面介绍此文件中经常涉及的指令:

DocumentRoot

用来指定主文档的地址。

缺省值通常设置为Apache自己的htdocs目录。

建议如本例一样将此命令指向你的文件系统的一个指定的子目录。

在本例中,对应于文件http:

//202.204.3.16/index.html的请求,将对应到文件/www/docs/index.html。

UserDir

用来指定个人主页的位置。

如果你有一个用户的home目录为/home/cuckoodoo当在URL中输入http:

//yourdomain/~cuckoodoo系统就会到/home/cuckoodoo/XXX/中去取这个用户的个人主页。

其中“XXX”为UserDir所指定的目录。

此命令仅用于在系统中你有多个用户,并且你希望每个用户都有他(她)自己的Web目录。

缺省值是public_html。

DirectoryIndex

用来声明查找的索引文件的名称。

本例告诉Web服务器应该查找列表中的四个文件,如果发现其中之一存在,便将其返回给请求方Web客户机。

注意:

在索引列表中列举大量的文件会造成两个问题。

一个是,服务器不得不为每个目录请求查找是否存在众多的文件,这会降低服务器的速度;另一方面,从管理者的角度看,将多文件作为索引不便于对站点的管理。

AccessFileName

指定存取控制文件名,如果某个目录下存在该文件,那么这个文件规定了该目录的存取控制信息。

当服务器给用户返回文档之前,它依照该文档路径读取第一个被激活的存取控制文件,根据其中的指令对文档进行存取控制。

默认值是.htacess文件。

如果你要改变这个名字,建议你的新文件名以“.”开始,这样的文件名不会在目录清单中被列出来。

注意:

缺省access.conf文件禁止Apache搜寻任何目录级访问控制文件。

如果你要使用该文件,那么必须对access.conf文件进行修改。

例如,缺省access.conf文件有下面的配置段:

OptionsFollowSymLinks

AllowOverrideNone

这个配置使用AllowOverride指令来禁止Apache搜索AccessFileName所指定的文件。

如果你希望允许Apache搜索一个在你的站点的某个子目录中的访问控制文件,可以使用如下配置:

OptionsFollowSymLinks

AllowOverrideAll

这个配置允许你拥有在/path/to/your/dir目录中或任何该目录的子目录中的.htacess访问控制文件。

它允许你覆盖所有允许的指令。

Alias

建立真实目录的别名,使文件可以存放到DocumentRoot指令指定目录以外的其他目录中。

如:

Alias/images/ftp/pub/image

则对于http:

//myserver/images/txd.gif文件的存取将向用户返回/ftp/pub/image/txd.gif文件。

ScriptAlias

指定服务器使用的CGI脚本所在的目录。

像Alias一样,它给真实目录取别名。

因为CGI脚本是用来执行的,所以包含CGI脚本的目录不应放在文档根目录下。

这样做的目的是处于安全的考虑的。

将这些脚本放在一个大家都可以访问到的目录下,会使任何人都可以不经允许查看你的脚本,并找到脚本中的致命弱点。

而使用本命令,使服务器对ScriptAlias指定的目录的请求并不是以发送所请求的文件的内容来服务的。

被请求的文件是作为一个脚本来执行,将该脚本的执行结果返回给客户机。

语法:

ScriptAlias虚拟目录真实目录

AddHandler

指定具有哪些扩展名的文件是某类处理程序。

语法:

AddHandler处理程序名扩展名1…扩展名n

1.3Apache服务器功能介绍

1.3.1服务器控制

在发布的Apache1.3.x产品中包含有一个叫做apachectl的shell脚本,用来在很多方面控制服务器。

在此详细介绍此脚本的使用。

在使用此脚本前,你必须已经是你的系统的超级用户,除非你已经配置你的Apache运行在高于1023端口上工作。

注意,如果你已经正确的为httpd安装了inetd配置,那么你就不必做任何事情来启动和停止Apache服务器,因为当服务器接到HTTP端口请求时,inetd会自动运行Apache服务器。

1.启动服务器

运行下面的脚本启动服务器:

/你安装的Apache的bin目录/apachectlstart

你如果不使用完全路径(以/开头的路径),则必须先到你安装的Apache的bin目录下,然后以该目录为当前目录,使用如下指令:

./apachectlstart

如果你希望在系统重新启动后Apache服务器会自动启动,需要将上面

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1