源码编译安装 LAMP
Apache 网站服务基础
Apache 简介
"Apache HTTP Server"是开源软件项目的杰出代表,它基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运行在 Linux、UNIX、Windows 等多种操作系统平台中。
- 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”
- 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的所有使用者提供尽可能安全的服务器程序。
安装 httpd 服务器
在配置 Apache 网站服务之前,需要正确安装好 httpd 服务器软件。httpd 服务器的安装可以选用 RPM 安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使用源码编译安装的方式要更加普遍本小节将以下载的源码包 httpd-2.4.25.tar.gz为例,介绍 httpd 服务的定制安装过程。
- 准备工作
为了避免发生端口冲突、程序冲突等现象,建议卸载使用 RPM 方式安装的 httpd.httpd 服务编译安装时需要依赖 apr-util-devel、pcre-devel 等软件,因此在 httpd 编译安装之前需要先安装依赖软件。
- 源码编译及安装
(1)解包
将下载获得的 httpd 源码包解压并释放到/usr/src 目录下,且切换到展开后的源码目录中。
(2)配置
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行"./confgure --help"命令。
上述配置命令中,各选项的含义如下,
》–prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd.
》–enable-so:启用动态加载模块支持,使httpd 具备进一步扩展功能的能力。
》–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
》–enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页。
》–enable-cgi:启用 CG|脚本程序支持,便于扩展网站的应用访问能力。
(3)编译及安装
完成配置以后,执行"make"命令进行编译,将源代码转换为可执行的程序;然后执行"make install"命令完成最后的安装过程;将编译完的 httpd 程序及相关目录、文件自动复制到预设的安装目录(由配置时的“–prefix"选项指定)。其中"make"的过程可能会需要较长的时间。
- 确认安装结果
由于指定的安装目录为/usr/localhttpd,因此 httpd 服务的各种程序、模块、帮助文件等都将复制到此目录下。
在安装后的/usr/localhttpd 目录下包含 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 程序文件。
- 优化执行路径
通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。
这样,在执行相关命令时就不用输入冗长的路径了。例如,当执行"httpd-v"命令(用于查看程序版本)时,即相当于执行“/usr/local/httpd/bin/httpd-v”命令。
- 添加 httpd 系统服务
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制由 Systemd 管理或监控的 httpd 服务。
成功执行上述操作后,在日常维护过程中,可直接使用 apachectl 工具或 systemctl命令控制 httpd 服务。
httpd 服务器的基本配置
熟悉了 httpd 服务器的安装过程及主要目录结构之后,本节将进一步介绍使用 httpd服务来架设 Web 站点的基本过程及常见配置。
Web 站点的部署过程
在 CentOS 7.3 系统中,使用 httpd 服务部署 Web 站点的基本过程分析如下。
- 确定网站名称、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 服务器本机中,将 |P 地址设置为 173.17.17.11:将主机名称设置为www.kgc.com;并修改/etc/hosts 文件,添加相应的映射记录以提高本地解析速度。
- 配置并启动 httpd 服务
(1)配置 httpd 服务
编辑 httpd 服务的主配置文件 httpd.conf,查找配置项“ServerName”,在附近添加一行内容“ServiceName www.kgc.com”,用于设置网站名称。
修改 httpd.conf 文件的配置内容后,建议使用带“-t"选项的 apachectl 命令对配置内容进行语法检査(或使用“httpd-t"命令)。如果没有语法错误,将会显示"Syntax OK”的信息,否则需要根据错误提示信息来修正配置。
(2)启动 httpd 服务
使用 systemctl 命令启动 httpd 服务。正常启动 httpd 服务以后,默认将监听 TCP协议的 80 端口。
- 部署网页文档
对于新编译安装的 httpd 服务,网站根目录位于/usr/local/httpd/htdocs 下,需要将Web 站点的网页文档复制或上传到此目录下。httpd 服务器默认已提供了一个名为index.html 的测试网页(可显示字串“t works!”),作为访问网站时的默认首页。
- 在客户机中访问 Web站点
在客户机的网页浏览器中,通过域名或 |P 地址访问 httpd 服务器,将可以看到 Web站点的页面内容。若使用的是 httpd 服务默认的首页,则页面会显示“lt works!”,表示httpd 服务已经正常运作。
- 查看 Web 站点的访问情况
httpd 服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名分别为 access_log 和 error_log,均位于/usr/local/httpd/logs 目录下。
通过查看访问日志文件 access_log,可以及时了解 Web 站点的访问情况。访问日志中的每一行对应一条访问记录,记录了客户机的IP 地址、访问服务器的日期和时间、请求的网页对象等信息。例如,当从客户机173.17.17.2访问Web 站点以后,访问日志将会记录“173.17.17.2……“GETHTTP/1.1”…"的消息。
通过査看错误日志文件 error_log,可以为排查服务器运行故障提供参考依据。错误日志文件中的每一行对应一条错误记录,记录了发生错误的日期和时间、错误事件类型、错误事件的内容描述等信息
上述过程是使用 httpd 服务器部署并验证 Web 站点的基本步骤,其中涉及httpd.conf配置文件的改动量非常少,要搭建一台简单的 Web 服务器还是十分容易的。
httpd.conf 配置文件
若要对 Web 站点进行更加具体、更加强大的配置,仅仅学会添加"ServerName"配置项显然是远远不够的,还需要进一步熟悉 httpd.conf配置文件,了解其他各种常见的配置项。
主配置文件 httpd.conf由注释行、设置行两部分内容组成。与大多数 Linux 配置文件一样,注释性的文字以"#"开始,包含了对相关配置内容进行的说明和解释。除了注释行和空行以外的内容即设置行,构成了Web 服务的有效配置。根据配置所作用的范围不同,设置行又可分为全局配置、区域配置。
- 全局配置项
全局配置决定 httpd 服务器的全局运行参数,使用“关键字 值”的配置格式。例如,配置网站名称时使用的“ServerName www.kgc.com”,其中“ServerName"为配置关键字,而“www.kgc.com"为对应的值。
每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了httpd.conf 文件中最常用的一些全局配置项。
在上述设置行中,各全局配置项的含义如下。
》ServerRoot: 设置 httpd 服务器的根目录,该目录下包括了运行 Web 站点必需的子目录和文件。默认的根目录为/usr/localhttpd,与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/access_log使用的类型为 common(通用格式)。
》PidFile: 设置用于保存 httpd 进程号(PID)的文件,默认保存地址为 logs/httpd,pidlogs 目录位于 Apache 的服务器根目录下。
》AddDefaultCharset: 设置站点中的网页默认使用的字符集编码,如 UTF-8、gb2312等
》Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单独的文件中,再使用 Include 配置项将其包含到 httpd.conf 文件中,这样便于独立进行配置功能的维护而不影响主配置文件。
以上配置项是 httpd.conf 文件中主要的全局配置项。还有其他很多配置项,在此不一一列举,如果需要使用可以查看 Apache 服务器中的相关帮助手册文档。
- 区域配置项
除了全局配置项以外,httpd.conf 文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。
在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对 httpd 服务的根目录有效,而不会作用于全局或其他目录区域。
构建虚拟 Web 主机
虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为"虚拟"Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。
使用 httpd 服务可以非常方便地构建虚拟主机服务器,只需要运行一个 httpd 服务就能够同时支撑大量的 Web 站点。httpd 服务支持的虚拟主机类型包括以下三种。
》基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。例如,ww.kgc.com 和 www.kcce.com 站点的 IP 地址都是 173.17.17.11。这是使用最为普遍的虚拟 Web 主机类型。
》基于 IP 地址:为每个虚拟主机使用不同的域名,且各自对应的IP 地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。
》基于端口:这种方式并不使用域名、IP 地址来区分不同的站点内容,而是使用了不同的 TCP 端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。
在上述几种虚拟 Web 主机中,基于域名的虚拟主机是使用最为广泛的,也是本节介绍的重点内容。关于另外两种类型的虚拟主机,将只介绍其配置要点。另外,因不同类型的虚拟主机其区分机制各不相同,建议不要同时使用,以免相互混淆。
基于域名的虚拟主机
本小节以实现两个虚拟 Web 主机 www.kgc.com 和 www.kcce.com 为例,使用台 httpd 服务器搭建,IP 地址为 173.17.17.11。具体构建过程介绍如下。
- 为虚拟主机提供域名解析
首先需要向 DNS 服务提供商注册各虚拟 Web 站点的域名,以便当访问其中任何一个虚拟 Web 站点时,最终访问的都是同一个 IP 地址–实际支撑所有虚拟 Web 站点的服务器的IP 地址。
在本小节的案例中,需要将两个虚拟 Web 主机 www.kgc.com 和 www.kcce.com 解析为同一个 |P 地址–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 的地址。例如,若要在 |P 地址为 173.17.17.2的服务器中构建 BIND 服务,具体配置方法就不赘了。
- 为虚拟主机准备网页文档
为每个虚拟 Web 主机准备网站目录及网页文档。为了测试方便,分别为每个虚拟Web 主机提供包含不同内容的首页文件。例如,在arhwww/html 目录下创建两个子文件夹 kgccom、kccecom,分别作为www.kgc.com 和 www.kcce.com 的网站根目录并分别编写测试网页文件。
- 添加虚拟主机配置
在 httpd 服务器的主配置文件中,若要启用基于域名的虚拟 Web 主机,通常需要配置以下几个方面的内容。
》虚拟主机区域:使用<VirtualHost 监听地址>…NrtualHost>区域配置,为每一个虚拟 Web 主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网页根目录的配置项:其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。
》目录权限:使用<Directory 目录位置>…/Directory>区域配置,为每一个虚拟Web 主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置当虚拟 Web 主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在
httpd.conf 文件中通过 Include 加载这些配置。这样可以将对 httpd.conf 文件的改动减至最少,更方便配置内容的维护。
- 在客户机中访问虚拟 Web 主机
在客户机的浏览器中,使用网站名称分别访问不同的虚拟Web 主机,确认能够看到不同的网页内容,此时表示基于域名的虚拟主机配置成功。若无法看到此结果,则需要检查两个站点的首页文件,根据上述过程排查配置错误,必要时清空浏览器缓存后重新访问。
基于IP 地址、基于端口的虚拟主机
构建基于 IP 地址或基于端口的虚拟主机的过程与基于域名的虚拟主机类似,也需要先提供域名解析、准备网页文档,再调整 httpd 配置、重启 httpd 服务,然后在客户机中访问虚拟主机进行测试。其中最主要的区别是,不同类型的虚拟主机在 httpd.conf文件中的配置内容略有不同。
- 基于IP地址的虚拟主机
对于基于 IP 地址的虚拟主机,每个虚拟 Web 主机各自使用不同的 IP 地址,但是都通过同一台 httod 服务器对外提供 Web 浏览服务。正因为如此,用来支撑这些虚拟Web 主机的服务器也就需要有大量的网络接口,这在实际应用中往往不太方便,所以
基于 IP 地址的虚拟主机并不像基于域名虚拟主机那样应用广泛。配置基于 |P 地址的虚拟 Web 主机时,需要在每个虚拟 Web 主机的 VirtualHost 配置项中指定各自域名所对应的IP地址。例如,站点www.kgc.com 的 IP 地址为220.181.120.61,站点 www.kcce.com 的IP 地址为 122.115.32.133,若要实现基于 IP地址的虚拟 Web 主机,则可参考以下内容调整 httpd 服务器的配置。
需要注意的是,在做基于IP 地址的虚拟主机实验时,为了简化操作、方便测试,各虚拟 Web 主机可以是同一个 DNS Ⅸ域的,使用的|P 地址也可以是同一个网段的。例如,两个虚拟主机 www.kgc.com 和 ftp.kgc.com,使用的 IP 地址分别为 173.17.17.11和 173.17.17.12,这样可以减少 DNS 配置和网段调整的工作。
- 基于端口的虚拟主机
基于端口的虚拟主机通常只用于同一个 Web 站点,其针对的网站名称、IP 地址往往是相同的,但通过不同的 TCP端口来提供访问不同网页内容的服务入口。在浏览器中访问非 80 端口的Web 服务器时,需要明确指出服务器的端口号,如访问http://www.kgc.com:8353/
配置基于端口的虚拟 Web 主机时,要通过多个 Listen 配置项来指定要监听的 TCP端口号,每个虚拟 Web 主机的 VirtualHost 配置中应同时指定 IP 地址和端口号。
例如,若要实现当通过 80 端口访问 www.kcce.com 站点时,看到的是正常的kcce站点内容;而当通过 8353 端口来访问 ww.kcce.com 站点时,可以看到 kcce 站点的后台管理系统页面,则可参考以下内容调整 httpd 服务器的配置。
MySQL 的编译安装
MySQL 是一个真正的多线程、多用户的 SQL数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。本节将介绍 MySQL 的编译安装过程、服务控制方法。
为了确保MySQL数据库功能的完整性、可定制性,本小节将以mysql-5.6.36.tar.gz 为例使用源代码编译的方式安装 MySQL 数据库系统。
- 准备工作
为了避免发生端口冲突、程序冲突等现象,建议先査询 MySQL软件的安装情况,确认没有使用以 RPM 方式安装的 mysql-server、mysql、MariaDB 软件包;否则建议将其卸载。
由于 MySQL 5.5 需要 cmake 编译安装,所以先安装 cmake 包。
- 源码编译及安装
(1)创建运行用户
为了加强数据库服务的权限控制,建议使用专门的运行用户,如mysql。此用户不需要直接登录到系统,可以不创建宿主文件夹。
(2)解包
将下载的 MySQL 源码包解压,释放到/usr/src 目录下,并切换到展开后的源码目
(3)配置
在内容丰富、结构庞大的企业网站平台中,可能会用到多种字符集的网页,相应地数据库系统也应该支持不同的字符集编码。在配置过程中,可以将默认使用的字符集设置为 utf8,并添加其他字符集的支持。
上述配置命令中,各选项的含义如下。
.DCMAKE_INSTALL_PREFIX:指定将 MySQL 数据库程序安装到某目录下,如目录/usr/local/mysql.
-DSYSCONFDIR:指定初始化参数文件目录。
-DDEFAULT_CHARSET:指定默认使用的字符集编码,如utf8。
-DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci是适用于 UTF-8 字符集的通用规则。
-DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。
(4)编译并安装
- 安装后的其他调整
(1)对数据库目录进行权限设置
(2)建立配置文件
(3)初始化数据库
为了能够正常使用 MySQL数据库系统,应以运行用户 mysql 的身份执行初始化脚本 mysql_install_db,指定数据存放目录等。
(4)设置环境变量
为了方便在任何目录下使用 mysql命令,需要在/etclprofile 设置环境变量。
- 启动并访问 MySQL 服务
MySQL 源码包中提供的服务控制脚本,使用该脚本即可控制 MySQL 服务。找到support-files 文件夹下的 mysql.server 脚本文件,将其复制到/etc/rc.dinit.d 目录下,并改名为 mysqld,然后再设置执行权限。
这样,以后就可以直接执行/etc/init.d/mysqld 脚本来控制 MySQL 数据库服务了例如,若要启动 mysqld 服务,并查看其运行状态,可以执行以下操作。
MySQL 服务器默认通过 TCP 3306 端口提供服务。通过编辑/etc/my.cnf 配置文件中[mysqld]配置段的“port= 3306"行,可以更改监听端口。
经过安装后的初始化过程,MySQL 数据库的默认管理员用户名为"root”,密码为给定的随机密码。以 root用户登录本机的 MySQL 数据库,可以执行以下操作。
构建 PHP 运行环境
PHP 即“Hypertext Preprocessor”(超级文本预处理语言)的缩写,是一种服务器端的 HTML 嵌入式脚本语言。PHP 的语法混合了 C、Java、Per 及部分自创的新语法,拥有更好的网页执行速度,更重要的是 PHP 支持绝大多数流行的数据库,在数据库层
面的操作功能十分强大,而且能够支持 UNIX、Windows、Linux 等多种操作系统。
本节将介绍如何构建 PHP 运行环境,以实现 LAMP 协同架构。其前提条件是服务器中已经编译安装好 Apache HTTP Server 和 MySQL 数据库。
安装PHP软件包
PHP项目最初由Rasums Lerdorf在 1994年创建,1995 年发布第一个版本 PHP1.0本小节将以稳定版源码包 php-5.5.38.tar.gz为例。该版本可以从 PHP 官方站点http://www.php.net 下载。
下面介绍编译安装 PHP 相关软件包的基本过程。
- 准备工作
为了避免发生程序冲突等现象,建议先将 RPM 方式安装的 PHP 及相关依赖包(如果已存在)卸载。例如,根据实际安装情况可卸载 php、php-cli、php-ldap、php-common.php-mysql 等。另外,需要从光盘中安装 zlib-devel、libxml2-devel 等依赖包。
- 安装扩展工具库
在实际企业应用中,一部分基于PHP开发的Web应用系统会需要额外的扩展工具,如数据加密工具 libmcrypt、mhash、mcrypt等(可以从站点 http://sourceforge.net下载)。安装 php 软件包之前,应先安装好这些扩展工具程序。
(1)安装libmcrypt
(2)安装 mhash
(3)安装mcrypt
- 编译安装 PHP
(1)解包
将下载获得的PHP源码包解压并释放到/usr/src目录下,切换到展开后的源码目录。
(2)配置
在定制 PHP 的配置选项时,最关键的是要指定httpd、mysqld 的安装路径,以便添加相关支持设置,使 LAMP 各组件协同工作。除此之外,还可以指定安装路径,启用多字节支持、加密扩展支持等。
上述配置命令中,各选项的含义如下。
–prefix:指定将 PHP 程序安装到哪个目录下,如/usr/local/php5.
–with-mcrypt:加载数据加密等扩展工具支持。
–with-apxs2:设置 Apache HTTP Server 提供的 apxs 模块支持程序的文件位置,
–with-mysql:设置 MySQL 数据库服务程序的安装位置。
–with-mysqli:添加 MySQL 扩展支持。
–with-config-file-path:设置 PHP 的配置文件 php.ini 将要存放的位置
–enable-mbstring:启用多字节字符串功能,以便支持中文等代码。
(3)编译及安装
编译的过程可能会需要较长时间,需耐心等待。若期间未出现错误,那么PHP 程序的安装过程就基本完成了。接下来需要对LAMP 组件环境进行适当的配置,并验证是否能够协同工作。
设置 LAMP 组件环境
设置 LAMP 组件环境,主要包括对 PHP 的配置文件 php.ini、Apache 的配置文件httpd.conf 的调整。前者用来确定 PHP 的运行参数,后者用来加载 libphp5.so 模块,以便支持 PHP 网页。
- php.ini 配置调整
(1)php.ini 的建立及基本设置
安装好 PHP 软件包以后,服务器并不会自动创建 php.ini 配置文件,但在源码目录下提供了两个样例配置文件,分别对应于开发环境、生产环境。
选择其中一个样例文件,并复制到PHP 的配置文件目录/usr/loca/php5下,并改名为 php.ini。在 php.ini配置文件中,以分号开头的内容表示注释信息。
通过修改 php.ini 文件中的配置内容,可以控制 PHP 网页的执行特性,如是否允许用户上传文件、设置上传文件的大小限制、设置默认使用的字符集、加载额外的扩展模块等。如果没有特别要求,可以直接沿用默认配置,不做任何修改。
(2)添加ZendGuardLoader 优化模块
为了进一步提高 PHP 程序的执行效率,优化页面加载速度,可以为 PHP 添加 Zend公司开发的ZendGuardLoader优化模块。若需要加密PHP 代码以限制未经授权的分发,还可以购买该公司的 ZendGuard 软件。添加 ZendGuardLoader 模块支持的过程如下所述。
首先将下载的 ZendGuardLoader 包释放,并将其中 php-5.3.x目录下的模块文件复制到 PHP 程序的模块文件夹。
然后,修改 php.ini 配置文件,添加及启用 ZendGuardLoader.so 模块的配置语句
- httpd.conf 配置调整
要使 httpd 服务器支持 PHP 页面解析功能,需通过 LoadModule 配置项加载 PHP程序的模块文件,并通过 AddType 配置项添加对".php"类型网页文件的支持。除此以外,还应修改 Directorylndex 配置行,添加 index.php 配置项,以识别常见的 PHP 首页文件。
在上述配置内容中,LoadModule 行应该会在安装 PHP 的过程中自动添加,其中的“php5_module"表示模块名称:modules/libphp5.so"表示模块文件位置。而 AddType行需要手动添加,DirectoryIndex 行在原有基础上对其进行修改即可。
测试 LAMP 协同工作
完成 PHP 相关软件的安装、调整配置以后,应对其进行必要的功能测试,以验证LAMP 平台各组件是否能够协同运作。在网站根目录下创建相应的 PHP 测试网页,然后通过浏览器进行访问,根据显示结果即可判断 LAMP 平台是否构建成功。
下面分别从 PHP 网页的解析、通过 PHP 页面访问 MySQL 数据库两个方面进行测试
要想测试 PHP 环境是否能够正常工作,需要建立一个使用 PHP 语言编写的网页文件,并通过 httpd 服务器发布,在浏览器中对其进行访问。由于PHP 语言并非本章学习的重点,这里不做过多的讲解。用于测试时,只需要建立一个简短的 PHP 测试文件即可。
- 测试 PHP 网页能否正确显示
编写一个“.php"格式的网页测试文件,使用 PHP 内建的"phpinfo()“函数显示服务器的 PHP 环境信息,PHP 代码应包括在”<?php ..?>"标记之间。将测试网页文件放置到网站根目录下,如/usr/local/httpd/htdocs/test1.php.
通过浏览器访问测试网页,如 http://www.kgc.com/test1.php。若能够看到 PHP 程序的版本号、配置命令、运行变量等相关信息,如图 2.1 所示,则表示此 Web 服务器已经能正常显示 PHP 网页:若还能看到 Zend 引擎相关信息,则表示 ZendGuardLoader模块也已成功启用。
- 测试 PHP 网页能否访问 MySQL 数据库
编写一个网页测试文件test2.php,添加简单的数据库操作命令,用于验证与 MySQL服务器的连接、査询等操作。其中’mysqli connect()"函数用于连接 MySQL 数据库,需要指定目标主机地址,以及授权访问的用户名、密码。
通过浏览器访问测试网页,如 http:/hwww.kgc.com/test2.php。若能看到成功连接的提示信息,则表示能够通过 PHP 网页访问 MySQL 数据库。当使用了错误的用户名、密码,或者因“mysqld-connect()"函数未运行而导致连接失败时,执行时将会报错。