用Apache架设Web服务器
建立Linux下的【xià de】Web服务器🤣可以选用【yòng】🚬Netscape的【de】Enterprise Server,或者使【huò zhě shǐ】用【yòng】🚬免费软件【jiàn】✂Apache。 Netscape可以完【kě yǐ wán】全支持基于📬IP的虚拟【de xū nǐ】主机🚫,但对基【dàn duì jī】于📬域名的虚拟【de xū nǐ】主机🚫却不支持,因此只能显示🏮最外面【zuì wài miàn】😺的【de】一层网页。基于📬IP的虚拟【de xū nǐ】主机🚫需要一个独立【gè dú lì】的【de】🤦IP;基于📬域名的虚拟【de xū nǐ】主机🚫,可以多【kě yǐ duō】个虚拟【gè xū nǐ】主机🚫共用【gòng yòng】🚬一个IP。利用【lì yòng】👞HTTP 1.1协议【xié yì】,靠不同【kào bú tóng】的域名【de yù míng】⏩来区分可以大【kě yǐ dà】大节省IP地址资源🍛。Apache完全支持以上两种虚👩拟主机🚫方式【fāng shì】,并且克🛬服了🙀Netscape经常出🗓现服务塞死的【de】🛌现象【xiàn xiàng】。Apache是目前😻互联网上使用【yòng】🌠广泛的【de】👅Web服务器🤣。下面详细讲解【xì jiǎng jiě】如何利【rú hé lì】用【yòng】👞Apache来架设自己的【de】🌚Web服务器🤣。
安装
首先我🗻们要介绍🈷Apache的安装【de ān zhuāng】过程【guò chéng】。
第一,先到【xiān dào】http://www.apache.org下载最新版本的【de】😮Apache。如果是【rú guǒ shì】在【zài】🧠Windows下,把该文🔄件下载在【zài】🧠C盘,C盘在【pán zài】🧠Linux中对应🕟于🏍/dev/hda1。
第二,进入Linux,并以🐲 root 的身份☔登录并【dēng lù bìng】进行挂【jìn háng guà】🕎接文件【jiē wén jiàn】系统。
# mkdir c
# mount -t vfat /dev/hda1 /c
因为我【yīn wéi wǒ】们将Apache的源码【de yuán mǎ】📕放置于c盘🈯,所以现【suǒ yǐ xiàn】🚠在要先🥒把它挂【bǎ tā guà】载至新建的目录/c里面。
第三【dì sān】🖐,把此程序拷贝【xù kǎo bèi】⛓到/tmp下,以便操【yǐ biàn cāo】🥅作。
#cp /c/apache_1.3.9.tar.gz /tmp
注意:Linux下所有的文件👺名都是【míng dōu shì】区分大【qū fèn dà】小写的。接下来【jiē xià lái】,我们就【wǒ men jiù】📁要把源码从压【mǎ cóng yā】缩包中解压缩🌟出来。相应的🧥命令为🎐:
#cd /tmp
#tar zxvf apache_ 1.3.9.tar.gz
解压缩【jiě yā suō】后进入存放源【cún fàng yuán】😴码的目录【lù】,使用编⛎译配置脚本进🧘行环境的设置。
#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
这里告【zhè lǐ gào】诉🍍Apache把配置文件【wén jiàn】🍽保存在/etc/httpd目录【mù lù】中🍫,其它文【qí tā wén】件【jiàn】🍽(例如HTML手册文♒档【dàng】、CGI-BIN目录【mù lù】💟)都保存【dōu bǎo cún】在 /home/httpd目录【mù lù】下👬。也告诉🍍Apache将最常用的模😎块作为😩DSO模块编译。DSO就是Dynamic Shared Object的缩写【de suō xiě】🕑。通过DSO支持的模式编译Apache,能够随【néng gòu suí】🕵时从Apache里面增加和移除模块【chú mó kuài】,而不需【ér bú xū】🏆要重新编译它【biān yì tā】,具体的模块见下文🖍。
第四【dì sì】,在执行【zài zhí háng】🌩./configure 之后,配置脚【pèi zhì jiǎo】💔本会自动生成 Makefile。这时🌴,我们就【wǒ men jiù】可以开始编译🌺源码了。
#make
源码编【yuán mǎ biān】译完成🤫后,就要使【jiù yào shǐ】用make install安装【ān zhuāng】Apache至缺省的目录【de mù lù】下🎄。当然也👛可以通过以下🎄命令📷:
#rpm -ivh apache*.rpm
安装😃Apache的RPM包【bāo】。这种方🥪法较为简单【jiǎn dān】,因此不【yīn cǐ bú】再详细🕵介绍。
配置
安装完Apache后,开始它的配置【de pèi zhì】🕍工作。在其主💔目录下【mù lù xià】🎼有httpd.conf、access.conf、srm.conf 及Magic等四个🔔文件【wén jiàn】🤢,其中httpd.conf是主要【shì zhǔ yào】🆚的配置【de pèi zhì】🕍文件【wén jiàn】🤢,access.conf是访问【shì fǎng wèn】🌼控制配【kòng zhì pèi】置文件【wén jiàn】💌,srm.conf 则是对【zé shì duì】👙于Web主机的【zhǔ jī de】🛩文件【wén jiàn】🤢资源的配置【de pèi zhì】🕍文件【wén jiàn】🤢。Magic是针对mime模块的设置【shè zhì】,我们一般不改动这个【dòng zhè gè】文件【wén jiàn】🤢。
在【zài】😬Apache运行的🤘时候,它先调用【yòng】httpd.conf,接着是【jiē zhe shì】srm.conf,最后是🗝access.conf。在【zài】😬较新的Apache发行版【fā háng bǎn】⬅本中,它建议srm.conf和access.conf 两个文【liǎng gè wén】件的内容为空🔗,把设置选项完全存放【quán cún fàng】在【zài】😬httpd.conf之中,这样会📭更加有😢利于服务器的【wù qì de】安全性【ān quán xìng】🐻。
下面就⛹以httpd.conf来开始📶我们神😊奇的【qí de】Web网络世【wǎng luò shì】界【jiè】。
1.全局环境变量的设置
httpd.conf是以全局环境变量的设置开🕙始的【shǐ de】💭。我们将要一步步介绍其具体【qí jù tǐ】的参数【de cān shù】💫。
ServerType standalone
ServerRoot "/etc/httpd"
第一行"ServerType"指令,说明Apache是以一📦个独立🌊的(Standalone)守护进🐖程的身份运行【fèn yùn háng】于后台【yú hòu tái】🕑,还是由【hái shì yóu】👯另外的【lìng wài de】🚔后台守♒护进程【hù jìn chéng】💢(Xinetd)在接到HTTP请求的时候唤醒【xǐng】。对于正【duì yú zhèng】式的互📳联网站【lián wǎng zhàn】点来说✏,standalone可以提供比xinetd方式更🦔快的客户端响应速度。因此我们选用【men xuǎn yòng】standalone模式【mó shì】。第二行代码介【dài mǎ jiè】绍了该服务器🌯配置文件的相【jiàn de xiàng】📂对根目【duì gēn mù】录,一般是/etc/httpd,我们在安装时已经设🎞置好。请注意,不要在此目录【cǐ mù lù】最后加【zuì hòu jiā】💠"/"。
LockFile /var/lock/httpd.lock
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
LockFile在安装Apache时指定【shí zhǐ dìng】选用了🚳USE_FCNTL _SERIALIZED_ACCEPT,USE_FLOCK_SERIALIZED_ACCEPT等参数【děng cān shù】。作为🧤Apache连接出现错误🐂的记录🏃文件🌊,它会把进程的【jìn chéng de】PID值自动🐼加在该文件🌊中【zhōng】。请注意🔎,该文件🌊应保存【yīng bǎo cún】在本地的硬盘【de yìng pán】中【zhōng】。PidFile记录着🎅每次服🚓务器运【wù qì yùn】行时的进程号。ScoreBoardFile是某些【shì mǒu xiē】特定系统上服【tǒng shàng fú】务程序中父子【zhōng fù zǐ】进程通讯记录【xùn jì lù】的文件⛓。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
以上两项是指定服务📆器资源【qì zī yuán】及控制🈵权限的【quán xiàn de】文件🐘,在默认【zài mò rèn】情况下🔮并不使用它们【yòng tā men】。
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
这四项设定了🥏服务器的连接💖属性。第一行说明了【shuō míng le】🍣TCP中👳ack的响应【de xiǎng yīng】时🕒间为300秒;第二项表示是🤮否保持服务响【fú wù xiǎng】🐈应的连【yīng de lián】接💖;紧接着🐵的两项【de liǎng xiàng】定义了【dìng yì le】这种连接的最【jiē de zuì】📛大响应数目及响应时🕒间。如果👀MaxKeepAliveRequests设为【shè wéi】0,那它便【nà tā biàn】是🤮unlimited,当然这【dāng rán zhè】就要考【jiù yào kǎo】虑系统的承载能力了。
MinSpareServers 5
MaxSpareServers 20
StartServers 8
这三项定义了🖨服务程【fú wù chéng】序的最小、最大空【zuì dà kōng】的子进程数【jìn chéng shù】目及服务🚤程序开始时的【shǐ shí de】🚭进程数【jìn chéng shù】。5、20、8分别是它们的🍠默认数值【zhí】😈。
MaxClients 150
MaxRequestsPerChild 100
以上两【yǐ shàng liǎng】行定义了同一🔴时刻最【shí kè zuì】🥢多的客户连接数目和【shù mù hé】每个连接的子🕗进程数。
Listen 3000
Listen 12.34.56.78:80
BindAddress *
这里定义了服务程序✂监听来【jiān tīng lái】自以上【zì yǐ shàng】IP、端口号🛣的【de】Request。由于👒BindAddress只支持*(代表所【dài biǎo suǒ】有的【de】🐦IP),所以产生了🔻Listen这个参【zhè gè cān】🍏数以便更灵活地处理【dì chù lǐ】客户机的【de】响应。
ExtendedStatus On/Off
这条指【zhè tiáo zhǐ】📲令说明了是否【le shì fǒu】跟踪服务程序♊所产生的扩展状态【zhuàng tài】〰。
以下是【yǐ xià shì】对于DSO的支持,分别利用了🍶LoadModule、AddModule参数。我们可以阅读【yǐ yuè dú】🌖表【biǎo】🔥1,加载自己所需要的模块【kuài】🙉。
2.主服务器设置
下面设置主服【zhì zhǔ fú】🛒务器(非虚拟服务主【fú wù zhǔ】🤘机)。
Port 80
这个参🏿数给出🙇了服务【le fú wù】程序开启监听【qǐ jiān tīng】的端口🌽号为【hào wéi】80。
User nobody
Group nobody
ServerAdmin root@localhost
ServerName localhost
上面的第一、二行代😖表了打开服务🛀进程的【jìn chéng de】用户名和用户🏙组名🅾。第三【dì sān】、四行则是管理【shì guǎn lǐ】员的邮【yuán de yóu】件地址和此服👝务器的【wù qì de】主机名【zhǔ jī míng】🗂。
DocumentRoot "/home/httpd/html"
DirectoryIndex index.html index.htm index.shtml index.cgi
UserDir public_html
面前两【miàn qián liǎng】🍽行定义【háng dìng yì】了网页的主目💧录和首🚍页名称。UserDir给出了【gěi chū le】用户的【yòng hù de】绝对路【jué duì lù】径🍨,也就是【yě jiù shì】🐷说明个【shuō míng gè】人主页🚸存放路径🍨。
AccessFileName .htaccess
此指令指定了✔每个目【měi gè mù】🔔录下的文件🛏权限是【quán xiàn shì】由.htaccess决定😬。当Apache试图读🔎取某一【qǔ mǒu yī】目录下【mù lù xià】的文件🛏时🎣,它将先查阅🐖".htaccess"文件中所列的访问控【fǎng wèn kòng】🔂制指令,并执行相应的操作。
Mime 的文件🛏定义类【dìng yì lèi】🍬型是由📄下面的【xià miàn de】两句所决定😬:
MIMEMagicFile share/magic
AddLanguage en .en
此参数【cǐ cān shù】可以增加对多种语言【zhǒng yǔ yán】的支持。
LogLevel warn
CustomLog /var/log/httpd/access_log common
上面这【shàng miàn zhè】些代码【xiē dài mǎ】代表了🍘客户机【kè hù jī】访问服【fǎng wèn fú】务器的🌞一些日志文件。
完成全【wán chéng quán】局设置后,我们还要针对每个目【měi gè mù】🔔录的权限进行🗨特定的配置。
3.目录权【mù lù quán】限的配置
我们只📑以一个👔目录为【mù lù wéi】例【lì】,其它的【qí tā de】路径可🍴以类推😍。
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.虚拟主机配置【jī pèi zhì】
虚拟主机配置【jī pèi zhì】是🏔Apache最精彩💟的地方【de dì fāng】♏之一,很多的【hěn duō de】ASP也是【yě shì】🏔利用Apache这个特【zhè gè tè】性来提【xìng lái tí】😋供优质服务的【fú wù de】。
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>
我们可以看到【yǐ kàn dào】它的语【tā de yǔ】法和真正主机设置相🏣差甚小,因此不再介绍【zài jiè shào】。
关键词:Apache,Web服务器
阅读本文后您有什么感想? 已有 人给出评价!
- 6
- 263
- 5
- 5
- 9
- 4