一、LAMP是什么
LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具体包括 Linux 操作系统、Apache 网站服务器、MySQL数据库服务器、PHP(或 Perl.Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定制化的需求。
在构建 LAMP 平台时,各组件的安装顺序依次为 Linux、Apache、MySQL、PHP其中 Apache 和 MySQL 的安装并没有严格的顺序;而 PHP 环境的安装一般放到最后,负责沟通 Web 服务器和数据库系统以协同工作。
二、apache
1.apache简介
“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 软件基金会(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”
2.Apache 的主要特点
Apache 服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足 Web 服务器用户的应用需求。其主要特点包括以下几个方面。开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。Apache服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。
跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运行在绝大多数软硬件平台上,所有 UNIX操作系统都可以运行 Apache 服务器,甚至Apache 服务器可以良好地运行在大多数 Windows 系统平台中。Apache 服务器的跨平台特性使其具有被广泛应用的条件。
支持各种 Web 编程语言:Apache 服务器可支持的网页编程语言包括 Per、PHP.Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为Apache 服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加Apache 本身并不具有的其他功能。
运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很多知名的企业网站都使用 Apache 作为 Web 服务软件。
良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,为Apache的所有使用者提供尽可能安全的服务器程序。
3.安装HTTP服务
1:准备工作
检査是否用rpm 方式安装有 httpd,如果有,卸载使用 RPM 方式安装的 httpd,并且编译安装之前需要先安装依赖软件。
[root@www ~]#t systemctl stop firewalld
[root@www ~]# systemctl disable firewalld
[root@localhost ~]# rpm -ga httpd #检查是否已经安装有 httpd
[root@localhost ~]# rpm -e httpd --nodeps注意:
如果提示错误,证明没有rpm安装的 nttpd
[root@localhost ~]# yum install -y apr-util-devel pcre-devel gcc* lrzsz #安装依赖软件包
2:源码编译及安装
(1)解包
官网下载apache开源的tar包,传输至shell
[root@localhost ~]## tar zxvf httpd-2.4.25.tar.g2
[root@localhost~l#cd httpd-2.4.25
(2)配置
[root@localhost httpd-2.4.25]#./configure--prefix=/usr/local/httpd--enable-so--enable-rewrite--enable-charset-lite -enable-cgi
--prefix:制定程序的安装目录
--enable-so:启用动态加载模块 DSO 的支持,使 httpd 具备进一步扩展功能的能力
-enable-rewrite:启用网页地址重写功能,用于网站优化
-enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页-enable-cgi:启用cgi 脚本程序支持,扩展网站的应用访问能力
DSO 是 Dynamic sharedobjects(动态共享目标)的缩写,它是现代 Unix 派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。
(3)编译及安装
[root@localhost httpd-2.4.25]# make && make install
3:确认安装结果
[root@localhost httpd-2.4.25]#t ls /usr/local/httpd
4:优化执行路径
[root@localhost ~]# In -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost ~]# ls -1 /usr/local/bin/httpd /usr/local/bin/apachectl
[root@localhost ~]# httpd -v
Serverversion: Apache/2.4.25 (Unix)
Serverbuilt:Jun 6 2022 20:42:04
5:添加 httpd 系统服务
[root@localhost ~]#t cd /lib/systemd/system[root@localhost system]# vim httpd.service
[Unit]
Description=The Apache HTTP Server #
After=network.target
[Service]
Type=forking
PiDFile=/usr/local/httpd/logs/httpd.pidExecStart=/usr/local/bin/apachectl SOPTONSExecReload= /bin/kill -HUP SMAINPID
[lnstall]
WantedBy=multi-user.target
注释:
After=network.target
Before/After:要是一个服务 Before 另一个服务,那么在并行启动时(Svstemd 总是用进程 0 并行启动所有东西,然后通过这两个标记来二次等待排序),那另一个服务这时就会等这个服务先启动并返回状态,注意是先启动而不是启动成功,因为失败也是一种状态,一定要成功才启动另一个服务是通过依赖关系定义的。反之 After 亦然。After=network.target 指的是后于 network 服务启动。
Type=forking服务的启动方式,有 fork方式和 simple 方式forking的方式在启动程序后会调用 fork0) 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。你要是使用的这种方式,最好也指定下 PIDFILE=,不要让 Systemd 去猜,非要猜也可以,设置 GuessMainPlD 为 yes。
ExecReload= /bin/kill -HUP SMAINPID
S MAINPID 是服务的 systemd 变量,它指向主应用程序的 PID
WantedBy=multi-user.target
指定运行级别
[root@localhost system]# systemctl daemon-reload #重载服务
[root@locahost system]#t systemctl enable httpd.service #开启HTTPD服务
[root@localhost system]# systemctl start httpd #启动HTTPD服务
[root@localhost system]#t netstat -anpt grep httpd #过滤查看HTTPD服务状态
三、httpd服务的基本配置
1.web站点服务
1:配置并启动httpd服务
(1)配置httpd服务
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
修改网站名称:
ServerName wwwbenet.com
[root@www~]# httpd -t #测试语法是否正确
Syntax OK
(2)启动 httpd 服务
[root@www ~]#f systemctl restart httpd[root@www~]#netstat -anpt grep httpd
3:部署网页文档
[root@www ~]#t echo "it works" >/usr/local/httpd/htdocs/index.html
4:在客户机中访问 Web 站点
[root@localhost ~]# vim /etc/hosts
添加域名解析:
192.168.10.101 wwwbenet.com
[root@localhost ~]# curl www.benet.com
5:查看 Web 站点的访问情况
[root@www ~]# tail /usr/local/httpd/logs/access log
2.httpd.conf 配置文件
1:全局配置文件
每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了httpd.conf 文件中最常用的一些全局配置项。
在上述设置行中,各全局配置项的含义如下。
ServerRoot: 设置 httpd 服务器的根目录,该目录下包括了运行 Web 站点必需的子目录和文件。默认的根目录为/usr/local/httpd,与 httpd 的安装目录相同。在httpd.conf配置文件中,如果指定目录或文件位置时不使用绝对路径,则目录或文件位置都认为是在服务器的根目录下。
Listen:设置 httpd 服务器监听的网络端口号,默认为 80。
User:设置运行 httpd 进程时的用户身份,默认为 daemon。
Group:设置运行 httpd 进程时的组身份,默认为daemon。
ServerAdmin:设置 httpd 服务器的管理员 E-mai 地址,可以通过此 E-mai 地址及时联系 Web 站点的管理员。
ServerName:设置 Web 站点的完整主机名(主机名+域名)。
DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置项比较容易和
ServerRoot 混淆,需要格外注意。
DirectoryIndex: