学习情境2.4 Apache Web服务器架设
2.4.1 学习要点
1.知识点:理解Apache服务器的工作原理,熟悉组织和管理站点内容的配置方法
2.技能点:掌握Apache的安装和简单配置,掌握访问控制、认证和授权的配置,正确安装php模块
2.4.2 任务描述
正确安装Apache软件,建立站点www.sl232.cn,端口5555,主目录设为Apapche,默认目录,访问Apache的默认主页index.html。
建立虚拟主机aaa.sl232.cn,端口5555,主目录为/www,主页为index.html(可从ftp://172.17.4.100上得到,为国旗飘扬页面),需输入用户cqvie密码cqvie访问。
安装php,让apache支持php动态网页。
编写主页为index.php文件,内容显示php的环境状况。
在www.sl232.cn站点下建立虚拟目录php,主目录为/phptest,其主页为index.php文件(php环境测试页面)。
2.4.3 相关知识
1.Apache web服务器简介
Web服务器也称为WWW(World WideWeb)服务器,主要功能是提供网上信息浏览服务。Apache是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。这里主要介绍如何进行Apache Web服务器的架设。
2.Apache的目录结构
在Red Hat Linux中,Apache将自己的所有配置文件和日志文件分别放在了“/etc/httpd”和“/var/log/httpd”目录下,其中“/etc/httpd/conf”下为配置文件,“/var/log/httpd”下为日志文件。在“/etc/httpd/”目录下有一个链接“logs”,可以直接进入/var/log/httpd目录。
在默认安装Apache时,将建立“/var/www”目录(Apache的默认站点目录),并在其下建立五个子目录:
(1)html/:存放HTML(主页)文件;
(2)cgi-bin/:存放CGI程序;
(3)manual/:存放apache系统的说明文档;
(4)error/:存放服务器错误提示文件;
(5)icons/:存放服务器自带图标。
Apache服务器的配置文件httpd.conf位于/etc/httpd/conf/目录下,用来配置Apache服务器的行为。
3.Apache服务器设置
编辑httpd.conf文件以下参数,可以对Apache服务器进行相关设置。
(1)设置网站服务端口号
Listen 80
设置httpd监听客户端请求的IP地址和连接端口号,默认是监听服务器拥有的所有IP地址。
(2)设置服务器管理员的E⁃mail地址
ServerAdmin root@localhost
设定APACHE的管理者E-mail信箱地址。预设的是超级使用者的E-mail。当服务器发生网页错误时,就会将错误的信息寄到下列的邮件信箱地址,预设是root@localhost。
(3)设置默认站点的主机名
ServerName www.wnt.com.cn:80
指定Apache用于识别自身的名字和端口号。预设是使用注解符号暂时关闭,如果我们的主机名称为www.sl099.cn,就将ServerName指令设成www.sl099.cn,80是服务器的监听端口。
(4)设置默认站点主目录及权限
DocumentRoot“/var/www/html”//网站文档的根目录设置为/var/www/html
<Directory“/var/www/html”>//设置/var/www/html目录的访问权限
Options Indexes FollowSymLinks//让目录索引,符号连接有效
AllowOverride None//让默认的.htacces控制文件失效
Order allow,deny//访问的顺序是先允许后拒绝
Allow from all//允许所有主机访问
</Directory>
Apache的配置文件httpd.conf是主要的配置文件,但是针对每个目录,Apache还允许在它们各自的目录下放置一个叫做.htacess的文件,这个文件同样也能控制这个目录的属性,Al⁃lowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。
AllowOverride:设定是否使用访问控制文件。
All缺省值,让用户访问控制文件有效;
None让用户访问控制文件.htacces无效。
Options:设定目录访问特性。
①All:准许以下除MultiViews以外所有功能;
②MultiViews:允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用;
③SymLinksIfOwnerMatch:在该目录中仅仅跟踪本站点内的链接;
④FollowSymLinks:允许浏览器访问文档根目录(DocumentRoot)之外的文档;
⑤ExecCGI:允许这个目录下可以执行CGI程序;
⑥Indexes允许浏览器可以生成这个目录下所有文件的索引,使得在这个目录下没有index.html(或其他索引文件)时,能向浏览器发送这个目录下的文件列表。
Order:设置网站的访问先后顺序。
①Allow允许访问;
②deny拒绝访问;
如Order allow,deny表示先允许再拒绝;如果是Order deny allow表示先拒绝再允许。
例:
Order allow,deny
Allow from 210.62.146
Deny from all
原来只想允许210.62.146的所有主机可以访问,但是Order的顺序是先允许后拒绝,所以最后还是拒绝所有主机,结果从210.62.146的主机也无法访问,请小心Order的顺序。
(5)设置用户个人网站目录
UserDir public_html
设置用户个人网站目录为用户主目录下的public_html,通过“http://www.wnt.com.cn/~用户名”来访问个人网站。如果不想为正式的用户提供网页服务,使用DISABLED作UserDir的参数即可。
(6)设定网站访问的默认文档优先顺序
DirectoryIndex index.php index.html index.html.var
将这几个文件设为预设首页,也就可以直接输入http://网站地址,而不用再输入网页文件,如果这几个文件都存在,将按照index.php,index.html,index.html.var顺序访问。
(7)设置访问控制文件名AccessFileName.htaccess
AccessFileName定义每个目录下的访问控制文件的文件名,缺省为.htaccess,可以通过更改这个文件,来改变不同目录的访问控制限制。
(8)映射虚拟目录
因为某种需要而使用除实际站点目录(即主目录)以外的其他目录,或者使用其他计算机上的目录,来让Internet用户作为站点访问。这时,就可以使用虚拟目录,即将想使用的目录设为虚拟目录,而让用户访问。
Alias /php /phptest//设置实际目录/phptest的虚拟目录为php
定义好映射的路径之后,应该需要对/phptest目录设置访问限制。
<Directory /phptest>//设置对/phptest目录的访问权限
Order allow,deny //设置访问目录的顺序
Allow from all //允许所有主机访问
</Directory>
(9)使用多种语言的优先顺序设置
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
如果同时使用多种语言,则可以使用LanguagePriority选项来排定使用的语言先后顺序。
En表示英语,zh-CN表示中国内地简体,zh-TW表示中国台湾繁体
4.Apache虚拟主机的配置
可以通过设置虚拟主机以实现在你的主机上有多个域名/主机名。大多数配置信息只使用基于名字的虚拟主机,因此服务器不必担心IP地址的问题。
要建立非基于IP的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机。因此需要更改DNS服务器的配置,为服务器增加多个主机记录或者CNAME选项,编辑2.1学习情境的数据库文件/var/named/chroot/var/named/zone.exp:


基本的设置选项都是为了www主机设定的,如果要为www1和www2设定虚拟主机,就要使用VirtualHost语句定义不同的选项,在语句中可以使用配置文件前面中的大部分选项,而可以重新定义几乎所有的针对服务器的设置。编辑/usr/local/apache2/conf/extra/httpd-vhosts.conf文件
NameVirtualHost 172.17.4.99//使用172.17.4.99这台主机
<VirtualHost 172.17.4.99>//虚拟主机地址是172.17.4.99
ServerAdmin webmaster@sl099.com//设置管理员邮件地址
DocumentRoot/www1//设置虚拟主机的网站目录/www1
ServerName www1.sl099.com//设置虚拟主机的域名是www1.sl099.com
ErrorLog“logs/www1.sl099.com-error_log”//出错日志的记录位置
CustomLog“logs/www1.sl099.com-access_log”common//设置日志文件的位置及格式
</VirtualHost>
<VirtualHost 172.17.4.99>
ServerAdmin webmaster@sl099.com
DocumentRoot/www2
ServerName www2.sl099.com
ErrorLog“logs/www2.sl099.com-error_log”
CustomLog“logs/www2.sl099.com-access_log”common
</VirtualHost>
这里需要注意的是,VirtualHost的参数地址一定要和NameVirtualHost定义的地址相一致,Apache服务器才承认这些定义是为这个IP地址定义的虚拟主机。
2.3.4 任务实施
Apache Web服务器安装配置要求
(1)正确安装Apache软件,建立站点www.sl232.cn,端口5555,主目录设为Apapche默认目录,访问Apache的默认主页index.html。
(2)建立虚拟主机aaa.sl232.cn,端口5555,主目录为/www,需输入用户cqvie密码cqvie访问。
(3)安装php,让Apache支持php页面。
(4)编写主页为index.php文件,内容显示php的环境状况。
(5)在www.sl232.cn下建立虚拟目录php,主目录为/phptest,其主页为index.php文件(php环境测试页面)。
任务步骤如下
(1)下载安装Apache源码包
①从http://www.apache.org下载Apache源码包httpd-2.2.10.tar.gz到本地的Linux服务器上。
②用tar指令解压软件。
#tar xvzf httpd-2.2.10.tar.gz
③安装Apache。
#cd httpd-2.2.10
[root@localhost httpd-2.2.10]#./configure—prefix=/usr/local/apache2—enable-so
Apache安装在/usr/local/apache2,允许DSO动态共享对象调用特性。
[root@localhost httpd-2.2.10]#make//编译
[root@localhost httpd-2.2.10]#make install//安装
安装时间根据硬件情况不同,一般就几分钟。
(2)启动Apache服务器
①启动Apache服务器
[root@localhost httpd-2.2.10]#/usr/local/apache2/bin/apachectl start
在Windows下访问服务器http://www.sl110.cn
显示:
Itworks!
表明Apache服务正常。
②修改Apache的服务端口
#cd/usr/local/apache2/conf
#vim httpd.conf
把Listen 80修改为Listen 5555,这样Apache的服务端口就从默认的80修改为5555。
③重启Apache
#/usr/local/apache2/bin/apachectl restart
在Windows下访问服务器显示http://www.sl232.cn:5555,网页还是显示正常。
(3)下载安装php5模块
①从http://www.php.org下载php源码包php-5.2.6.tar.gz到本地的Linux服务器上。
②还需要以下的支持库:
最新版本的libxml2 XML解析器,从XmlSoft.org下载。
最新版本的zlib库从www.gzip.org/zlib下载。
③安装zlib库。
#tar xvzf zlib-1.2.2.tar.gz//解压zlib-1.2.2.tar.gz软件
#cd zlib-l.2.2
#./configure—prefix=/usr/local/zlib//设置软件的安装位置在/usr/local/zlib
#make//编译
#make install//安装
这一步结束时,zlib被安装在/usr/local/zlib下。你可以使用指定prefix选项将其安装到其他地方。
④安装libxml2库。
#tar xvzf libxml2-2.6.19.tar.gz//解压libxml2-2.6.19.tar.gz软件
#cd libxml2-2.6.19
#./configure//设置
#make//编译
#make install//安装
这一步结束时,libxml2被安装在/usr/local/lib下。你可以使用指定prefix选项将其安装到其他地方。
⑤安装php5模块。
#tar xvzf php5.2.6.tar.gz//解压软件
#cd php5.2.6
#./configure—prefix=/usr/local/php5\//设置php5的安装路径
—with-apxs2=/usr/local/apache2/bin/apxs\//告诉php查找Apache 2.0的地方
—with-libxml-dir=/usr/local/lib\//告诉php放置libxml2库的地方
—with-zlib—with-zlib-dir=/usr/local/zlib//告诉php放置zlib库的地方
—with-mysql=/usr/local/mysql\//激活regularMySQL扩展功能
—with-mysqli=/usr/local/mysql/bin/mysql_config\//激活新增加的MySQL功能
—enable-mbstring\//允许使用等宽字符集
—enable-soap—enable-sockets//激活SOAP和Web services支持,socket通讯特性
#make
#make install
这一步结束时,libxml2被安装在/usr/local/php5下。你可以使用指定prefix选项将其安装到其他地方。
#cp php.ini-dist/usr/local/php5/lib/php.ini//php.ini是php的配置文件
(4)编辑Apache的全局配置文件httpd.conf
①进入Apache配置目录:
#cd/usr/local/apache2/conf
②编辑httpd.conf配置文件。
#vim httpd.conf
添加对php5模块的支持,php5在安装时会自动修改http.conf。
LoadModule php5_module modules/libphp5.so
添加对.php的脚本文件支持。
找到这两行:
AddType application/x-compress.Z
AddType application/x-gzip.gz.tgz
在其后添加:
AddType application/x-httpd-php.php
修改网站主页的显示顺序。
找到<IfModule dir_module>
DirectoryIndex index.html index.html.var
</IfModule>
修改DirectoryIndex参数如下:
DirectoryIndex index.php index.html
(5)编辑Apache的语言编码配置文件httpd-languages.conf
#cd/usr/local/apache2/conf/extra
#vim httpd-languages.conf
找到这一行LanguagePriority ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW
修改为LanguagePriority zh-CN ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-TW
这样网站的语言默认编码就是zh-CN,中文网页正常显示。
(6)编辑Apache的个人网站配置文件httpd-userdir.conf
#cd/usr/local/apache2/conf/extra
#vim httpd-userdir.conf
修改UserDir public_html为
UserDir www//把个人网站的目录从public_html改到www。
修改<Directory“/home/∗/public_html”>为
<Directory“/home/∗/www”> //设置个人网站目录/home/∗/www的访问权限,∗表示个人目录
(7)编辑Apache的虚拟主机配置文件httpd-vhosts.conf
①DNS服务的数据文件修改。
首先DNS服务器的数据库文件/var/named/chroot/var/named/zone.exp中要有aaa的别名
aaa CNAME www
这样aaa.sl232.cn会被解析到www.sl232.cn。
②编辑虚拟主机配置文件。
#cd/usr/local/apache2/conf/extra
#vim httpd-vhosts.conf
NameVirtualHost 172.17.4.232:5555//使用172.17.4.232这台主机,端口号5555
<VirtualHost 172.17.4.232:5555>//虚拟主机地址是172.17.4.232,端口号5555
ServerAdmin webmaster@sl232.cn//设置管理员邮件地址
DocumentRoot/www//设置虚拟主机的网站目录/www
ServerName aaa.sl232.cn //设置虚拟主机的域名是aaa.sl232.cn
ErrorLog“logs/aaa.sl232.cn-error_log”//出错日志的记录位置
CustomLog“logs/aaa.sl232.cn-access_log”common//设置日志文件的位置及格式
</VirtualHost>
这样aaa.sl232.cn的虚拟主机的访问目录就指向/www。
上传网页到/www,再修改/www的访问权限。
#vim/usr/local/apche2/conf/httpd.conf
<Directory“/www”>//设置对/www目录的访问权限
Options FollowSymLinks//允许符号连接
AllowOverride None//让/www目录下的.htaccess访问控制文件无效
Order allow,deny//设置访问顺序
Allow from all//允许所有主机访问
</Directory>
这样,目录/www就可以被访问。
(8)配置Apache对虚拟主机访问的用户存取认证
①建立用户的密码文件。
#mkdir/key
#cd/key
建立密码文件所存放的目录/key,该目录可随便取名。
利用Apache的htpasswd命令,建立一个passwd的密码文件。该文件有一名为cqvie的用户。
#/usr/local/apache2/bin/htpasswd-c passwd cqvie
New password://输入用户cqvie的密码
Re-type new password://再次输入上面的密码
Adding password for user cqvie
-c参数代表create创建一新文件。这样就创建一个密码文件passwd,查看文件内容,发现有一个用户
#cat passwd
cqvie:rbM.0xI30TXvc
其中cqvie是用户:后是cqvie用户密码的密文。
如果要添加用户test,再次执行htpasswd指令。
#/usr/local/apache2/bin/htpasswd passwd test
New password://输入用户test的密码
Re-type new password:
Adding password for user test
#cat passwd
cqvie:rbM.0xI30TXvc
test:tv2SzT4Ty8mOI
发现密码文件passwd新添加了用户test。
②设置对目录的/www的访问权限。
#vim/usr/local/apche2/conf/httpd.conf
<Directory“/www”>
Options FollowSymlinks//允许Apache遵循符号链接
AllowOverride ALL//允许服务器的所有访问控制文件
Order allow,deny
Allow from all
AuthName“www测试”//认证名称设为www测试
AuthType Basic//用户认证协议设为Basic基本认证
AuthUserFile“/key/passwd”//用户密码文件
require user cqvie//需要cqvie用户才可以访问
</Directory>
(9)设置Apache的虚拟目录
①在系统下建立/phptest目录。
#mkdir/phptest
②在该目录下创建index.php文件。
#vim/phptest/index.php
编辑文件内容如下<?php phpinfo();?>。这是php一个脚本,函数返回php的所有信息。包括了php的编译选项及扩充配置、php版本、服务器信息及环境变量、php环境变量、操作系统版本信息、路径及环境变量配置、HTTP标头及版权宣告。
③修改Apache配置文件httpd.conf。
#vim/usr/local/apche2/conf/httpd.conf
在文件末尾添加如下内容:
Alias /php /phptest //phptest实际目录设置为php虚拟目录
<Directory“/phptest”>//设置/phptest目录的访问权限
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
(10)重新启动Apache做测试
#/usr/local/apache2/bin/apachectl restart
在Windows下访问服务器http://www.sl233.cn:5555,http://aaa.sl232.cn:5555,http://www.sl232.cn/php:5555,网页正常显示如图2.4.1~2.4.3所示。

图2.4.1 http://www.sl233.cn:5555网页

图2.4.2 http://aaa.sl232.cn:5555网页

图2.4.3 http://www.sl232.cn/php:5555网页
2.4.5 考核要点
表2.4.1 Apacheweb服务器架设考核要点

2.4.6 能力拓展
一、阅读以下关于在Linux系统中配置Apache服务器的说明,回答问题1至问题3。
【说明】
在Linux系统中采用Apache配置Web服务器。Apache服务器提供了丰富的功能,包括目录索引、目录别名、虚拟主机、HTTP日志报告、CGI程序的SetUID执行等。
【问题1】
请在(1)、(2)、(3)、(4)空白处填写恰当的内容。
Web客户机与服务器共同遵守(1)协议,其工作过程是:Web客户端程序根据输入的(2)连接到相应的Web服务器上,并获得指定的Web文档。动态网页以(3)程序的形式在服务器端处理,并给客户端返回(4)格式的文件。
(1)~(4)的备选项
A.HTML B.ASP C.JSP D.IIS
E.SOAP F.URL G.HTTP H.VGA
【问题2】
请在(5)~(11)空白处填写恰当的内容。
Apache的主配置文件为httpd.conf。某Web服务器的httpd.conf文件部分内容如下:
ServerType standalone ServerRoot“/etc/httpd”Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 20
StartServers 8
MaxClients 150
MaxRequestsPerChild 100
Port 8080
User nobody
Group nobody
ServerAdmin root@webtest.com.cn
ServerNameWebTest
DocumentRoot“/home/webtest/jakarta-tomcat/webapps/webtest”Options FollowSymLinks
AllowOverride None
Options Indexes Includes FollowSymLinks
AllowOverride None Order allow,deny Allow from all
DirectoryIndex index.html index.htm index.shtml index.cgi
Alias/doc//usr/doc/order deny,allow deny from all
allow from localhost
Options Indexes FollowSymLinks
以RPM方式安装的Apache服务器,配置文件httpd.conf存储在Linux的(5)目录下。根据上述配置文件,该Web服务器运行在(6)模式下,其运行效率比在inetd模式下(7);当某个Web连接超过(8)秒没有数据传输时,系统断开连接。
如果客户需要访问Linux服务器上/usr/doc目录,则应在浏览器地址栏中输入(9)。虚拟主机是指在同一台服务器上实现多个Web站点。虚拟主机可以是基于IP地址的虚拟主机,也可以是基于(10)的虚拟主机。创建基于(10)的虚拟主机时,还需要配置(11),并在区数据库文件中添加相关记录。
【问题3】
如图2.4.4所示是配置Apache服务器的一个窗口,选中目录选项ExecCGI,意味着什么?如果将图示的目录选项中Indexes选中状态取消,并且虚拟主机目录中也没有相关的Index文件,客户机通过浏览器访问有关的虚拟主机目录时有何后果?

图2.4.4 配置Apache服务器的一个窗口

