引言
在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作。
一、LAMP 平台概述
- LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。
- LAMP 是一个缩写词,具体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或Perl、Python)网页编程语言。
二、Apache 网站服务基础
1. Apache 简介
- Apache HTTP Server 是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。
- Apache 服务器可以运行在 Linux、UNIX、Windows 等多种操作系统平台中。
2.Apache 的起源
- Apache 服务器是针对若干个 Web 服务器程序进行整合、完善后形成的软件,其名称来源于“A Patchy Server”,意思是 “基于原有Web服务程序的代码进行修改(补丁)后形成的服务器程序”。
- 1995年, Apache服务程序的1.0版本发布,之后一直由 Apache Group 负责该项目的管理和维护;直到1999年,在 Apache Group 的基础上成立了 Apache 软件基金会(Apache Software Foundation, ASF)。目前,Apache 项目一直由 ASF 负责管理和维护。
- ASF是非盈利性质的组织,最初只负责 Apach Web 服务器项目的管理,随着 Web 应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目,因此 Apache 现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。
- ASF 基金会的官方网站是 http://www.apache.org/
- Apache HTTP Server 是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”,也就是曾经的 Apache 网站服务器。
3.Apache 的特点
Apache 服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足 Web 服务器用户的应用需求。
其主要特点包括以下几个方面:
-
开放源代码:
这是 Apache服务器的重要特性之一,也是其他特性的基础。Apache服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。 -
跨平台应用:
这个特性得益于 Apache 的源代码开放。Apache 服务器可以运行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务器,甚至在大多数 Windows 系统平台中也可以良好地运行 Apache 服务器。Apache 服务器的跨平台特性使其具有被广泛应用的条件。 -
支持各种 Web 编程语言:
Apache 服务器可支持的网页编程语言包括 Perl、PHP、Python、Java 等,甚至微软的 ASP 技术也可以在Apache 服务器中使用。支持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。 -
模块化设计:
Apache 并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块来实现专有的功能,这为Apache 服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身并不具有的其他功能。 -
运行非常稳定:
Apache 服务器可用于构建具有大负载访问量的 Web 站点,很多知名的企业网站都使用 Apache 作为 Web 服务软件。 -
良好的安全性:
Apache 服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,为 Apache 的所有使用者提供尽可能安全的服务器程序。
4. 安装 httpd 服务器
- 在配置 Apache 网站服务之前,需要正确安装好 htppd 服务器软件。
- 我们可以选择 用 YUM/RPM 安装、源码编译安装两种方式,前者相对比较简单快捷,但是在功能上有一定的局限性(无法人为干涉,不能知道源里面有什么)。
- 源码编译安装的过程中,我们可以设定参数,按照需求来进行安装,并且安装的版本也可以自己选择,相比较YUM等方式就比较灵活。
4.1 安装前关闭防火墙
- 关闭防火墙等
#为了避免发生端口冲突、程序冲突等现象,建议先卸载掉之前安装的 httpd 服务。
[root@localhost ~]#rpm -e httpd --nodeps
或
[root@localhost ~]#yum -y remove httpd
#关闭防火墙并且关掉开机自启,关闭Selinux安全机制
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld
[root@localhost ~]#setenforce 0
setenforce: SELinux is disabled #如果没有显示这个结果请重启,重启不行的话需要更改配置文件
[root@www ~]#vim /etc/sysconfig/selinux #进去把第七行改为SELINUX=disabled,然后重启即可
#同步阿里云服务时间,以免后面的编译安装发生不可知的错误
[root@www ~]#ntpdate ntp1.aliyun.com
26 Sep 00:22:14 ntpdate[1781]: adjust time server 120.25.115.20 offset 0.001830 sec
- 上传安装包到 /opt/ 目录
[root@www ~]#cd /opt/
[root@www /opt]#ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
4.2 安装环境依赖包
yum -y install \
gcc \ #C语言的编译器
gcc-c++ \ #C++的编译器
make \ #源代码编译器(源代码转换成二进制文件)
pcre \ #pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \ #perl的接口开发包
expat-devel \ #用于支持网站解析HTML、XML文件
perl #perl语言编译器
yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
4.3 源码编译及安装
- 解包
tar zxvf apr-1.6.2.tar.gz
tar zxvf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
- 配置软件模块
[root@www /opt]#ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29 httpd-2.4.29.tar.bz2 rh
[root@www /opt]#cd httpd-2.4.29/
[root@www /opt/httpd-2.4.29]#ls
ABOUT_APACHE BuildBin.dsp config.status httpd.mak libhttpd.mak modules.o server
acinclude.m4 buildconf configure httpd.spec LICENSE NOTICE
......
#根据服务器的实际应用需要,可灵活设置不同的定制选项
./configure \
--prefix=/usr/local/httpd \ #指定 httpd 服务程序的安装路径
--enable-so \ #启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \ #启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \ #启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi #启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
- 编译及安装
make && make install
#完成配置后,执行 make 命令进行编译,可将源代码转换为可执行的程序;make install 命令完成最后的安装过程
#将编译完的httpd程序及相关目录、文件复制到预设的安装目录(由配置时的 --prefix 选项指定)
#make的过程可能会比较长
4.4 确认安装结果
- 由于指定的安装目录为/usr/local/httpd,因此httpd服务的各种程序、模块、帮助文件都将复制到此目录下
#如果有以下文件表明编译安装成功
[root@www /usr/local/httpd]#ls /usr/local/httpd/
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
- 上面输出结果中的主要目录用途如下:
① bin:存放 httpd 服务的各种执行程序文件,包括主程序 httpd、服务控制工具 apachectl 等。
② conf:存放 httpd 服务的各种配置文件,包括主配置文件 httpd.conf、增强配置子目录 extra 等。
③ htdocs:存放网页文档,包括默认首页文件 index.html 等。
④ logs:存放 httpd 服务的日志文件。
⑤ modules:存放 httpd 服务的各种模块文件。
⑥ cgi-bin:存放各种 CGI 程序文件。
4.5 优化执行路径
- 通过源码编译安装的 httpd 服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
- 这样的话下次再执行相关命令时就不用输入这么长的路径了,省的输错导致一系列的问题发生。
#执行下面的命令相当于执行了"/usr/local/httpd/bin/httpd-v"命令
[root@www