王朝网络
分享
 
 
 

用Apache架设Web服务器

王朝system·作者佚名  2006-12-16
宽屏版  字体: |||超大  

建立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、access.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

面前两行定义了网页的主目录和首页名称。UserDir给出了用户的绝对路径,也就是说明个人主页存放路径。

AccessFileName .htaccess

此指令指定了每个目录下的文件权限是由.htaccess决定。当Apache试图读取某一目录下的文件时,它将先查阅“.htaccess”文件中所列的访问控制指令,并执行相应的操作。

Mime 的文件定义类型是由下面的两句所决定:

TypesConfig /etc/mime.types

MIMEMagicFile share/magic

AddLanguage en .en

此参数可以增加对多种语言的支持。

ErrorLog /var/log/httpd/error_log

LogLevel warn

CustomLog /var/log/httpd/access_log common

上面这些代码代表了客户机访问服务器的一些日志文件。

完成全局设置后,我们还要针对每个目录的权限进行特定的配置。

||||||3.目录权限的配置

我们只以一个目录为例,其它的路径可以类推。

<Directory /home/*/public_html>

AllowOverride FileInfo AuthConfig Limit

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

<Limit GET POST OPTIONS PROPFIND>

Order allow,deny

Allow from all

</Limit>

<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>

Order deny,allow

Deny from all

</Limit>

</Directory>

这一段定义了/home/*/public_html目录下可以或禁止进行的文件操作,以及客户机的受限范围。

4.虚拟主机配置

虚拟主机配置是Apache最精彩的地方之一,很多的ASP也是利用Apache这个特性来提供优质服务的。

<VirtualHost www.virt.com>

SSLDisable

ServerAdmin webmaster@virt.com

DocumentRoot /var/httpd/virt

ScriptAlias /cgi-bin/ /var/httpd/virt/cgi-bin/

ServerName www.virt.com

ErrorLog logs/virt-error.log

TransferLog logs/virt-access.log

</VirtualHost>

我们可以看到它的语法和真正主机设置相差甚小,因此不再介绍。

实例

最后以我自己的Apache(httpd.conf)为例来结束我们的讲解。

ServerType standalone

Port 80

Listen 80

Listen 1024

User wwwrun

Group wwwrun

ServerAdmin webmaster@wudi.com

ServerRoot /etc/httpd

ErrorLog logs/error_log

TransferLog logs/access_log

PidFile logs/httpd.pid

ServerName www.wudi.com

MinSpareServers 3

MaxSpareServers 20

StartServers 3

如图1所示。

图1 虚拟主机1

<VirtualHost www.wudi1.com :80>

SSLDisable

ServerAdmin webmaster@wudi1.com

DocumentRoot /var/httpd/wudi1

ScriptAlias /cgi-bin/ /var/httpd/wudi1/cgi-bin/

ServerName www.wudi1.com

ErrorLog logs/virt1-error.log

TransferLog logs/virt1-access.log

User virt1admin

Group users

</VirtualHost>

如图2所示。

图2 虚拟主机2

<VirtualHost www.wudi2.com:1024>

ServerAdmin webmaster@wudi2.com

DocumentRoot /var/httpd/wudi2

ScriptAlias /cgi-bin/ /var/httpd/wudi2/cgi-bin/

ServerName www.wudi2.com

ErrorLog logs/virt1-ssl-error.log

TransferLog logs/virt1-ssl-access.log

User virt1admin

Group users

</VirtualHost>

结束配置工作,用户就可以选择系统启动时是否启动Apache Web服务器(在缺省安装的情况下,Apache Web服务器进程httpd是自动启动的)。

chkconfig 235 apache on

或者用户也可以选择每次手工启动Apache Web服务器。手工启动/停止/重起Apache Web服务器后台守护进程httpd,可通过在命令“/etc/rc.d/init.d/httpd”后面加上参数“start/stop/restart”来进行的。

/etc/rc.d/init.d/httpd start

经过上述的操作,就可以建立起自己的网站了。

Apache是一款优秀的免费软件,它不仅是一个知名的Web服务器,还是较为方便的代理软件。如果我们加入必要的模块,它能十分容易地支持PHP、ASP、Perl、FrontPage等一系列的Web编成工具。

附:Apache组件列表

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

对每个请求产生独立的请求标识符

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有