目标
了解静态网页与动态网页
理解 HTTP 协议的 GET 和 POST 方法
理解 HTTP 协议请求流程
httpd 服务器的基本配
httpd 的虚拟服务器配置
一web基础
1.域名和DNS
1.1域名概念
网络是基于 TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识(固 定的IP地址),用以区别在网络上成千上万个用户和计算机。网络在区分所有与之相 连的网和主机时,均采用一种唯一、通用的地址格式,即每一个与网络相连接的计算 机和服务器都被指派个独一无二的地址。为了保证上每台计算机的 IP地址的唯 一性,用户必须向特定机构申请注册,分IP 地址。网络中的地址方案分为两套:IP 地址系统和域名地址系统。这两套地址系统其实是一一对应的关系。IP 地址用二进制数 来表示,每个IP地址
32 比特,由4个小于256 的数字组成,数字之间用点间隔,例如 100.10.0.1 表示一个 IP地址。由于 IP地址是数字标识,使用时难以记忆和书写,因此在 IP 地址的基础上又发展出一种符号化的地址方案,来代替数字型的 IP地址。每 一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了。这个与网络上的数字型 IP地址相对应的字符型地址,被称为域名。通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易地找到你。
(1)域名的结构
以一个常见的域名为例说明其结构。图1.1中,www.baidu.com 网址是由二部分组 成,标号"baidu"是这个域名的主体,而最后的标号"com"则是该域名的后缀,代表的这 是一个com 国际域名,是顶级域名,而前面的www是主机名。DNS 规定,域名中的标号都由英文字母和数字组成,每一个标号不超过 63个字符,也不区分大小写字母。标号中除连字符(一)外不能使用其他的标点符号。级别最低的 域名写在最左边,而级别最高的域名写在最右边。由多个标号组成的完整域名总共不超 过255 个字符。一些国家也纷纷开发使用采用本民族语言构成的域名,如德语,法语等。中国也开 始使用中文域名,但可以预计的是,在中国国内今后相当长的时期内,以英语为基础的域名(即英文域名)仍然是主流。
域名结构图
(2)域名结构类型
|-------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 根域: | 指的是根服务器,要用来管理互联网的主目录,全世界只有13台。1个为 主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国欧洲 2个,位于英国和瑞典;亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构 ICANN 统一管理,负责全球互联网域名根服务器、域名体系和 IP 地址等的管理 |
| 顶级域: | 包括组织域和国家/地区域名。域名的最右侧是国家/地区域名,国家代码 由两个字母组成的如.cn,.uk,.de 和. jp,其中.cn 是中国专用的顶级域名。在国家/地区域名左侧,是组织域名,常见的.com用于商业机构,.net用于网络组织,.org 用于各种组织包括非盈利组织。 |
| 二级域名: | 包括组织域和国家/地区域名。域名的最右侧是国家/地区域名,国家代码 由两个字母组成的如.cn,.uk,.de 和. jp,其中.cn 是中国专用的顶级域名。在国家/地区域名左侧,是组织域名,常见的.com用于商业机构,.net用于网络组织,.org 用于各种组织包括非盈利组织。 |
| 二级域名: | 是主机名.DNS 后缀,是指主机名加上全路径,全路径中列出了序列中所有 域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式 |
(2)host文件
Hosts 文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到 相应的 IP地址,实现 DNS 的功能,它可以由计算机的用户进行修改控制。
在网络上访问网站,要首先通过 DNS 服务器把要访问的域名解析成 IP 地址后,计 算机才能对这个网络域名作网站进行访问。在网络上访问网站,要首先通过DNS 服务器把要访问的域名解析成 IP 地址后,计 算机才能对这个网络域名作网站进行访问。对于每个域名请求,如果都要等待域名服务器解析后返回 IP信息,那么访问网络 的效率就会降低,因为DNS 做域名解析和返回 IP 都需要时间。为了提高对经常访问的 网络域名的解析效率,可以通过利用在 Hosts 文件中建立域名和IP 的映射关系来达到 目的。根据系统规定,在进行 DNS 请求以前,系统会先检查自己的Hosts 文件中是否 有这个网络域名映射关系。如果有则调用这个IP 地址映射,如果没有,再向已知的DNS 服务器提出域名解析,即Hosts 的请求级别比 DNS高。
(2)修改 Hosts 文件
Windows 系统中 Hosts 文件存储在目录 c:\windows\system32\drivers\etc\下面,用 记事本可以对其进行修改,OpenEuler 系统中 Hosts 文件存储在目录/etc/目录下面,用vim /etc/hosts 可以对其进行修改,如在文件中加上以下
127.0.0.1
当访问 www.baidu.com 时,发现本机 hosts 文件中有映射的 IP地址,则访问这个 IP 地址。
3. DNS
在互联网上域名与 IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识 IP 地址,它们之间的转换工作称为域名解析,域名解析要由专门的域 名解析系统来完成,DNS 就是进行域名解析的系统。主机名到 IP 地址的映射有两种方式:
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| > 静态映射:每台设备上都配置主机到 IP地址的映射,各设备独立维护自己的 > 映射 表,而且只供本设备使用; > 动态映射:建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主 > 机到 IP 地址的映射,网络上需要使用主机名通信的设备,首先需要到 DNS > 服务器查询主机所对应的IP地址。 > 通过主机名,最终得到该主机名对应的 IP地址的过程叫做域名解析(或主机名 > 解析)。在解析域名时,可以首先采用静态域名解析的方法。如果静态域名解 > 析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解 > 析表中,这样可以 大大提高域名解析效率。 > 在 Windows 命令行模式中输入网络查询命令 nslookup www.baidu.com,可以查 > 询 到域名对应的 IP地址。 |
4. 域名注册
域名注册是Internet中用于解决地址对应问题的一种方法。域名注册遵循先申请先注册原则,管理机构对申请人提出的域名是否违反了第三方的权利不进行任何实质审 查。每个域名都是独一无二的,不可重复的。域名注册的所有者都是以域名注册提交人填写域名订单的信息为准的,成功24 小时后,即可在国际(ICANN)、国内(CNNIC)管理机构查询whois信息(域名所有 者等信息)。
下面是域名注册步骤:
|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| (1)准备申请资料 | :com 域名无需提供身份证、营业执照等资料,cn 域名已开 放 个人申请注册,所以申请则需要提供身份证或企业营业执照; |
| (2)寻找域名注册网站: | 由于.com、.cn 域名等不同后缀均属于不同注册管理 机构 所管理,如要注册不同后缀域名则需要从注册管理机构寻找经过其授权的 顶级域名注册 服务机构。如 com 域名的管理机构为 ICANN,cn域名的管理机构为 CNNIC(中 国互 联网络信息中心)。若注册商已经通过 ICANN、CNNIC双重认证,则无需 分别到其他 注册服务机构申请域名; |
| (3)查询域名: | 在域名注册查询网站注册用户名成功后并查询域名,选择要注 册的 域名,并点击注册; |
| (4)正式申请: | 查到想要注册的域名,并且确认域名为可申请的状态后,提交 注册,并缴纳年费; |
| (5)申请成功: | 正式申请成功后,即可开始进入DNS 解析管理、设置解析记 录等 操作。 |
2 网页与 HTML
网页是构成网站的基本元素,是承载各种网站应用的平台。通俗地说,网站就是由 网页组成的。如果只有域名和虚拟主机而没有制作任何网页,那么客户仍旧无法访问这 个网站。因为网页是由HTML(超文本标记语言)编写的。
- 网页概述
网页是一个文件,他存放在世界某个角落的某一部计算机中,而这部计算机必须是 与互联网相连的。网页经由网址(URL)来识别与存取,是互联网中的一"页"。
网页可以包括如下内容:
|---------------|------------------------------------------------------------------|
| 文本: | 文本是网页上最重要的信息载体与交流工具,网页中的主要信息一 般都以文 本形式为主。 |
| 图像: | 图像元素在网页中具有提供信息并展示直观形象的作用。 |
| Flash 动画: | 动画在网页中的作用是有效地吸引访问者更多的注意 |
| 声音: | 声音是多媒体和视频网页重要的组成部分。 |
| 视频: | 视频文件的采用使网页效果更加精彩且富有动感。 |
| 表格: | 表格是在网页中用来控制页面信息的布局方式。 |
| 导航栏: | 导航栏在网页中是一组超链接,其连接的目的端是网页中重要的 页面。 |
| 交互式表单: | 表单在网页中通常用来联接数据库并接受访问用户在浏览器 端输入的 数据,利用数据库为客户端与服务器端提供更多的互动。 |
| 静态图像: | :在页面中可能是图片或矢量图形。图片格式通常为GIF、 JPEG 或 PNG 等;矢量格式通常为 SVG或 Flash。 |
| ::动画图像: | 通常动画为GIF和 SVG。 |
网页相关概念如下:
域名:是浏览网页时输入的网址。
HTTP:用来传输网页的通信协议,使用浏览器访问网址时,在域名前面要
加上 http://,表示使用http协议传输网页。
URL:是一种万维网寻址系统,表示网络上资源的位置路径。
HTML:是编写网页的超文本标记语言。
超链接:具备将网站中不同网页链接起来的功能。
发布:将制作好的网页上传到服务器供用户访问的过程。
|-------|---------------------------------------------------------|
| 域名: | :是浏览网页时输入的网址 |
| HTTP: | 用来传输网页的通信协议,使用浏览器访问网址时,在域名前面要 加上 http://,表示使用http协议传输网页 |
| URL | 是一种万维网寻址系统,表示网络上资源的位置路径 |
| HTML | 是编写网页的超文本标记语言。 |
| 超链接 | 具备将网站中不同网页链接起来的功能。 |
| 发布: | 将制作好的网页上传到服务器供用户访问的过程。 |
2.1 HTML 概述
HTML 叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记 要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标 记符,可以告诉浏览器如何显示其中的内容。如:文字如何处理,画面如何安排,图片 如何显示等。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,开发者只能通过显示效 果来分析出错原因和出错部位。但需要注意的是,不同的浏览器,对同一标记符可能会 有不完全相同的解释,因而可能会有不同的显示效果。
HTML 文件可以使用任何能够生成 txt 文件的文本编辑器来编辑,生成超文本标记 语言文件,只用修改文件名后缀为".html"或".htm"即可。
2.2 HTML 基本标签
(1)HTML 语法规则
HTML 标签采用双标记符的形式,前后标记符对应,分别表示标记开始和结束,标 记符中间的内容被标签描述。前标记符由"<XXX>"表示,结尾标记符多了一个"/",由"</XXX>"表示。
(2)HTML 文件结构
HTML 文件最外层由<htm1></htm>表示,说明该文件是用HTML 语言描述的。在它里面是并列的头标签(<head>)和内容标签(<body>),最基本的 HTML 文件结构
如下:
|-------------------------------------------------------------------------------|
| > <html> > <head>网页的内容描述信息<head> > <body>网页显示的内容</body> > </html> |
常用的头标签中的标签如表所示
|--------|-------------------|
| 标签 | 描述 |
| title | 定义了文档的标题 |
| base | 定义了页面链接标签的默认链接地址 |
| link | 定义了一个文档和外部资源之间的关系 |
| meta | 定义了HTML 文档中的元数据 |
| script | 定义了客户端的脚本文件 |
| style | 定义了HTML 文档的样式文件 |
内容标签中常用的标签如表
|-------|--------------|
| 标签 | 描述 |
| table | 定义一个表格 |
| tr | 定义了表格中的一行 |
| td | 定义了表格中某一行的一列 |
| a | 定义了一个超链接 |
| br | 定义了换行 |
| font | 定义了字体 |
2.3网站和主页
网站是由网页组成的,包含多个网页页面,具有独立域名、独立存放空间的内容集 合,这些内容可能是网页,也可能是程序或其他文件。主页(首页)是用户打开浏览器时默认打开的网页。当一个网站服务器收到一台电脑上网络浏览器的消息连接请求时,便会向这台计算 机发送这个文档。
当在浏览器的地址栏输入域名,而未指向特定目录或文件时,通常浏览器会打开网站的首页。网站首页往往会被编辑得易于了解该网站提供的信息,并引导 互联网用户浏览网站其他部分的内容。这部分内容一般被认为是一个目录性质的内容。
3**.静态网页与动态网页**
3.1 静态网页
在网站设计中,纯粹HTML格式的网页通常被称为"静态网页",静态网页是标准的 HTML 文件,它的文件扩展名是.htm、.html。静态网页是网站建设的基础,早期的网 站一般都是由静态网页制作的。静态网页也可以出现各种动态的效果,如.GIF 格式的动画、FLASH、滚动字幕等。这些"动态效果"的动态网页 是不同的概念。只是视觉上的,与下面将要介绍
3.2动态网页
所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着HTML 代码的生成,页面的内容和显示效果就基本上不会发生变化了一一除非是修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。动态网页URL 的后缀 不是.htm、.html、.shtml、.xml 等静态网页的常见网页制作格式,而是以.aspx、.asp、.jsp、.php、.perl、.cgi 等形式为后缀,并且在动态网页网址中有一个 标志性的符号 -- "?"。动态网页是基本的html 语法规范与 Java、PHP、C#等高级程序设计语言、数据库 编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。因此,从这个意义上来讲,凡是结合了HTML 以外的高级程序设计语言和数据库技术进行 的网页编程技术生成的网页都是动态网页。
3. 动态网页语言
早期的动态网页主要采用通用网关接口 CGI(Common Gateway Interface)
技术,虽然 CGI 技术已经发展成熟而且功能强大,但由于编程困难、效率低下、
修改复杂,所以有逐渐被新技术取代的趋势。
目前常用的动态网页编程语言如下:
|------------------------------------------------------------------------------------------------------------------------------------------------------|
| PHP即 Hypertext Preprocessor(超文本预处理器),它是当今 Inter net 上最为火 热的脚本语言,其语法借鉴了C、Java、PERL等语言,但只需要 很少的编程知识 你就能使用 PHP 建立一个真正交互的 Web 站点 |
| JSP 即 Java Server Pages(Java 服务器页面),它是由 Sun Microsy stem 公司 于1999年6月推出的新技术,是基于 Java Servlet 以及整个J ava 体系的Web 开 发技术。 |
| Python 是一种面向对象、跨平台的动态类计算机程序设计语言,最初被 设计用于 编写自动化脚本(she11),随着版本的不断更新和语言新功能的添加, 越来越多被用 于独立的大型项目开发。 |
| >Ruby 是一种简单快捷的面向对象(面向对象程序设计)脚本语言,在 20 世纪 90 年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和 Ruby License. 它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。 |
二HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议。所有的网页文件都必须遵守这个标准。设计 HTTP 最初的目的是为 了提供一种发布和接收HTML页面的方法。
1 HTTP 协议概述
HTTP 协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求 的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于 MIME 的消 息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错 误编码加上服务器信息、实体元信息以及可能的实体内容。
HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。
(1)HTTP/0.9 已过时。只接受GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST/方法,所以客户端无法向服务器传递太多 信息。
(2)HTTP/1.0 这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛 采用,特别是在代理服务器中。
(3)HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
2 HTTP 方法
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条HTTP 请求报文都包含一个方法,告诉服务器要执行什么动作,包括:获取一个页 面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST。HTTP 常用方法如表 1-3 所示。表 1-3 HTTP 方法
|--------|---------------------------------|
| Http方法 | 描述 |
| GET | 请求获取Request-URI 所标识的资源 |
| PUT | 请求服务器存储一个资源,并用Request-URI 作为其标识 |
| DELETE | 请求服务器删除Request-URI 所标识的资源 |
| POST | 在 Request-URI 所标识的资源后附加新的数据 |
| HEAD | 请求获取由Request-URI 所标识的资源的响应消息报头 |
GET 方法采用的是 URL 后缀的形式,比如 http://www.test.com/a.php?Id=123就是一个 GET 请求,服务器接收后可以解析出 Id=123。而 POST 方法不需要在 URL中 显示"?Id=123",参数作为内容进行了隐藏的提交。因此,表单类或者有用户名、密码 等内容提交时建议使用 POST 方法。
GET 方法在 URL 上显示参数,而URL 是有长度限制,故不适合提交过大的数据。GET 方法可以被浏览器缓存,当请求已经被请求过一次的URL时,浏览器不需要向服 务器再次发出请求,直接在本地缓存中获得页面。GET和 POST方法对比如表 1-4 所示。
|----------|---------------------------------------------------------------|--------------------------------------------|
| | GET方法 | POST方法 |
| 对数据长度的限制 | URL 的长度是受限制的(URL的最大长度是 2048个字符) | 无限制 |
| 缓存 | 能被缓存 | 不能缓存 |
| 安全性 | 与 POST 相比,GET的安全性较差,因为所发送的数据是 URL 的一部分。在发送 密码或其他敏感信息时绝不要使用GET | POST GET 更安全,因为 参数不会被保存在浏览器历 史或 Web 服务器日志中 |
| 历史 | 参数保留在浏览器历史中 | 参数不会保存在浏览器历史中 |
| 后退按钮/刷新 | 无害 | 数据会被重新提交,浏览器 应 该告知用户数据会被重新 提交 |
| 书签 | 可收藏为书签 | 不可收藏为书签 |
3 HTTP 状态码
HTTP 状态码(HTTP Status Code)是用以表示网页服务器HTTP 响应状态的3 位数字代码,当浏览器请求某一URL时,服务器根据处理情况返回相应的
处理状态。
HTTP 状态码可以分为五大类,如图1.2 所示。其中 1XX 表示信息提示,2XX、3XX 表 示请求正常,4XX、5XX 表示出现异常情况。
1.2 HTTP 状态码分类
|-------|-----------|-------|
| 状态码首位 | 已定义范围 | 分类 |
| 1xx | 100-101 | 信息提示 |
| 2xx | 200-206 | 成功 |
| 3xx | 300-305 | 重定向 |
| 4xx | 400-5=415 | 客户端错误 |
| 5xx | 500-505 | 服务器错误 |
生产环境常见状态码如表
|----------------------------|-----------------------------|
| 消息 | 描述 |
| 200 OK | 请求成功(其后是对GET 和POST 请求的应答文档) |
| 301 Moved Permanently | 请求的永久页面跳转 |
| 403 Forbidden | 禁止访问该页面 |
| 404 Not Found | 服务器无法找到被请求的页面 |
| 500 Internal Server Erro r | 内部服务器错误 |
| 502 Bad Gateway | 无效网关 |
| 503 Service Unavailable | 当前服务不可用 |
| 504 Gateway Timeout | 网关请求超时 |4.http请求流程分析
用户在浏览器输入 URL 访问时,发起HTTP 请求报文,请求中包括请求行、请求 头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体
1.请求报文
请求行:请求行由请求方法、URL 以及协议版本三部分组成
请求头:请求头为请求报文添加了一些附加信息,由"名/值"对组成,每行一对,名 和值之间使用冒号分隔,常用的请求头如表所示
>空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一 行非常重要,必不可少。
请求体:请求体是请求提交的参数,GET方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。
|-----------------|-----------------------------------|
| 请求头 | 描述 |
| host | 接受请求的服务器地址,可以是IP:端口号,也可以是域 名 |
| user-agent | 发送请求的应用程序名称 |
| accept-charset | 通知服务端可以发送的编码格式 |
| accept-encoding | 通知服务端可以发送的数据压缩格式 |
| connection | 指定与连接相关的属性,如Connection:Keep-Alive |
| accept-language | 通知服务端可以发送的语言 |
2. 响应报文
> 状态行:状态行由协议版本,状态码,状态码描述三部分组成。
响应头:> 响应头与请求头部类似,为响应报文添加了一些附加信息。常见响应头部如老所示
空行:响应头部的最后会有一个空行,表示响应头部结束。
响应体:服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。
|------------------|----------------------|
| 响应头 | 描述 |
| server | 服务器应用程序软件的名称和版本 |
| content-type | 响应正文的类型(是图片还是二进制字符串) |
| content-length | 响应正文长度 |
| content-charset | 响应正文使用的编码 |
| content-encoding | 响应正文使用的数据压缩格式 |
| content-language | 响应正文使用的语言 |
三 APache网站服务基础
1.Apache简介
"Apache HTTP Server"是开源软件项目的杰出代表,它基于标准的 HTTP 网络协 议提供网页浏览服务,在Web 服务器领域中长期保持着超过半数的份额。Apache 服务 器可以运行在 Linux、UNIX、Windows 等多种操作系统平台中。
(1)Apache的起源
1.1 Apache 的起源
Apache 服务器是针对之前出现的若干个Web 服务器程序进行整合、完善后形成的 软件,其名称来源于"A Patchy Server",意思是"基于原有 Web服务程序的代码进行修 改(补丁)后形成的服务器程序"。1995 年,Apache 服务程序发布了1.0 版本,之后一直由"Apache Group"负责该项目的管理和维护;直到1999年,在"Apache Group"的基础上成立了 Apache 软件基 金(Apache Software Foundation,ASF)。目前Apache 项目一直由 ASF 负责管理 和维护。
ASF 是非盈利性质的组织,最初只负责"Apache Web"服务器项目的管理。随着 Web 应用需求的不断扩大,ASF 逐渐增加了许多与Web 技术相关的开源软件项目。因此Apache 现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF管理的众多开源软件项 目。ASF 基金会的官方网站是 http://www.apache.org/。
"Apache HTTP Server"是ASF 旗下著名的软件项目之一,其正式名称是"httpd",也就是历史上的Apache 网站服务器。在后续内容中,若未作特殊说明,使用"Apache"或者"httpd",均指的是"Apache HTTP Server"。
1.2Apache的主要特点
Apache 服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地 满足Web 服务器用户的应用需求。其主要特点包括以下几个方面
|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 开放源代码:这是Apache服务器的重要特性之一,也是其他特性的基础。 Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用, 这充分体 现了开源软件的精神。 |
| 跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可 以运行在 绝大多数软硬件平台上,所有UNIX 操作系统都可以运行 Apache 服 务器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。Ap ache 服务器的 跨平台特性使其具有被广泛应用的条件。 |
| 支持各种 Web 编程语言:Apache服务器可支持的网页编程语言包括 Per 1、PHP、Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中 使用。支持各 种常用的Web 编程语言使Apache 具有更广泛的应用领域。 |
| 模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部, 而是尽可 能地通过标准的模块实现专有的功能,这为Apache服务器带来了良 好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加Apache 本 身并不具有的 其他功能。 |
| 运行非常稳定:Apache服务器可用于构建具有大负载访问量的Web 站点, 很多知 名的企业网站都使用 Apache作为 Web 服务软件。 |
| 良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共 同具有的 特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序, 为 Apache 的所有使用者提供尽可能安全的服务器程序。 |
2.安装httpd服务器
2.1 准备工作
为了避免发生端口冲突、程序仲突等现象,建议卸载使用 RPM 万式女装的httpd。httpd 服务编译安装时需要依赖 apr-util-devel、pcre-devel、gcc等软件,因此在httpd 编译安 装之前需要先安装依赖软件。
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启 用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行"./configure -- help"命令。
2.2源码编译及安装
(1)解包
将下载获得的 httpd 源码包解压并释放到/usr/src 目录下,且切换到展开后的源码目 录中。
(2)配置
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启 用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行"./configure -- help" 命令。
上述选项的各个含义如下
|----------------------------------------------------|
| -- prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/htppd |
| -- enable-so:启用动态加载模块支持,使httpd 具备进一步扩展功能的能力 |
| -- enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护 |
| -- enable-charset-lite:启用字符集支持,以便支持使用各种字符集编 码的网页。 |
| -- enable-cgi:启用 CGI脚本程序支持,便于扩展网站的应用访问能力 |
(3)编译及安装
完成配置以后,执行"make"命令进行编译,将源代码转换为可执行的程序;然后执 行"make install"命令完成最后的安装过程;将编译完的httpd 程序及相关目录、文件自 动复制到预设的安装目录(由配置时的" -- prefix"选项指定)。其中"make"的过程可能会需要较长的时间。
2.3确认安装结果
由于指定的安装目录为/usr/local/httpd,因此 httpd 服务的各种程序、模块、帮助文 件等都将复制到此目录下。
在安装后的/usr/local/httpd 目录下包含 httpd 服务相关的各种子目录,
主要子目录 的用途如下。
/usr/local/httpd/bin:存放 httpd 服务的各种可执行程序文件,包括主程序 httpd、服 务控制工具 apachectl 等。
/usr/local/httpd/conf:存放 httpd 服务的各种配置文件,包括主配置文件 httpd.conf、增强配置子目录 extra 等。
/usr/local/httpd/htdocs:存放网页文档,包括默认首页文件 index.html 等。
/usr/local/httpd/logs:存放 httpd 服务的日志文件。
/usr/local/httpd/modules:存放httpd 服务的各种模块文件。
/usr/local/httpd/cgi-bin:存放各种 CGI程序文件。
2.4优化执行路径
通过源码编译安装的httpd 服务,程序路径并不在系统默认的搜索路径中,为了使 该服务在使用时更加方便,可以为相关程序添加符号链接。
这样,在执行相关命令时就不用输入冗长的路径了。例如,当执行"httpd-v"命令(用 于查看程序版本)时,即相当于执行"/usr/local/httpd/bin/httpd -v"命令。
2.5添加httpd系统服务
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制由 Systemd 管理或监控的httpd 服务。
3.httpd服务器的基本配置
3.1web站点的部署过程
1.确定网站名称 IP地址
若要向 Internet 中发布一个 Web 站点,需要申请一个合法的互联网 IP地址,并向DNS 服务提供商注册一个完整的网站名称。在企业内部网络中,这些信息可以自行设 置。例如 Web 主机的 IP 地址为 173.17.17.11,网站名称为www.kgc. com.
若要在客户机的浏览器中通过地址 www.kgc.com 来访问此 Web 站点,还应该有可 用的DNS 域名服务。例如,客户机所使用的 DNS 服务器应能够将 www.kgc.com 解析为 IP地址 173.17.17.11。
在 Web 服务器本机中,将 IP地址设置为 173.17.17.11;将主机名称设置为 www.kgc.com;并修改/etc/hosts 文件,添加相应的映射记录以提高本地解析速度。

2.配置并启动httpd服务
(1)配置httpd服务
编辑 httpd 服务的主配置文件 httpd.conf,查找配置项"ServerName",在附近添加 一行内容"ServiceName www.kgc.com",用于设置网站名称。
修改 httpd.conf 文件的配置内容后,建议使用带"-t"选项的 apachect1命令对配置内 容进行语法检查(或使用"httpd-t"命令)。如果没有语法错误,将会显示"Syntax OK"的 信息,否则需要根据错误提示信息来修正配置。

(2)启动 httpd 服务
使用 systemctl 命令启动 httpd 服务。正常启动 httpd 服务以后,默认将监听 TCP 协议的80端口
3. 部署网页文档
对于新编译安装的 httpd 服务,网站根目录位于/usr/local/httpd/htdocs 下,需要将 Web 站点的网页文档复制或上传到此目录下。httpd 服务器默认已提供了一个名为index.html 的测试网页(可显示字串"It works!"),作为访问网站时的默认首页。

4. 在客户机中访问Web 站点
在客户机的网页浏览器中,通过域名或 IP 地址访问 httpd 服务器,将可以看到Web 站点的页面内容。若使用的是httpd 服务默认的首页,则页面会显示"It works!",表示httpd 服务已经正常运作。
5. 查看 Web 站点的访问情况
httpd 服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名 分别为 access_log 和 error_log,均位于/usr/local/httpd/logs目录下。
通过查看访问日志文件 access_log,可以及时了解 Web 站点的访问情况。访问日 志中的每一行对应一条访问记录,记录了客户机的IP地址、访问服务器的日期和时间、请求的网页对象等信息。例如,当从客户机 173.17.17.2访问 Web 站点以后,访问日 志将会记录"173.17.17.2 ...... "GET/HTTP/1.1" ...... "的消息。

通过查看错误日志文件error_log,可以为排查服务器运行故障提供参考依据。错误日志文件中的每一行对应一条错误记录,记录了发生错误的日期和时间、错误事件类型、错误事件的内容描述等信息上述过程是使用httpd服务器部署并验证Web 站点的基本步骤,其中涉及httpd.conf配置文件的改动量非常少,要搭建一台简单的Web服务器还是十分容易的。
若要对 Web 站点进行更加具体、更加强大的配置,仅仅学会添加"ServerName"配 置项显然是远远不够的,还需要进一步熟悉httpd.conf 配置文件,了解其他各种常见的 配置项。
主配置文件 httpd.conf 由注释行、设置行两部分内容组成。与大多数 Linux 配置文 件一样,注释性的文字以"#"开始,包含了对相关配置内容进行的说明和解释。除了注释 行和空行以外的内容即设置行,构成了Web服务的有效配置。根据配置所作用的范围 不同,设置行又可分为全局配置、区域置。
4.全局配置
全局配置决定 httpd 服务器的全局运行参数,使用"关键字值"的配置格式。
各个全局配置项含义如下
|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ServerRoot:设置 httpd 服务器的根目录,该目录下包括了运行 Web站 点必需的子目录和文件。默认的根目录为/usr/local/httpd,与httpd 的安装 目录相同。在httpd.conf 配置文件中,如果指定目录或文件位置时不使用绝 对路径,则目录或文件位置都认为是在服务器的根目录下。 |
| Listen:设置 httpd 服务器监听的网络端口号,默认为80。 |
| User:设置运行 httpd 进程时的用户身份,默认为 daemon。 |
| Group:设置运行httpd 进程时的组身份,默认为daemon。 |
| ServerAdmin:设置 httpd 服务器的管理员 E-mail 地址,可以通过此 E -mail 地址及时联系 Web 站点的管理员。 |
| ServerName:设置 Web 站点的完整主机名(主机名+域名) |
| DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。 此配置 项比较容易和 ServerRoot 混淆,需要格外注意。 |
| DirectoryIndex:设置网站的默认索引页(首页),可以设置多个首页文 件,以空格 分开,默认的首页文件为 index.html |
| ErrorLog:设置错误日志文件的路径,默认路径为 logs/error_log。 |
| LogLevel:设置记录日志的级别,默认级别为warn(警告)。 |
| CustomLog:设置访问日志文件的路径、日志类型,默认路径为 logs/acc ess_log, 使用的类型为 common(通用格式) |
| Pid File:设置用于保存 httpd 进程号(PID)的文件,默认保存地址为logs/httpd.pid, logs 目录位于 Apache 的服务器根目录下。 |
| AddDefaultCharset:设置站点中的网页默认使用的字符集编码,如 UTF- 8、gb2312 等。 |
| Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置 放到一个单 独的文件中,再使用 Include 配置项将其包含到httpd.conf 文件 中,这样便于独立 进行配置功能的维护而不影响主配置文件。 |
2.区域配置项
除了全局配置项以外,httpd.conf 文件中的大多数配置是包括在区域中的。区
域 配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区
域配置的形 式如下所示。
<Directory /> //定义"/"目录区域的开始
Options FollowSymLinks //控制选项,允许使用符号链接
AllowOverride None //不允许隐含控制文件中的覆盖配置 Req
ire all denied //禁止任何人访问此区域
</Directory>//定义"/"目录区域的结束
在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置 只对 httpd 服务的根目录有效,而不会作用于全局或其他目录区域。