如何在CentOS 7上完整搭建LNMP环境并发布PHP项目?

在服务器运维领域,CentOS 7 以其卓越的稳定性和长期支持,一直是众多企业和开发者的首选操作系统,而 PHP 作为全球最流行的 Web 开发语言之一,与 CentOS 7 的结合构成了经典的服务器环境,在 CentOS 7 上“发布”或部署 PHP,并非简单的 yum install php 即可,本文将为您提供一份详尽、清晰且结构化的指南,帮助您在 CentOS 7 上成功部署并配置一个现代化、高性能的 PHP 环境。

如何在CentOS 7上完整搭建LNMP环境并发布PHP项目?

准备工作:系统更新与第三方源

在开始安装之前,确保您的系统处于最新状态是良好的实践,这可以修复潜在的安全漏洞并确保所有软件包的依赖关系正确。

sudo yum update -y

CentOS 7 的官方默认软件源中提供的 PHP 版本非常陈旧(通常是 PHP 5.4),这个版本早已停止官方支持,存在安全风险且无法兼容现代框架,我们需要引入更可靠的第三方软件源,Remi 仓库是公认的最佳选择。

安装 EPEL (Extra Packages for Enterprise Linux) 仓库,它是 Remi 仓库的依赖。

sudo yum install -y epel-release

安装并启用 Remi 仓库,Remi 提供了多个 PHP 版本的配置文件,要安装主流的 PHP 7.4 版本,可以执行以下命令:

sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php74

通过 yum-config-manager 命令,我们可以灵活地切换想要安装的 PHP 版本,如 remi-php73remi-php80 等。

安装 PHP 及常用扩展

配置好 Remi 源后,安装 PHP 及其常用扩展就变得非常简单,以下命令将安装 PHP 7.4 核心包以及一些 Web 开发中常用的扩展,MySQL 数据库支持、GD 图形处理库、XML 处理和 MBString 字符串处理等。

sudo yum install -y php php-cli php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-opcache
  • php-cli: 命令行接口,用于在终端中执行 PHP 脚本。
  • php-fpm: FastCGI 进程管理器,是 Nginx 与 PHP 交互的首选方式,性能优异。
  • php-mysqlnd: MySQL 数据库的原生驱动,用于连接 MySQL 或 MariaDB。
  • php-opcache: OPcache 扩展,通过将预编译的脚本字节码存放在内存中来提升 PHP 性能,强烈建议启用。

配置 PHP 环境

PHP 的核心配置文件通常位于 /etc/php.ini,您可以根据应用需求调整其中的参数,以下是一些关键配置项的说明:

; 设置内存限制
memory_limit = 128M
; 允许上传的最大文件大小
upload_max_filesize = 64M
; POST 请求的最大尺寸
post_max_size = 64M
; 设置时区,避免日志或时间函数报错
date.timezone = Asia/Shanghai
; 开启 OPcache 以提高性能
opcache.enable=1

修改完配置后,如果使用 PHP-FPM,需要重启其服务以使配置生效。

sudo systemctl restart php-fpm
sudo systemctl enable php-fpm

与 Web 服务器集成

PHP 需要通过 Web 服务器(如 Apache 或 Nginx)才能对外提供服务,下面分别介绍两种主流的集成方式。

如何在CentOS 7上完整搭建LNMP环境并发布PHP项目?

与 Apache (httpd) 集成

Apache 对 PHP 的支持非常成熟,通过 mod_php 模块可以实现无缝集成。

sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd

安装完成后,Apache 会自动加载 PHP 模块,您只需在 Web 根目录(/var/www/html/)创建一个 .php 文件即可。

与 Nginx 集成

Nginx 本身不直接解析 PHP,而是通过将 PHP 请求转发给 PHP-FPM 服务来处理,这是目前高性能网站的主流架构。

首先安装 Nginx:

sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

需要配置 Nginx 以处理 PHP 文件,编辑 Nginx 的配置文件(/etc/nginx/conf.d/default.conf),添加如下 location 块:

server {
    listen       80;
    server_name  localhost;
    root   /usr/share/nginx/html;
    index  index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

配置完成后,重启 Nginx 使其生效:

sudo systemctl restart nginx

下表小编总结了两种集成方式的特点:

特性 Apache + mod_php Nginx + PHP-FPM
工作原理 PHP 作为 Apache 内置模块运行 Nginx 通过 FastCGI 协议将请求转发给独立的 PHP-FPM 进程
性能 资源消耗相对较高,对于并发处理能力较弱 轻量级,事件驱动,处理高并发能力更强,资源利用率高
配置复杂度 较低,开箱即用 稍高,需要分别配置 Nginx 和 PHP-FPM 的交互
适用场景 传统网站、并发量不大的应用 高流量、高并发的现代 Web 应用

验证安装

无论使用哪种 Web 服务器,您都可以通过创建一个 phpinfo.php 文件来验证 PHP 是否安装成功。

在您的网站根目录(/var/www/html//usr/share/nginx/html/)创建一个文件:

如何在CentOS 7上完整搭建LNMP环境并发布PHP项目?

sudo vi /var/www/html/info.php

在文件中填入以下内容:

<?php
phpinfo();
?>

保存后,在浏览器中访问 http://您的服务器IP地址/info.php,如果看到详细的 PHP 配置信息页面,恭喜您,PHP 环境已成功发布!出于安全考虑,验证完成后请务必删除此文件。


相关问答 FAQs

问1:为什么 CentOS 7 默认的 PHP 版本这么旧,我该如何安装新版本?

答: CentOS 的核心设计理念是稳定性和向后兼容性,其官方软件库中的软件包版本在系统发布时就被“冻结”了,以确保在整个生命周期内不会因软件大版本更新而引入不稳定因素,这就是为什么 CentOS 7 自带的 PHP 版本是 5.4,要安装 PHP 7.x 或 8.x 等新版本,最佳方法是使用第三方软件仓库,如 Remi Repository,Remi 专门为 RHEL 和 CentOS 提供最新版本的流行软件,并且维护得非常好,您只需按照本文“准备工作”部分的指引,安装并启用对应的 Remi 源,然后通过 yum 命令即可安装和管理任意受支持的 PHP 版本。

问2:PHP-FPM 和 Apache 的 mod_php 有什么区别?我应该如何选择?

答: 两者是 PHP 与 Web 服务器不同的集成模式,主要区别在于运行机制和性能表现。

  • mod_php:将 PHP 解释器作为 Apache 的一个模块直接嵌入到 Apache 进程中,每当有请求到达,Apache 进程自身就会解析并执行 PHP 代码,它的优点是配置简单,易于理解,缺点是每个 Apache 进程都会加载完整的 PHP 解释器,占用大量内存,在高并发场景下性能不佳。
  • PHP-FPM (FastCGI Process Manager):一个独立的、专门用于管理 PHP 进程的程序(守护进程),Web 服务器(如 Nginx 或 Apache)通过 FastCGI 协议将 PHP 请求发送给 PHP-FPM,PHP-FPM 则调用其进程池中的一个空闲进程来处理,处理完毕后返回结果,这种“进程分离”的架构非常高效,内存占用可控,并且可以单独调整 PHP-FPM 的进程数量和策略,极大地提升了并发处理能力。

选择建议

  • 如果您使用 Apache,且网站流量不大,对性能要求不高,使用 mod_php 是最简单的选择。
  • 如果您追求高性能、高并发,或者使用 Nginx 作为 Web 服务器,PHP-FPM 是毫无疑问的标准选择,即使在 Apache 环境下,通过 mod_proxy_fcgi 模块与 PHP-FPM 结合,也能获得比 mod_php 更好的性能。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-08 00:42
下一篇 2025-10-08 00:44

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信