源码编译安装LAMP
2024-01-03 12:31:58
目录
1.前言
LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态
Web
站点服务及其应用开发环境。
LAMP 是一个缩写词,具体包括
Linux
操作系统、
Apache
网站服务器、
MySQL
数据库服务器、
PHP
(或
Perl、Python
)网页编程语言。本章将以源码编译的方式搭建
LAMP 环境,能够满足企业定制化的需求。
在构建
LAMP
平台时,各组件的安装顺序依次为
Linux
、
Apache
、
MySQL
、
PHP。
其中
Apache
和
MySQL
的安装并没有严格的顺序;而
PHP 环境的安装一般放到最后,负责沟通
Web
服务器和数据库系统以协同工作。
2. Apache 网站服务基础
本章将介绍
“Apache HTTP Server”
的特点及其编译安装过程。
2.1 Apache简介
“Apache HTTP Server”
是开源软件项目的杰出代表,它基于标准的
HTTP 网络协议提供网页浏览服务,在
Web
服务器领域中长期保持着超过半数的份额。
Apache 服务器可以运行在
Linux
、
UNIX
、
Windows
等多种操作系统平台中。
2.1.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.1.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.2 安装httpd服务器
在配置
Apache
网站服务之前,需要正确安装好
httpd
服务器软件。
httpd 服务器的安装可以选用 RPM 安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使用源码编译安装的方式要更加普遍。
2.2.1 准备工作
为了避免发生端口冲突、程序冲突等现象,建议卸载使用
RPM
方式安装的
httpd。httpd
服务编译安装时需要依赖
apr-util-devel
、
pcre-devel
等软件,因此在
httpd 编译安装之前需要先安装依赖软件。
[root@node1 ~]# rpm -e httpd --nodeps
错误:未安装软件包 httpd
[root@node1 ~]# yum -y install apr-util-devel pcre-devel
2.2.2 源码编译安装
(1)解包
将下载获得的
httpd
源码包解压并释放到
/usr/src 目录下,且切换到展开后的源码目录中。
[root@node1 ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
[root@node1 ~]# cd /usr/src/httpd-2.4.25/
[root@node1 httpd-2.4.25]#
(2)配置
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行“./configure --help”命令。
[root@node1 httpd-2.4.25]# ./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)编译及安装?
完成配置以后,执行“make”命令进行编译,将源代码转换为可执行的程序;然后执行“make install”命令完成最后的安装过程;将编译完的 httpd 程序及相关目录、文件自动复制到预设的安装目录(由配置时的“--prefix”选项指定)。其中“make”的过程可能会需要较长的时间。?
[root@node1 httpd-2.4.25]# make && make install
2.2.3 确认安装结果
由于指定的安装目录为
/usr/local/httpd
,因此
httpd
服务的各种程序、模块、帮助文
件等都将复制到此目录下。
[root@node1 ~]# ls /usr/local/httpd/
bin build cgi-bin conf error htdocs icons include logs man manual modules
[root@node1 ~]#
在安装后的
/usr/local/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/logs:存放 httpd 服务的日志文件。
- /usr/local/httpd/modules:存放 httpd 服务的各种模块文件。
- /usr/local/httpd/cgi-bin:存放各种 CGI 程序文件。
?2.2.4 优化执行路径
通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。
[root@node1 ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@node1 ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
lrwxrwxrwx 1 root root 30 1月 2 10:57 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl
lrwxrwxrwx 1 root root 26 1月 2 10:57 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd
[root@node1 ~]#
这样,在执行相关命令时就不用输入冗长的路径了。例如,当执行
“httpd -v”命令(用于查看程序版本)时,即相当于执行
“/usr/local/httpd/bin/httpd -v”
命令。
[root@node1 ~]# httpd -v
Server version: Apache/2.4.25 (Unix)
Server built: Jan 2 2024 10:51:56
[root@node1 ~]#
2.2.5 添加httpd系统服务
在
/lib/systemd/system/
目录下,建立一个以
.service
结尾的单元(
unit)配置文件,用于控制由
Systemd
管理或监控的
httpd
服务。
[root@node1 ~]# cd /lib/systemd/system/
[root@node1 system]# vim 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@node1 system]#
[root@node1 system]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@node1 system]# systemctl is-enabled httpd.service
enabled
[root@node1 system]#
成功执行上述操作后,在日常维护过程中,可直接使用
apachectl
工具或
systemctl
命令控制
httpd
服务。
2.2.3 httpd 服务器的基本配置
熟悉了
httpd
服务器的安装过程及主要目录结构之后,本章将进一步介绍使用
httpd
服务来架设
Web
站点的基本过程及常见配置。
2.2.3.1 Web站点的部署过程
在
CentOS 7.3
系统中,使用
httpd
服务部署
Web
站点的基本过程分析如下。
2.2.3.1.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@node1 ~]# hostname www.kgc.com
[root@node1 ~]# vim /etc/hostname
www.kgc.com
[root@node1 ~]# vim /etc/hosts
173.17.17.11 www.kgc.com
[root@node1 ~]#
2.2.3.1.2 配置并启动httpd服务
(1)配置httpd服务
编辑
httpd
服务的主配置文件
httpd.conf
,查找配置项
“ServerName”
,在附近添加
一行内容
“ServiceName www.kgc.com”
,用于设置网站名称。
[root@node1 ~]# vim /usr/local/httpd/conf/httpd.conf
ServerName www.kgc.com
修改
httpd.conf
文件的配置内容后,建议使用带
“-t”
选项的
apachectl
命令对配置内
容进行语法检查(或使用
“httpd-t”
命令)。如果没有语法错误,将会显示
“Syntax OK”
的
信息,否则需要根据错误提示信息来修正配置。
[root@node1 ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@node1 ~]#
(2)启动 httpd服务
使用
systemctl
命令启动
httpd
服务。正常启动
httpd
服务以后,默认将监听
TCP
协议的
80
端口。
[root@node1 ~]# systemctl start httpd.service
[root@node1 ~]# netstat -anpt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 21864/httpd
[root@node1 ~]#
2.2.3.1.3.部署网页文档
对于新编译安装的
httpd
服务,网站根目录位于
/usr/local/httpd/htdocs
下,需要将
Web
站点的网页文档复制或上传到此目录下。
httpd
服务器默认已提供了一个名为
index.html
的测试网页(可显示字串
“It works
!
”
),作为访问网站时的默认首页。
[root@node1 ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
[root@node1 ~]#
2.2.3.1.4 在客户机中访问Web站点
在客户机的网页浏览器中,通过域名或
IP
地址访问
httpd
服务器,将可以看到
Web
站点的页面内容。若使用的是
httpd
服务默认的首页,则页面会显示
“It works
!
”
,表示
httpd
服务已经正常运作。
2.2.3.1.5 查看Web站点的访问情况
httpd
服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名
分别为
access_log
和
error_log
,均位于
/usr/local/httpd/logs 目录下。
通过查看访问日志文件
access_log
,可以及时了解
Web
站点的访问情况。访问日
志中的每一行对应一条访问记录,记录了客户机的
IP
地址、访问服务器的日期和时间、请求的网页对象等信息。例如,当从客户机192.168.103.1?访问
Web
站点以后,访问日志将会记录“192.168.103.1……"GET/HTTP/1.1"……”
的消息。
[root@www ~]# tail /usr/local/httpd/logs/access_log
192.168.103.1 - - [03/Jan/2024:10:11:28 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.103.1 - - [03/Jan/2024:10:11:28 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.103.1 - - [03/Jan/2024:10:11:28 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.103.1 - - [03/Jan/2024:10:12:17 +0800] "-" 408 -
192.168.103.1 - - [03/Jan/2024:10:13:37 +0800] "GET / HTTP/1.1" 200 45
192.168.103.1 - - [03/Jan/2024:10:13:37 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.103.1 - - [03/Jan/2024:10:13:38 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.103.1 - - [03/Jan/2024:10:13:38 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.103.1 - - [03/Jan/2024:10:13:39 +0800] "GET / HTTP/1.1" 304 -
192.168.103.1 - - [03/Jan/2024:10:14:28 +0800] "-" 408 -
[root@www ~]#
通过查看错误日志文件
error_log
,可以为排查服务器运行故障提供参考依据。错误
日志文件中的每一行对应一条错误记录,记录了发生错误的日期和时间、错误事件类型、错误事件的内容描述等信息
上述过程是使用
httpd服务器部署并验证 Web 站点的基本步骤,其中涉及httpd.conf 配置文件的改动量非常少,要搭建一台简单的 Web 服务器还是十分容易的。
?
文章来源:https://blog.csdn.net/S483374558/article/details/135334231
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!