第7章Web服务.docx
《第7章Web服务.docx》由会员分享,可在线阅读,更多相关《第7章Web服务.docx(38页珍藏版)》请在冰豆网上搜索。
![第7章Web服务.docx](https://file1.bdocx.com/fileroot1/2023-2/21/4c4d87e8-3e07-4175-b8dc-5d1362cd2bbf/4c4d87e8-3e07-4175-b8dc-5d1362cd2bbf1.gif)
第7章Web服务
第7章Web服务器
本章内容:
⏹Web服务概述
⏹Apache的安装和启动
⏹配置Apache
⏹实现动态站点
学习目标:
⏹了解Web的工作过程
⏹熟悉apache的特点
⏹掌握apache的安装和配置
由于Linux操作系统的高稳定性,世界上大部分的网站都架设在Linux系统上,有名的如Yahoo、Hotmail等网站。
在Linux系统上架设Web服务器时使用最多和最广泛的软件是Apache,本章我们就以RedHatEnterpriseASLinuxAS4.0系统为例介绍Apahce的安装及详细配置。
15.1Web服务概述
目前,WEB服务已经成为计算机用户在互联网上查询和浏览信息的主要的方法。
WWW提供一种交互式图形界面的Internet服务,具有强大的连接功能和易于使用的特点。
因此使得很多用户通过简单的图形界面就可以访问各个大学、组织和企业等机构和个人最新信息和服务等。
15.1.1Web服务的工作过程
Web服务系统采用的是客户机/服务器的工作方式。
服务器主要采用的是apache和windows的IIS;客户端常用的程序是浏览器(如IE、netscape、Mozilla等)。
这样用户就可以在地址栏输入统一资源定位符(URL)来访问Web页面。
Web最基本的是超文本传输协议和超文本标注语言。
超文本传输协议即HTTP协议,是Web服务必须遵从的协议,默认的端口是80端口。
整个通信流程如图15-1所示。
图15-1Web服务器通信过程
(1)Web客户机建立到服务器的TCP连接
(2)Web客户(浏览器)根据用户输入的URL把请求发送到相应的远程服务器,并等待远程服务器回送过来的响应
(3)远程服务器接受客户端发送过来的请求,分析请求、处理请求而形成结果返回给客户端。
(4)从指定的服务器端获得Web文档并断开与远程服务器的连接
15.1.2Apache的简介
Apache是目前使用最为广泛的WEB服务器,它可以运行在现有的各种平台上。
Apache自1995年推出第一个发行版之后,得到迅速的发展,先后推出1.1、1.2和1.3等多个版本,目前最高版本2.0。
选择WEB服务器,其运行的性能、速度、功能、安全、易扩展性是最为重要的因素,而apache2.0的众多特性保证了apache可以高效、安全、稳定的运行。
其主要特性如下:
●几乎可以运行在所有的计算机平台上.
●实现了动态共享对象(DSO),允许运行时动态装载功能模块。
●采用预生成模式的技术提高响应的速度。
●支持最新的HTTP/1.1协议
●简单而且强有力的基于文件的配置
●支持通用网关接口(CGI) 、JAVA Servlets和FastCGI
●支持虚拟主机和HTTP认证
●集成perl和代理服务器
●可通过WEB浏览器监视服务器的状态,可自定义日志
●支持服务器端包含命令(SSI)和安全SOCKET层(SSL)
●具有用户会话过程的跟踪能力
●支持Unix线程,可使Apache在混合的多进程、多线程模式下运行
●ApacheAPI提高模块的性能
●支持IPv6和多协议支持
●采用过滤器对内容进行有效的处理
●支持多语种错误应答信息
15.2Apache的安装和启动
在Linux系统中可以同时安装和运行多个不同版本的apache,本节将介绍在RedHatEnterpriseLinuxAS4.0系统中安装和启动apache2.0的方法。
15.2.1apache的安装
RedHatEnterpriseLinuxAS4.0系统自带了Apache2.0的软件包,可以在安装Linux系统过程安装该软件包。
如果安装系统时没有选择Apache,则可以通过rpm命令安装,具体操作如下。
//插入第2张安装光盘
#mount/dev/cdrom
#cd/media/cdrom/RedHat/RPMS
//查看是否已安装
#rpm–qa|grephttpd
#rpm–ivhhttpd-2.0.52-9.ent.i386.rpm//安装apache服务器软件包
#rpm–ivhhttpd-manual-2.0.52-9.ent.i386.rpm//安装apache的帮助手册软件包
#rpm–ivhhttpd-suexec-2.0.52-9.ent.i386.rpm//安装apache的CGI支持软件包
用户也可以到http:
//httpd.apache.org下载apache的源代码包,进行源代码的编译安装,具体操作过程如下。
//解压缩源代码包
#tar-xzvfhttpd-2.0.52.tar.gz
#cdhttpd-2.0.52
//配置编译参数
#./configure--prefix=/usr/apache20–enable-so–enable-mods-shared=most
//编译和安装
#make;makeinstall
安装Apache之后,Linux系统下会自动生成许多目录和文件。
但RPM安装与编译方式安装之后,各文件分布的位置不同,下面列出RPM方式安装各文件的路径名称及功能描述。
/etc/httpd/confapache服务器配置文档的目录
/etc/httpd/conf/httpd.confapache服务器的主配置文件
/etc/httpd/modulesapache服务器模块的存放目录
/etc/rc.d/init.d/httpdapache服务器守护进程的启动脚本
/usr/bin/htpasswd设置Web用户口令的实用程序
/usr/sbin/apachectlapache控制程序,可以启动和关闭apache
/usr/sbin/httpdapache守护进程所对应的可执行程序
/usr/share/doc/httpd-2.0.52apache服务器文档信息
/usr/share/man/man1/apache服务器相关指令手册页目录
/var/cache/mod_proxyapache服务器代理缓存文件的存储目录
/var/log/httpdapache服务器日志文件的存放目录
/var/wwwapache服务器文档主目录
/var/www/cgi-binapache服务器CGI程序文件存放目录
/var/www/errorapache服务器错误文档存放目录
/var/www/htmlapache服务器web站点的文件
/var/www/html/manualapache服务器WEB手册
15.2.2apache的启动
安装完apache并设置好httpd.conf文件和相关项目之后,就可以启动apache服务了。
RedHatEnterpriserAS4.0系统中默认httpd.conf文件是正确的,并且Apache以独立运行方式启动,下面是启动的具体方法。
//利用RPM方式安装的apache,可以用service命令启动
#servicehttpdstart
或
#apachectlstart
//检查apache启动是否成功
#pstree|grephttpd
|--httpd-----8*[httpd]//表示启动成功
//设置自动启动
#chkconfig--levelhttpdon
启动apache服务时会读取httpd.conf文件中的设置,因此修改这个文件之后,需要重新启动apache服务才会生效。
重启apache服务的方法如下。
#servicehttpdrestart
15.3配置apache
apache的配置主要集中在/etc/httpd/httpd.conf文件中,本节将详细介绍如何配置apache的httpd.conf文件。
15.3.1默认httpd.conf文件
Apache的默认配置文件httpd.conf适应几乎所有种类操作系统、所有种类硬件下的设置,但不可能为特定平台和特定硬件进行配置。
用户可根据需要针对特定平台对默认的httpd.conf进行修改。
httpd.conf由全局环境设置、主服务器设置和虚拟服务器设置三部分构成,其中“#”开头的为注释行。
1.全局环境设置选项
全局环境设置用于定义apache服务器的工作目录、预派生进程数和工作端口等参数。
常用全局配置选项如下。
(1)设置响应信息中包含操作系统信息
设置服务器响应主机头(header)信息时,显示apache的版本和操作系统的名称,可以设置ServerTokens选项
ServerTokensOS
(2)设置服务器的根目录
ServerRoot"/etc/httpd"
ServerRoot选项用于指定Apache服务器守护进程httpd的运行目录,httpd在启动之后自动将进程的当前目录改变为此目录。
如果在配置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的目录之下。
(3)设置ScoreBoardFile
Apache使用ScoreBoardFile来维护进程的内部数据,通常不设置这个选项,除非用户想在一台计算机上运行多个Apache服务器,这时每个Apache服务器都需要独立的配置文件httpd.conf,并使用不同的ScoreBoardFile。
ScoreBoardFilerun/httpd.scoreboard
(4)设置PID文件位置
PidFilerun/httpd.pid
该选项用于指定Apache记录进程标准符的文件。
由于httpd能自动复制其身,因此系统中同时可以有多个httpd进程,但只有一个初始进程,它是其他进程的父进程。
(4)设置连接超时
Timeout选项用以设置服务器接收到一个请求时,保持连接开启的时间。
超过这个时间服务器会断开和客户端的连接。
Timeout300
(5)设置HTTP保持连接
KeepAlive的值可以为On或Off,Off表示连接不保持,即客户方发送一次请求,服务器方就响应一个文件。
On表示连接保持,避免多次请求与服务器方建立多次连接。
建议此参数值设为On
KeepAliveOff
(6)设置一次HTTP连接支持的最大请求数
当KeepAlive选项值为On时,该选项用于控制连接请求最大数。
默认100,设置为0表示不限制。
MaxKeepAliveRequests100
(7)设置请求之间的间隔时间
KeppAliveTimeout用于设置当保持连接时,两次请求之间时间间隔,单位为秒。
KeepAliveTimeout15
(8)设置服务器进程数
Apache2.0为了提高性能,增加了MPM(Multi-ProcessingModules多道处理模块)。
MPM负责绑定本机网络接口,接受请求并调度子进程来处理请求。
Apache2.0支持3种方式的MPM,分别是预派生(Prefork)MPM、工作者(Worker)MPM和独立子进程(Perchild)MPM。
对于不同的操作系统,所应用MPM方式也是不同的,对于Linux系统下安装的Apache服务器,默认加载了PreforkMPM,如下所示为默认http.conf文件一段MPM配置内容。
#preforkMPM//设置preforkMPM运行方式的参数
//判断apache是否内置prefork模块
StartServers8//设置服务器启动时运行进程数(8个httpd子进程)
MinSpareServers5//设置apache生成空闲子进程数的最小值
MaxSpareServers20//设置apache生成空闲子进程数的最大值
//限制同时连接的数目,因为同时连入过多的数目会降低系统的性能。
MaxClients150
//控制每个子进程在终止处理请求之前能够提出的连接请求数量,0表示没有限制。
MaxRequestsPerChild1000
#workerMPM//设置workerMPM运行方式的参数
//判断是否内置worker模块
StartServers2
MaxClients150
MinSpareThreads25
MaxSpareThreads75
ThreadsPerChild25//每个子进程可以生成多少个线程,以处理客户对Web站点的请求。
(MaxThreadsPerChild:
限制每个子进程允许的线程数)
MaxRequestsPerChild0
(9)设置地址绑定
Linsten选项的作用是将Apache服务器绑定到指定的IP地址和端口上。
在Linux系统下,一个主机可以有多个网络接口和IP地址,此时可以使用Linsten选项绑定Apache到指定的IP地址上,也可以同时监听所有的IP地址。
Listen80//监听所有接口的80号端口
Listen192.168.5.1:
80//只监听192.168.5.1的80号端口
(10)配置DSO,加载模块
Apache支持DSO功能,在编译apache的时候,动态编译的模块在服务器运行过程中并不被调入内存。
如果需要使用某个模块时,可以使用LoadModule选项指定模块名称和路径,实现动态加载。
LoadModuleaccess_modulemodules/mod_access.so
LoadModuleauth_modulemodules/mod_auth.so
LoadModuleauth_anon_modulemodules/mod_auth_anon.so
……………….
……………………..
(11)加载子配置文件
httpd.conf是apache的主配置文件,为了提高可读可用Include选项包含其他的子配置文件。
Includeconf.d/*.conf//包含存放在/etc/httpd/conf.d下所有.conf结尾的文件
(12)配置状态信息
Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态。
默认情况下只能生成基本的状态信息,如要生成完整的状态信息,需要使用ExtendedStatus,并设置参数值为On。
ExtendedStatusOn
以上介绍的是常用全局配置选项,用户可根据自已的需要修改默认httpd.conf中全局选项,以实现自已的目标。
2.主服务器配置
默认httpd.conf文件的第二部分用来设置主服务器,这部分的设置将应用于所有的Web站点,同时这部分的设置也是虚拟主机的默认设置。
下面具体介绍默认httpd.conf中包含的主服务器配置选项。
(1)设置apache的运行用户和组
用户在运行Apache的时候最好不要以root用户的身份来运行,配置选项User和Group分别用于指定运行apache的用户和用户组,默认配置如下。
Userapache
Groupapache
(2)设置管理员的E-Mail地址
ServerAdminroot@localhost
ServerAdmin选项的作用是设置在服务器出现问题时,把错误信息发送到指定的邮箱中去。
这个E-Mail地址也会出现在服务器自动产生的Web页面上,当出现了HTTP错误的时候提示Web使用者用此E-Mail地址和管理员联系
(3)设置服务器名
默认情况下Aapache服务器会通过DNS来自动获取自身主机的名称。
但有时候域名解析会出现问题,如域名反向解析不正确,则需要用ServerName来设置服务器名。
通常一个Web服务器可以具多个名字,客户浏览器可以使用所有这些名字或IP地址来访问这台服务器,但在没有定义虚拟主机的情况下,服务器总是以自已在ServerName中定义的DNS名字回应浏览器。
服务器名一定要设置正确,否则apache服务器无法正常启动。
ServerNamenew.host.name:
80
(4)设置正式名称
UseCanonicalName选项的作用是设置服务器正式名称,该选项的值可以为Off或On。
UseCanonicalName为Off时使用客户端提供的的主机名和端口,为On时使用ServerName选项中指定的主机名和端口。
UseCanonicalNameOff
(5)设置站点主目录
DocumentRoot"/var/www/html"
DocumentRoot选项定义服务器对外发布的文件所存放的路径,默认路径是/var/www/html,客户端请求的URL就被映射为该路径中。
当然,被发布的目录属性必须允许访问用户读取和执行,否则客户端无法浏览器目录内容。
如果需要客户端利用http协议向发布目录中上传内容,目录属性必须允许用户写入。
(6)设置目录访问权限
利用Directory容器可以配置目录的访问权限及目录选项,容器内由若干个配置选项构成,常用的选项如表15-1所示。
表15-1常用的目录配置选项
选项名
说明
Options[+/-]特性值
指令特定目录的特性,目录的特性值如下:
●All除MultiViews之外的所有特性。
这是默认设置。
●ExecCGI允许使用mod_cgi执行CGI脚本。
●FollowSymLinks服务器允许在此目录中使用符号连接
●IncludesNOEXEC允许服务器端包含,但禁用"#execcmd"和"#execcgi"。
但仍可以从ScriptAlias目录使用"#includevirtual"虚拟CGI脚本。
●Indexes如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:
index.html),那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。
●MultiViews根据文件提供的语言进行内容协商的"多重视图"
●SymLinksIfOwnerMatch服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。
●None关闭所有的访问控制特性
注意:
可采用“+”和“-”表示启用和取消某特性
AllowOverride参数
利用目录访问控制文件,覆盖Directory中部分配置选项,AllowOverride的参数可以为:
●All可以使用.htaccess文件的全部指令组
●AuthConfig进行认证授权及安全相关的指令
●FileInfo控制文档类型的指令
●Indexes控制目录索引的指令
●Limit控制主机访问的指令(Allow,Deny,Order)
●Options控制指定目录功能的指令
●None禁止所有.htaccess文件中的指令组
Orderallow,deny/deny,allow
用于指定执行访问规则和执行访问规则的先后顺序
DenyAll/ip地址
定义拒绝访问主机列表
Allowall/ip地址
定义允许访问的主机列表
下面是一段默认httpd.conf文件中的配置内容,该段内容设置了/和/var/www/html目录的访问控制和目录特性。
OptionsFollowSymLinks
AllowOverrideNone
OptionsIndexesFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
(7)设置用户目录
如在Linux系统上运行apache服务器,在系统上的所有用户都可以创建自已的主页,保存到自已的指定目录中,此项功能称之为“个人主页”。
在客户端可以用形如http:
//servername/~username的地址访问用户的主页,其中useraname代表服务器中的用户名称。
默认httpd.conf文件禁止用户个人主页功能,如果需要启用个人主页功能可设置UserDir选项。
UserDirdisable//禁止个人主页功能,如果想启用的话,可以在UserDir选项后面跟目录名
(8)设置默认首页文件名
DirectoryIndexindex.htmlindex.html.var
DirectoryIndex选项用于建立文件列表,当客户端发出的连接请求是一个目录而不是一个文件时,需要使用这个列表。
例如,客户端发了连接请求http:
//servername/soft/,则服务器首先会在soft目录中依次查找在DirectoryIndex选项指定的文件index.html、index.html.var,把找到的第一个文件作为该目录中的默认文件,如果都找不到便自动生成一个该目录的文件列表,然后提交给客户端。
(9)指定目录访问控制文件名
目录访问控制文件是用来设置目录的访问权限,该文件放在被控制的目录中,默认文件名为.htaccess。
AccessFileName.htaccess
//Files容器用于设置文件的访问权限
Orderallow,deny
Denyfromall
(10)配置MIME类型文件
Apache服务器利用MIME功能识别用户请求的文件类型。
MIME是通过MIME类型文件实现文件映射的,可利用TypesConfig指定类型文件的路径。
如果服务器无法从指定MIME类型文件确定用户访问的文件类型,则用默认类型来作为此文件的类型。
默认类型用DefaultType选项来定义。
TypesConfig/etc/mime.types
DefaultTypetext/plain
Apache可利用mod_mime_magic模块,根据文件的特征实现自动断文件的MIME类型,下面默认httpd.conf中的配置内容。
MIMEMagicFileconf/magic
(11)设置Apche日志功能
HostnameLookups选项用以配置Apache日志是记录连接客户机的IP地址,还是记录客户机的DNS名称。
该选项可取值On或Off,Off表示记录客户的IP址,On表示记录客户机的DNS名称。
HostnameLookupsOff
可以在httpd.conf文件中利用ErrorLog选项指定错误日志文件的位置,利用LogLevel指定什么样的错误被记录到日志文件中,其参数值包括debug、info、warn、error、crit、alert和emerg。
还可以利用LogFormat选项定义日志的格式,该选项可取以“%”开头的宏定义,常用的宏定义如表15-2所示。
表15-2LogFormat中的宏定义
符