目录
[2.2 HTML基本标签](#2.2 HTML基本标签)
[3 静态网页与动态网页](#3 静态网页与动态网页)
[二 HTTP协议](#二 HTTP协议)
[1 HTTP协议概述](#1 HTTP协议概述)
[2 HTTP方法](#2 HTTP方法)
[3 HTTP状态码](#3 HTTP状态码)
[4 HTTP请求流程分析](#4 HTTP请求流程分析)
[三 Apache 网站服务基础](#三 Apache 网站服务基础)
[1. Apache](#1. Apache)
[1.1 Apache 的起源](#1.1 Apache 的起源)
[1.2 Apache的主要特点](#1.2 Apache的主要特点)
[2 安装HTTPD服务器](#2 安装HTTPD服务器)
[2.3 确认安装结果](#2.3 确认安装结果)
[2.4 优化执行路径](#2.4 优化执行路径)
[2.5 添加httpd系统服务](#2.5 添加httpd系统服务)
[3 httpd服务器的基本配置](#3 httpd服务器的基本配置)
[3.1 web站点的部署过程](#3.1 web站点的部署过程)
[4 全局配置项](#4 全局配置项)
[5 构建虚拟web主机](#5 构建虚拟web主机)
[5.1 基于域名的虚拟主机](#5.1 基于域名的虚拟主机)
一:Web基础
1.域名和dns
1.1域名的概念
网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地址),用以区别在网络上成千上万个用)户和计算机。网络在区分所有与之相连的网络和主机时,均采用一种唯一、通月用的地址格式,即每一个与网络相连接的计算机和服务器都被指派一个独一无二二的地址。
(1)域名的结构
以一个常见的域名为例说明其结构。图1.1中,www.baidu.com网址是由二部分组成,标号"baidu"是这个域名的主体,而最后的标号"com"则是该域名的后缀,代表的这是一个com国际域名,是顶级域名,而前面的www是主机名。

DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的域名写有在最右边。由多个标号组成的完整域名总共不超过255个字符。
(2)域名结构类型
根域:指的是根服务器,要用来管理互联网的主目录,全世界界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务务器,其中9个放置在美国欧洲2个,位于英国和瑞典;亚洲1个,位于日本。
顶级域:包括组织域和国家/地区域名。域名的最右侧是国家/地区域名,国家代码由两个字母组成的
二级域名:在顶级域名之前的域名,在顶级域名前面,它是指域名注册人的网上名称,例如baidu,ibm,yahoo,microsoft等。
FQDN:是主机名.DNS后缀,是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。
2.Hosts文件
Hosts文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到相应的IP地址,实现DNS的功能,它可以由计算机的用户户进行修改控制。
(1)hosts文件的作用
在网络上访问网站,要首先通过DNS服务器把要访问的域名解所成IP地址后,计算机才能对这个网络域名作网站进行访问。
在网络上访问网站,要首先通过DNS服务器把要访问的域名解所成IP地址后计算机才能对这个网络域名作网站进行访问。
(2)修改hosts文件
Windows系统中Hosts文件存储在目录 c:\windows\system322\drivers\etc\下面,用记事本可以对其进行修改,0penEuler系统中Hosts文件存储在目录/etc/目录下面,用vim/etc/hosts可以对其进行修改,如在文件中加上以下代码。
127.0.0.1 www.baidu.com
当访问www.baidu.com时,发现本机hosts文件中有映射的IP地址,则访问这个IP地址。
3.DNS
在互联网上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域我名解析,域名解析要由专门的域名解析系统来完成,DNS就是进行域名解析的约系统主机名到IP地址的映射有两种方式:
静态映射:每台设备上都配置主机到IP地址的映射,各设没备独立维护自己的映射表,而且只供本设备使用;
动态映射:建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
4.域名注册
域名注册是Internet中用于解决地址对应问题的一种方法。域名注册遵循先申请先注册原则,管理机构对申请人提出的域名是否违反了第三三方的权利不进行任何实质审查。每个域名都是独一无二的,不可重复的。
(1)准备申请资料
com域名无需提供身份证、营业执照等等资料,cn域名已开放个人申请注册,所以申请则需要提供身份证或企业营业执照:
(2)寻找域名注册网站
由于.com、.cn域名等不同后缀均属于不同注册管理机构所管理,如要注册不同后缀域名则需要从注册管理机构寻找经过其授权的顶级域名注册服务机构。
(3)查询域名
在域名注册查询网站注册用户名成功后并查询域名,选择要注册的域名,并点击注册;
(4)正式申请
查到想要注册的域名,并且确认域名为可申请的状态后,提交注册,并缴纳年费;
(5)申请成功
正式申请成功后,即可开始进入DNS解析管理、设置解析记录等操作。
2:网页与HTML
网页是构成网站的基本元素,是承载各种网站应用的平台。通谷地说,网站就是由网页组成的。如果只有域名和虚拟主机而没有制作任何网页,那么客户仍旧无法访问这个网站。因为网页是由HTML(超文本标记语言)编写的。
1.网页概述
网页是一个文件,他存放在世界某个角落的某一部计算机中,而这部计算机必须是与互联网相连的。网页经由网址(URL)来识别与存取,是是互联网中的一"页"。
网页可以包括如下内容:
>文本:文本是网页上最重要的信息载体与交流工具,网页中的三主要信息一般都以文本形式为主。
>图像:图像元素在网页中具有提供信息并展示直观形象的作用
静态图像:在页面中可能是图片或矢量图形。图片格式通常为GIF、
JPEG或PNG等;矢量格式通常为SVG或Flash。
动画图像:通常动画为GIF和SVG。
>Flash动画:动画在网页中的作用是有效地吸引访问者更多的注意。
>声音:声音是多媒体和视频网页重要的组成部分。
>视频:视频文件的采用使网页效果更加精彩且富有动感。
>表格:表格是在网页中用来控制页面信息的布局方式。
>导航栏:导航栏在网页中是一组超链接,其连接的目的端是网页页中重要的页面。
>交互式表单:表单在网页中通常用来联接数据库并接受访问用户户在浏览器端输入的数据,利用数据库为客户端与服务器端提供更多的互动。
网页相关概念如下:
>域名:是浏览网页时输入的网址。
>HTTP:用来传输网页的通信协议,使用浏览器访问网址时对,在域名前面要加上http://,表示使用 http协议传输网页。
>URL:是一种万维网寻址系统,表示网络上资源的位置路径。
>HTML:是编写网页的超文本标记语言。
>超链接:具备将网站中不同网页链接起来的功能。
>发布:将制作好的网页上传到服务器供用户访问的过程。
2.1HTML概述
HTML叫做超文本标记语言,是一种规范,也是一种种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。如:文字如何处理,画面如何安排,图片如何显示等。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出出其错误,且不停止其解释执行过程,开发者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,不同的浏览器,对同一标记符可能会有不完全全相同的解释,因而可能会有不同的显示效果。
HTML文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记语言文件,只用修改文件名后缀为".html"或".htm"可。
2.2 HTML基本标签
(1)HTML语法规则
HTML标签采用双标记符的形式,前后标记符对应,分别表示材记开始和结束,标记符中间的内容被标签描述。前标记符由"(XXXXX>"表示,结尾标记符多了"</XXX>"表示。一个"/",由"</xxx>"表示。
(2)HTML文件结构
HTML文件最外层由<html></htm>表示,说明该文件是用IHTML语言描述的。在它里面是并列的头标签(<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代码的生成,页的内容和显示效果就基本上不会发生变化了一除非是修改页面代码
3.动态网页语言
早期的动态网页主要采用通用网关接口CGI(CommonGateway Interface技术,虽然CGI技术已经发展成熟而且功能强大,但由于千编程困难、效率低下、修改复杂,所以有逐渐被新技术取代的趋势。
目前常用的动态网页编程语言如下:
>PHP 即 Hypertext Preprocessor(超文本预处理器),它是主当今 Internet上最为火热的脚本语言,其语法借鉴了C、Java、PERL等语言,但只需要很少的编程知识你就能使用PHP建立一个真正交互的Web站点。
>JSP即JavaServerPages(Java服务器页面),它是由Sun Microsystem公司于1999年6月推出的新技术,是基于JavaServlet以及整个Java体系的Web开发技术。
>Python是一种面向对象、跨平台的动态类计算机程序设计语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的大型项目开发。
>Ruby是一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(YukihiroMatsumoto)于开发,遵守GPL协议和Ruby License.
它的灵感与特性来自于PerlSmalltalk、Eiffel、Ada以及Lisp语言。
二 HTTP协议
1 HTTP协议概述
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,叫响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。
HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。
(1)HTTP/0.9已过时。只接受GET 一种请求方法,没有在通i讯中指定版本号,且不支持请求头。由于该版本不支持POST/方法,所以客户端天法向服务器传递太多信息。
(2)HTTP/1.0这是第一个在通讯中指定版本号的HTTP协议板本,至今仍被广泛采用,特别是在代理服务器中。
(3)HTTP/1.1当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
2 HTTP方法
HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method)。每条HTTP请求报文都包含一个方法,告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是GET、POST。HTTP常用方法如下表所示
|--------|-------------------------------|
| HTTP方法 | 描述 |
| GET | 请求获取Request-URL所标识的资源 |
| PUT | 请求服务器存储一个资源,并用Request-URL作为标识 |
| DELETE | 请求服务器删除Request-URL所标识的资源 |
| POST | 在Request-URL所标识的资源后附加新的数据 |
| HEAD | 请求获取由Request-URL所标识的资源的响应消息报头 |
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方法对比如下表所示
|----------|------------------------------------------------------------|-----------------------------------------|
| | GEB方法 | POST方法 |
| 对数据长度的限制 | URL的长度是受限的(URL 的最大长度是2048个字符) | 无限制 |
| 缓存 | 能被缓存 | 不能缓存 |
| 安全性 | 与POST相比,GET的安全性较差, 因为所发送的数据是URL的一部分。 在发送密码或其他敏感信息时绝不要使用GET | POSTGET更安全 ,因为参数不会 被保存在浏览器历史 或Web服务器日志中 |
| 历史 | 参数保留在浏览器历史中 | 参数不会保存在浏览器历史中 |
| 后退按钮/刷新 | 无害 | 数据会被重新提交,浏览器应该告知用户数据会被重新提交 |
| 书签 | 可收藏为书签 | 不可收藏为书签 |
3 HTTP状态码
HTTP状态码(HTTPStatusCode)是用以表示网页服务器HTTP响应状态的3位数字代码,当浏览器请求某一URL时,服务器根据处理情况返回相应的处理状态。HTTP状态码可以分为五大类,如图1.2所示。其中 1XX表示信息提示,2XX、3XX表示请求正常,4XX、5XX表示出现异常情况。
HTTP状态码分类:
|-------|---------|-------|
| 状态码首位 | 已定义范围 | 分类 |
| 1xx | 100-101 | 信息提示 |
| 2xx | 200-206 | 成功 |
| 3xx | 300-305 | 重定向 |
| 4xx | 400-415 | 客户端错误 |
| 5xx | 500-505 | 服务器错误 |
生产环境常见的状态码:
|---------------------------|---------------------------|
| 消息 | 描述 |
| 200 ok | 请求成功(其后是对GET和POST请求的应答文档) |
| 301 Moved Permanently | 请求的永久页面跳转 |
| 403 Forbidden | 禁止访问该页面 |
| 404 Not Found | 服务器无法找到被请求的页面 |
| 500 Internal Server Error | 内部服务器错误 |
| 502 Bad Gatway | 无效网关 |
| 503 Service Unavailable | 当前服务器不可用 |
| 504 Gateway Timeout | 网关请求超时 |
4 HTTP请求流程分析
用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体,如图所示

1.请求报文
>请求行:请求行由请求方法、URL以及协议版本三部分组成.
>请求头:请求头为请求报文添加了一些附加信息,由"名/值"对组成,每行一对,名和值之间使用冒号分隔,常用的请求头如表所示。
|-----------------|-----------------------------------|
| 请求头 | 描述 |
| Host | 接收请求的服务器地址,可以是IP:端口号,也可以是域名 |
| User-Agent | 发送请求的应用程序名称 |
| Connection | 指定与连接相关的属性,如Connection:Keep-Alive |
| Accept-Charset | 通知服务端可以发送的编码格式 |
| Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
| Accept-Language | 通知服务端可以发送的语言 |
>空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。
>请求体:请求体是请求提交的参数,GET方法已经在URL中指明了参数,所以提交时没有数据。POST方法提交的参数在请求体中。
2.响应报文
>状态行:状态行由协议版本,状态码,状态码描述三部部分组成
>响应头与请求头部类似,为响应报文添加了些附加信息。常见响应头部如表所示
|------------------|----------------------|
| 响应头 | 描述 |
| Server | 服务器应用程序软件的名称和版本 |
| Content-Type | 响应正文的类型(是图片还是二进制字符串) |
| Content-Length | 响应正文长度 |
| Content-Charset | 响应正文使用的编码 |
| Content-Encoding | 响应正文使用的数据压缩格式 |
| Content-Language | 响应正文使用的语言 |
>空行:响应头部的最后会有一个空行,表示响应头部结束。
>响应体:服务器返回的相应HTML数据,浏览器对其解析后显示页面。
三 Apache 网站服务基础
1. Apache
Apache HTTP Server"是开源软件项目的杰出代表,它基于标准的HTTP网络协议提供网页浏览服务,在Web服务器领域中长期保持着超过半数的份额。Apache服务器可以运行在 Linux、UNIX、Windows等多种操作系统平台中。
1.1 Apache 的起源
Apache服务器是针对之前出现的若干个Web服务器程序进行事整合、完善后形成的软件,其名称来源于"APatchy Server",意思是"基于原有Web服务程序的代码进行修改(补丁)后形成的服务器程序"
1995年,Apache服务程序发布了1.0版本,之后一直由"Apache Group"p"负责该项目的管理和维护;直到1999年,在"ApacheGroup"的基础上成立了Apache软件基金会(ApacheSoftware Foundation,ASF)。目前Apache项目一直由ASF负责管理和维护。
1.2 Apache的主要特点
>开放源代码:这是Apache服务器的重要特性之一,也是其他特性的基础。Apache服务程序由全世界的众多开发者共同维护,并且任何人都都可以自由使用,这充分体现了开源软件的精神。
>跨平台应用:这个特性得益于Apache的源代码开放。Apache服务器可以运行在绝大多数软硬件平台上,所有 UNIX操作系统都可以运行Apache服务器,甚至Apache服务器可以良好地运行在大多数Windows系统平台中。Apache服务器的跨平台特性使其具有被广泛应用的条件。
>支持各种Web编程语言:Apache服务器可支持的网页编程语言包括Per1、PHP、Python、Java等,甚至微软的ASP技术也可以在Apache服务器中使用。支持各种常用的Web编程语言使Apache具有更广泛的应用领域。
>模块化设计:Apache并没有将所有的功能集中在单一的服务程序内部而是尽可能地通过标准的模块实现专有的功能,这为Apache服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加Apache本身并不具有的其他功能。
>运行非常稳定:Apache服务器可用于构建具有大负载访问量的eb站点,很多知名的企业网站都使用Apache作为Web服务软件。
>良好的安全性:Apache服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache的维护团队会及时对已发现的漏洞提供修补程序,为Apache的所有使用者提供尽可能安全的服务器程序。
2 安装HTTPD服务器
2.1准备工作
为了避免发生端口冲突、程序冲突等现象,建议卸载使用RPM方式安装的httpd。httpd服务编译安装时需要依赖 apr-util-devel、poere-devel、gcc等软件,因此在httpd编译安装之前需要先安装依赖软件。
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行"./configure--help"命令。
root@localhost\~\]# rpm -e httpd --nodeps 错误:未安装软件包httpd \[root@localhost \^\]# dnf install =у apr-util-devel pcre-develgcc maketar
(1)解包
将下载获得的httpd源码包解压并释放到/usr/src目录下,且切换到展开后的源码目录中。
root@localhost \^\]# tar zxf httpd-2.4.48. tar. gz -C /usr/ssrc \[root@localhost \^\]# cd /usr/src/httpd-2.4.48/
(2)配置
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行"./configure--help"命令。
root@localhost httpd-2.4.48\]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
上述配置命令中,各选项的含义如下。
>prefix:指定将httpd服务程序安装到哪个目录下,如/usr/local/httpd。
>enable-so:启用动态加载模块支持,使httpd具备送一步扩展功能的能力。
>enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
>enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页。
>enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用防问能力
(3)编译及安装
root@localhost httpd-2.4.48\]# make \&\& make instal
2.3 确认安装结果
由于指定的安装目录为/usr/local/httpd,因此 httpd服务各的各种程序、模块、
帮助文件等都将复制到此目录下。
root@localhost# ls /usr/local/httpd bin cgi-bin icons logs manual error build htdocs include modules conf man 在安装后的/usr/local/httpd 目录下包含httpd服务相关的各种中子目录, 主要子目录的用途如下。 \>/usr/local/httpd/bin:存放httpd服务的各种可执行程序序文件,包括主程序httpd、服务控制工具apachectl等。 \>/usr/1ocal/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服务,程序路径并不在系统默认的搜索路径中,
为了使该服务在使用时更加方便,可以为相关程序添加符号链接。
root@localhost \^\]# ln -s /usr/local/httpd/bin/\* /usr/llocal/bin \[root@localhost \^\]# ls -l /usr/local/bin/httpd /usr/loccal/bin/apachectl 这样,在执行相关命令时就不用输入冗长的路径了。例如,当当执行"httpd-v"命令(用于查看程序版本)时,即相当于执行"/usr/local/httpd/bin/httpd-v"命令。 \[root@localhost \^\]# httpd -v
2.5 添加httpd系统服务
在/lib/systemd/system/目录下,建立一个以.service结尾的单元(unit)配置文件,用于控制由Systemd管理或监控的httpd服务。
root@localhost \^\]# cd /lib/systemd/system/ \[root@localhost system\]# vi httpd. service \[Unit
Description=The Apache HTTP Server
After=network.target
Service
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
Install
WantedBy=multi-user.target
root@localhost system\]# systemctl daemon-reload \[root@localhost system\]# systemctl enable httpd. service Created symlink from /etc/systemd/system/multi-user.target.wants/http d. service to /usr/lib/systemd/system/httpd. service. \[root@localhost system\]# systemctl is-enabled httpd. serviIce enable 成功执行上述操作后,在日常维护过程中,可直接使用apachectl工具或 systemctl命令控制 httpd服务
3 httpd服务器的基本配置
3.1 web站点的部署过程
1.确定网站名称、IP地址
若要向Internet中发布一个Web站点,需要申请一个合法去的互联网IP地址,并向DNS服务提供商注册一个完整的网站名称。在企业内部网络中,这些信息可以自行设置。例如Web主机的IP地址为173.177.17.11,网站名称为www.kgc.com。
root@localhost# hostname www.kgc.com \[root@localhost\~\]# vim /etc/hostname www.kgc.com \[root@localhost \^\]# vim /etc/hosts 173.17.17.11 www.kgc.com
2.配置并启动httpd服务
(1)配置httpd服务
编辑httpd服务的主配置文件httpd.conf,查找配置项"ServerName附近添加一行内容"ServiceNamewww.kgc.com",用于设设置网站名称
root@www \^\]# vim /usr/local/httpd/conf/httpd.conf ...... ServerName www.kgc.com ...... 修改httpd.conf文件的配置内容后,建议使用带"-t"选项的apachectl命令对配置内容进行语法检查(或使用"httpd-t"命令)。如果没有语法错误,将会显示"Syntax 0K"的信息,否则需要根据错误提示信!息来修正配置 \[root@www \^\]#/usr/local/httpd/bin/apachectl -t Syntax OK
使用systemctl命令启动httpd服务。正常启动httpd服务以后,默认将监听TCP协议的80端口。
root@www\~\]# systemctl start httpd \[root@www\~\]# netstat -anpt \| grep httpd
对于新编译安装的httpd服务,网站根目录位于/usr/local/httpd/htdocs下,需要将Web站点的网页文档复制或上传到此目录下。httpd服务器默认已提供了一个名为index.html的测试网页(可显示字串"Itwo)rks!"),作为访问网站时的默认首页。
root@www\~\]# cat /usr/local/httpd/htdocs/index.html \\
\It works!\ \\
在客户机的网页浏览器中,通过域名或IP地址访问httpd服务器,将可以看到Web站点的页面内容。若使用的是httpd服务默认的首页,则页面会显示"Itworks!表示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/H"HTP/1. 1"....."的消息。
root@www \^\]# tail /usr/local/httpd/logs/access_log 173.17.17.2--\[04/Jul/2020:16:58:23 +0800
"GET/HTTP/1.1" 200 45
173.17.17.2 - - [04/Jul/2020:16:58:23 +0800]
"GET /favicon. ico HTTP/
1.1" 404 209
173.17.17.2 - - [04/Jul/2020:16:58:27 +0800] GET / HTTP/1.1" 304 -
4 全局配置项
全局配置决定httpd服务器的全局运行参数,使用"关键字值"的配置格式。例如,
ServerRoot "/usr/local/httpd"
Listen 80
User daemon
Group daemon
ServerAdmin [email protected]
ServerName www.kgc.com
DocumentRoot "/usr/local/httpd/htdocs"
Directory Index index.htmlindex.php
ErrorLog "logs/error_log"
LogLevel warn
CustomLog logs/access_log common
Pid File logs/httpd.pid
AddDefaultCharset UTF-8
Include conf/extra/httpd-default.conf
>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站点的完整主机名(主机名+域名(3)
>DocumentRoot:设置网站根目录,即网页文档在系统中的为实际存放路径此配置项比较容易和ServerRoot混淆,需要格外注意。
>DirectoryIndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格分开,默认的首页文件为index.html。
>ErrorLog:设置错误日志文件的路径,默认路径为logs/error_log。
>LogLevel:设置记录日志的级别,默认级别为warn(警告)。
>CustomLog:设置访问日志文件的路径、日志类型,默认路径为logs/access_log,使用的类型为 common(通用格式)。
>PidFile:设置用于保存httpd进程号(PID)的文件,默认保存地址为logs/httpd.pid,logs目录位于Apache的服务器根目录下。
>AddDefaultCharset:设置站点中的网页默认使用的字符集编码,如UTF-8、gb2312等。
>Include:包含另一个配置文件的内容,可以实现将一些特殊味功能的配置放到一个单独的文件中,再使用Include配置项将其包含到httpd.conf文件中,这样便于独立进行配置功能的维护而不影响主配置文件。
2.区域配置项
除了全局配置项以外,httpd.conf文件中的大多数配置是包括在区域中的。区域 配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。
<Directory> //定义"/"目录区域的开始
Options FollowSymLinks //控制选项,允许使用符号链接
AllowOverride None //不允许隐含控制文件中的覆盖配置Requ
ire all denied //禁止任何人访问此区域
</Directory> //定义"/"目录区域的结束
在以上区域定义中,设置了一个根目录的区域配置,其中浓加的访问控制相关配置只对httpd服务的根目录有效,而不会作用于全局或其他目录区域。
5 构建虚拟web主机
使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的Web站点。httpd服务支持的的虚拟主机类型包括以下三种。
基于域名: 为每个虚拟主机使用不同的域名,但是其对应的II地址是相同的。例如,www.kgc.com和ww.kcce.com站点的IP地址都是173.17.17.11。这是使用最为普遍的虚拟Web主机类型。
基于IP地址: 为每个虚拟主机使用不同的域名,且各自对应的的IP地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。
**基于端口:**这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站站点时需要同时指定端口号才能访问。
5.1 基于域名的虚拟主机
1.为虚拟主机提供域名解析
首先需要向DNS服务提供商注册各虚拟Web站点的域名,以便当访问其中任何一个虚拟Web站点时,最终访问的都是同一个IP地址---实际支撑所有虚拟Web站点的服务器的IP地址。
2.为虚拟主机准备网友文档
root@www\~\]mkdir -p /var/www/html/kgccom \[root@www\^\]# mkdir -p /var/www/html/kccecom \[root@www\~\]# echo \
www.kgc.com\ /var/www/html/kgccom/ind ex. html \[root@www\`\]# echo "\
"\> /var/www/html/kccecom//i ndex. htmlwww.kcce.com\
3.添加虚拟主机配置
在httpd服务器的主配置文件中,若要启用基于域我名的虚拟Web主机,通常需要配置以下几个方面的内容。
>虚拟主机区域:使用<VirtualHost监听地址>.......</VirtualHost>区域配置,为每一个虚拟Web主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网页根目录的配置项:其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。
>目录权限:使用<Directory 目录位置>.......</Directory>区域配置,为每一个虚拟Web主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹夹授权访问权限的
方法来简化配置。当虚拟Web主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在httpd.conf文件中通过 Include加载这些配置。这样可以将对httpd.conf文件的改动减至最少,更方便配置内容的维护。
root@www\`\]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf //创建独立的配置文件 \
//设置 kgc虚拟站点区域 DocumentRoot "/var/www/html/kgccom ServerName www.kgc.com ErrorLog"logs/www.kgc.com.error_log" CustomLog"logs/www.kgc.com.access_logcommon \ \//设置kcce虚拟站点区域 DocumentRoot "/var/www/html/kccecom" ServerName www.kcce.com ErrorLog "logs/www.kcce.com.error_log CustomLog"logs/www.kcce.com.access_log"common \ \\[root@www \^\]# vim /usr/local/httpd/conf/httpd.conf ...... Include conf/extra/httpd-vhosts.conf //加载独立的配置文件 \[root@www\~\]systemctl restart httpd //重启服务使新配置生效
4.在客户机中访问虚拟web主机
在客户机的浏览器中,使用网站名称分别访问不同的虚拟Web主机,确认能够看到不同的网页内容,此时表示基于域名的虚拟主机配置成成功。若无法看到此结果,则需要检查两个站点的首页文件,根据上述过和程排查配置错误,必要时清空浏览器缓存后重新访问。
5.2基于IP地址,基于端口的虚拟主机
1.基于IP地址的虚拟机
对于基于IP地址的虚拟主机,每个虚拟Web主机各自使用不同的IP地址,但是都通过同一台httpd服务器对外提供Web浏览服务。正因为如此,用来支撑这些虚拟Web主机的服务器也就需要有大量的网络接口,这在实际应用中往往不太方便,所以基于IP地址的虚拟主机并不像基于域名虚拟主机那样应用广泛。
2.基于端口的虚拟主机
基于端口的虚拟主机通常只用于同一个Web站点,其针又对的网站名称、IP地址往往是相同的,但通过不同的TCP端口来提供访问不同网页内容的服务入口。在浏览器中访问非80端口的Web服务器时,需要明确指出服务器的端口号,如访问http://www.kgc.com:8353/。
配置基于端口的虚拟Web主机时,要通过多个Listen配置项来指定要监听的TCP端口号,每个虚拟Web主机的VirtualHost配置中应同时指定IP地址和端口号。