02 源码编译构建LAMP

目录

2.1Apache 网站服务基础

2.1.1Apache 简介

1. Apache 的起源

2. Apache的主要特点

2.1.2安装httpd服务器

1. 准备工作

2.源码编译及安装

(1)解包

(2)配置

(3)编译及安装

3.确认安装结果

4.优化执行路径

5. 添加 httpd 系统服务

2.2 httpd服务器的基本配置

2.2.1 Web 站点的部署过程

1. 确定网站名称、IP地址

2.配置并启动 httpd 服务

(1)配置 httpd 服务

(2)启动 httpd 服务

3. 部署网页文档

4. 在客户机中访问Web站点

5. 查看Web站点的访问情况

2.2.2 httpd.conf 配置文件

1. 全局配置项

2.区域配置项

2.3构建虚拟Web主机

2.3.1基于域名的虚拟主机

1. 为虚拟主机提供域名解析

2. 为虚拟主机准备网页文档

3.添加虚拟主机配置


2.1Apache 网站服务基础

2.1.1Apache 简介

“Apache HTTP Server”是开源软件项目的杰出代表,它基于标准的HTTP网络协议提供网页浏览服务,在Web服务器领域中长期保持着超过半数的份额。Apache服务器可以运行在Linux、UNIX、Windows 等多种操作系统平台中。

1. Apache 的起源

Apache服务器是针对之前出现的若干个Web服务器程序进行整合、完善后形成的软件,其名称来源于“A Patchy Server”,意思是“基于原有Web服务程序的代码进行修改(补丁)后形成的服务器程序”。1995年,Apache服务程序发布了1.0版本,之后一直由“Apache Group”负责该项目的管理和维护;直到1999年,在“Apache Group”的基础上成立了Apache 软件基金会(ApacheSoftwareFoundation,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”。

2. Apache的主要特点

Apache服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足Web服务器用户的应用需求。其主要特点包括以下几个方面。
>开放源代码:这是Apache服务器的重要特性之一,也是其他特性的基础。Apache服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。
>跨平台应用:这个特性得益于Apache的源代码开放。Apache服务器可以运行在绝大多数软硬件平台上,所有UNIX操作系统都可以运行Apache服务器,甚至Apache服务器可以良好地运行在大多数Windows系统平台中。Apache服务器的跨平台特性使其具有被广泛应用的条件。
> 支持各种Web编程语言:Apache服务器可支持的网页编程语言包括Perl、PHP、Python、Java等,甚至微软的ASP技术也可以在Apache服务器中使用。支持各种常用的Web编程语言使Apache具有更广泛的应用领域。
>模块化设计:Apache并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为Apache服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加Apache本身并不具有的其他功能。
> 运行非常稳定:Apache服务器可用于构建具有大负载访问量的Web站点,很多知名的企业网站都使用Apache作为Web服务软件。
> 良好的安全性:Apache服务器具有相对较好的安全性,这是开源软件共同具有的特性。并,Apache的维护团队会及时对已发现的漏洞提供修补程序,为Apache的所有使用者提供尽可能安全的服务器程序。

2.1.2安装httpd服务器

在配置Apache网站服务之前,需要正确安装好httpd服务器软件。httpd服务器的安装可以选用RPM安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使用源码编译安装的方式要更加普遍。

1. 准备工作

为了避免发生端口冲突、程序冲突等现象,建议卸载使用RPM方式安装的httpd。httpd 服务编译安装时需要依赖apr-util-devel、pcre-devel 等软件,因此在httpd编译安装之前需要先安装依赖软件。

2.源码编译及安装
(1)解包

将下载获得的httpd 源码包解压并释放到/usr/src 日录下,且切换到展开后的源码目录中。
[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -c /usr/src

[root@localhost ~]# cd /usr/src/httpd-2.4.25/

(2)配置

根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行"./configure --help命令。

[root@locahost httpd-2.4.25]#,/configure --prefix=/usr/localhttpd --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)编译及安装

完成配置以后,执行"make"命令进行编译,将源代码转换为可执行的程序;然后执行"make & install"命令完成最后的安装过程;将编译完的 httpd 程序及相关目录、文件自动复制到预设的安装目录(由配置时的"--prefix"选项指定)。其中"make"的过程可能会需要较长的时间。

3.确认安装结果

由于指定的安装目录为/usr/localhttpd,因此 httpd 服务的各种程序、模块、帮助文件等都将复制到此目录下。
[root@localhost ~]# ls /usr/localhttpd
bin cgi-bin error icons logs manual
build confhtdocs include man modules

在安装后的/usr/ocal/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/ogs:存放 httpd 服务的日志文件。

/usr/local/httpd/modules:存放 httpd 服务的各种模块文件。

/usr/local/httpd/cgi-bin:存放各种 CG| 程序文件。

4.优化执行路径

通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。

这样,在执行相关命令时就不用输入冗长的路径了。例如,当执行"httpd-v"命令(用于查看程序版本)时,即相当于执行"/usr/local/httpd/bin/httpd-v"命令。
[root@localhost ~]# httpd-v
Server version: Apache/2.4.25 (Unix)
Server built:Jan 10 2024 13:25:57

5. 添加 httpd 系统服务

在/lib/systemd/system/目录下,建立一个以.service结尾的单元(unit)配置文件,用于控制由Systemd管理或监控的httpd服务。

2.2 httpd服务器的基本配置

2.2.1 Web 站点的部署过程

在CentOS 7.3系统中,使用httpd服务部署Web站点的基本过程分析如下。

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文件,添加相应的映射记录以提高本地解析速度。

[root@localhost ~]# hostname www.kgc.com[root@localhost ~]# vim /etc/hostname
www.kgc.com
[root@localhost ~]# vim /etc/hosts
173.17.17.11 ww.kgc.com
[root@locahost ~]# bash
[root@www ~]#

2.配置并启动 httpd 服务
(1)配置 httpd 服务

编辑 httpd 服务的主配置文件 httpd.conf,查找配置项“ServerName”,在附近添加一行内容"ServiceName www.kgc.com",用于设置网站名称。

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
……. //省略部分内容
ServerName www.kgc.com

修改 httpd.conf 文件的配置内容后,建议使用带"-t"选项的 apachectl 命令对配置内容进行语法检查(或使用"httpd-t"命令)。如果没有语法错误,将会显示"Syntax OK"的信息,否则需要根据错误提示信息来修正配置。
[root@www ~]#/usr/local/httpd/bin/apachectl -t
Syntax OK

(2)启动 httpd 服务

使用 systemctl 命令启动 httpd 服务。正常启动 httpd 服务以后,默认将监听 TCP协议的 80 端口。

3. 部署网页文档

对于新编译安装的httpd服务,网站根目录位于/usr/local/httpd/htdocs下,需要将Web站点的网页文档复制或上传到此目录下。httpd服务器默认已提供了一个名为index.html的测试网页(可显示字串“It works!”),作为访问网站时的默认首页。

[root@www~]# cat /usr/local/httpd/htdocs/index.html

<html><body><h1>lt works !< /h1></body></html>

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” ……. ”的消息。

[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 -

通过查看错误日志文件error_log,可以为排查服务器运行故障提供参考依据。错误日志文件中的每一行对应一条错误记录,记录了发生错误的日期和时间、错误事件类型、错误事件的内容描述等信息上述过程是使用httpd服务器部署并验证Web站点的基本步骤,其中涉及httpd.conf配置文件的改动量非常少,要搭建一台简单的Web服务器还是十分容易的。

2.2.2 httpd.conf 配置文件

若要对Web站点进行更加具体、更加强大的配置,仅仅学会添加“ServerName”配置项显然是远远不够的,还需要进一步熟悉httpd.conf配置文件,了解其他各种常见的配置项。主配置文件httpd.conf由注释行、设置行两部分内容组成。与大多数Linux配置文件一样,注释性的文字以“#”开始,包含了对相关配置内容进行的说明和解释。除了注释行和空行以外的内容即设置行,构成了Web服务的有效配置。根据配置所作用的范围不同,设置行又可分为全局配置、区域配置。

1. 全局配置项

全局配置决定httpd服务器的全局运行参数,使用“关键字 值”的配置格式。例如,配置网站名称时使用的“ServerName www.kgc.com”,其中“ServerName”为配置关键字,而“www.kgc.com”为对应的值。
每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了httpd.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站点的完整主机名(主机名+域名)。DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置项比较容易和ServerRoot混淆,需要格外注意。

Directorylndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格分开,默认的首页文件为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 文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。

在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对 httpd 服务的根目录有效,而不会作用于全局或其他目录区域。

2.3构建虚拟Web主机

虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web主机。通过虚拟Web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的Web站点。httpd服务支持的虚拟主机类型包括以下三种。

>基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。例如,www.kgc.com和www.kcce.com站点的IP地址都是173.17.17.11。这是使用最为普遍的虚拟Web主机类型。

>基于IP地址:为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。

这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。

> 基于端口:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

在上述几种虚拟Web主机中,基于域名的虚拟主机是使用最为广泛的,也是本节介绍的重点内容。关于另外两种类型的虚拟主机,将只介绍其配置要点。另外,因不同类型的虚拟主机其区分机制各不相同,建议不要同时使用,以免相互混淆。

2.3.1基于域名的虚拟主机

本小节以实现两个虚拟Web主机www.kgc.com和www.kcce.com为例,使用一
台httpd服务器搭建,IP地址为173.17.17.11。具体构建过程介绍如下。

1. 为虚拟主机提供域名解析

首先需要向DNS服务提供商注册各虚拟Web站点的域名,以便当访问其中任何一个虚拟Web站点时,最终访问的都是同一个IP地址 -- 实际支撑所有虚拟Web站点的服务器的IP地址。在本小节的案例中,需要将两个虚拟Web主机www.kgc.com和www.kcce.com解析为同一个IP地址 -- 173.17.17.11。而在实际的httpd服务器173.17.17.11中,可以使用虚拟Web站点中的任何一个作为主机名称,如www.kgc.com。实验过程中可以自行搭建测试用的DNS服务器。主配置文件named.conf中需要
添加 kgc.com 和 kcce.com两个区域;各区域的地址数据库中均设置“Www -- >173.17.17.11”的A记录。确认客户机能够正确解析到www.kgc.com和www.kcce.com的地址。例如,若要在IP地址为173.17.17.2的服务器中构建BIND服务,具体配置方法就不赘了。

2. 为虚拟主机准备网页文档

为每个虚拟Web主机准备网站目录及网页文档。为了测试方便,分别为每个虚拟Web 主机提供包含不同内容的首页文件。例如,在/var/www/html目录下创建两个子文件夹kgccom、kccecom,分别作为www.kgc.com和www.kcce.com的网站根目录,并分别编写测试网页文件。

3.添加虚拟主机配置

在httpd服务器的主配置文件中,若要启用基于域名的虚拟Web主机,通常需要配置以下几个方面的内容。
虚拟主机区域:使用<VirtualHost 监听地址>..</VirtualHost>区域配置,为每一个虚拟 Web 主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网页根目录的配置项;其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。目录权限:使用<Directory 目录位置>..</Directory>区域配置,为每一个虚拟Web 主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置。当虚拟 Web 主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在httpd.conf 文件中通过 Include 加载这些配置。这样可以将对 httpd.conf 文件的改动减至最少,更方便配置内容更易于维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值