在服务器运维领域,CentOS 7 以其卓越的稳定性和长期支持,一直是众多企业和开发者的首选操作系统,而 PHP 作为全球最流行的 Web 开发语言之一,与 CentOS 7 的结合构成了经典的服务器环境,在 CentOS 7 上“发布”或部署 PHP,并非简单的 yum install php
即可,本文将为您提供一份详尽、清晰且结构化的指南,帮助您在 CentOS 7 上成功部署并配置一个现代化、高性能的 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-php73
、remi-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)才能对外提供服务,下面分别介绍两种主流的集成方式。
与 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/
)创建一个文件:
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
更好的性能。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复