在服务器运维领域,CentOS 以其卓越的稳定性和安全性,一直是搭建 Web 服务的首选操作系统之一,而 PHP 作为一种广泛使用的开源脚本语言,尤其适合 Web 开发,本文将提供一份详尽的 CentOS 搭建 PHP 环境的教程,引导您完成从环境准备到功能测试的全过程,确保您能够顺利建立一个高效、可靠的 PHP 运行平台。
环境准备与系统更新
在开始安装任何软件之前,首要任务是确保您的 CentOS 系统处于最新状态,这不仅可以修复已知的安全漏洞,还能确保软件包之间的依赖关系是最优的,请通过 SSH 连接到您的 CentOS 服务器,并执行以下命令:
sudo yum update -y
此命令会更新系统中所有已安装的软件包到最新版本,对于 CentOS 8 及更高版本,您可能需要使用 dnf
替代 yum
,但命令是相同的,完成更新后,一个干净、整洁的系统基础便准备就绪。
安装 Nginx Web 服务器
虽然 Apache 是传统的选择,但 Nginx 凭借其轻量级、高并发处理能力的优势,已成为现代 Web 架构的主流,本教程将以 Nginx 为例进行讲解。
安装 Nginx
使用yum
包管理器可以轻松安装 Nginx:sudo yum install nginx -y
启动并设置开机自启
安装完成后,需要启动 Nginx 服务,并将其设置为系统启动时自动运行:sudo systemctl start nginx sudo systemctl enable nginx
验证安装
您可以在浏览器中访问您服务器的公网 IP 地址,如果看到 Nginx 的默认欢迎页面,则说明 Web 服务器已成功安装并运行。
配置 Remi 仓库并安装 PHP
CentOS 的官方软件源通常提供的 PHP 版本较为陈旧,为了获得最新、功能更全且安全性更高的 PHP 版本(如 PHP 8.1, 8.2 等),我们强烈推荐使用 Remi 仓库。
安装 EPEL 和 Remi 仓库
EPEL (Extra Packages for Enterprise Linux) 是一个由 Fedora 社区维护的,为 RHEL 系列系统提供额外软件包的仓库,Remi 仓库则依赖于 EPEL。sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm
启用所需的 PHP 模块
Remi 仓库允许您轻松切换不同的 PHP 版本,查看可用的 PHP 模块流:yum module list php -y
假设我们选择安装 PHP 8.1,可以使用以下命令启用该版本:
sudo yum module enable php:remi-8.1 -y
安装 PHP 及常用扩展
安装 PHP-FPM(FastCGI 进程管理器,用于与 Nginx 通信)以及一些常用的扩展,这些扩展能满足绝大多数 Web 应用的需求,如数据库连接、图像处理、XML 处理等。sudo yum install php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json -y
下表列出了上述扩展的主要用途:
扩展包名 | 主要用途 |
---|---|
php-fpm | FastCGI 进程管理器,连接 Nginx 和 PHP 的桥梁 |
php-mysqlnd | 用于连接 MySQL/MariaDB 数据库的原生驱动 |
php-gd | 用于图像处理(如缩略图生成、水印添加) |
php-xml | 用于解析和生成 XML 数据 |
php-mbstring | 用于处理多字节字符串(如中文) |
php-json | 用于 JSON 数据的编码和解码 |
配置 Nginx 与 PHP-FPM 协同工作
安装完成后,需要配置 Nginx,使其能够将 .php
文件的请求正确地传递给 PHP-FPM 处理。
启动并启用 PHP-FPM
sudo systemctl start php-fpm sudo systemctl enable php-fpm
修改 Nginx 配置
Nginx 的默认配置文件位于/etc/nginx/nginx.conf
,而站点配置通常放在/etc/nginx/conf.d/
目录下,我们编辑默认的配置文件:sudo vi /etc/nginx/conf.d/default.conf
找到
location ~ .php$
这一段,并确保其配置如下所示(如果被注释,请取消注释):location ~ .php$ { root /usr/share/nginx/html; fastcgi_pass unix:/run/php-fpm/www.sock; # 使用 socket 连接,性能更佳 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
注意:
fastcgi_pass
的值需要与 PHP-FPM 的配置文件(/etc/php-fpm.d/www.conf
)中的listen
指令保持一致,默认情况下,它们都配置为使用unix:/run/php-fpm/www.sock
。重启 Nginx
保存配置文件后,重启 Nginx 使更改生效:sudo systemctl restart nginx
测试 PHP 环境
为了验证整个环境是否配置成功,我们可以创建一个 PHP 信息文件。
在 Nginx 的网站根目录(通常是/usr/share/nginx/html/
)下创建一个新文件:sudo vi /usr/share/nginx/html/info.php
在文件中输入以下内容:
<?php phpinfo(); ?>
访问测试页面
在浏览器中访问http://your_server_ip/info.php
,如果一切正常,您将看到一个详细的 PHP 配置信息页面,其中包含了 PHP 版本、已安装的扩展、服务器变量等所有信息。安全提示:测试完成后,请务必删除此文件,因为它会暴露服务器的敏感信息。
sudo rm /usr/share/nginx/html/info.php
至此,您已经成功在 CentOS 服务器上搭建了一个由 Nginx 和 PHP-FPM 构成的、功能完善的 PHP 运行环境。
相关问答FAQs
为什么推荐使用 Remi 仓库而不是 CentOS 默认仓库安装 PHP?
解答:CentOS 官方仓库的首要目标是稳定,因此其提供的软件包版本通常比较保守,往往滞后于上游软件的最新版本,使用 Remi 仓库的主要优势在于:
- 版本更新:Remi 仓库会及时跟进 PHP 的发布周期,提供最新的稳定版本(如 PHP 8.0, 8.1, 8.2 等),让您能使用新特性、性能优化和安全修复。
- 版本灵活性:您可以轻松地在同一系统上安装和切换多个 PHP 版本,这对于需要维护不同旧项目的开发者来说非常方便。
- 扩展齐全:Remi 仓库提供了几乎所有主流的 PHP 扩展,无需手动编译安装,大大简化了环境搭建过程。
Nginx 和 Apache 在搭建 PHP 环境时有什么主要区别?
解答:两者都能很好地与 PHP 协同工作,但其底层机制和性能表现有所不同:
- 处理方式:Apache 传统上通过
mod_php
模块将 PHP 作为其自身进程的一部分来处理,配置简单,一体化程度高,而 Nginx 本身不解析 PHP,它作为反向代理,将 PHP 请求通过 FastCGI 协议(通常是 PHP-FPM)转发给一个独立的 PHP 服务进程来处理。 - 性能与资源:在高并发场景下,Nginx + PHP-FPM 的模型通常表现更优,Nginx 以其事件驱动、非阻塞的架构著称,能高效处理大量静态文件和并发连接,而 PHP-FPM 可以独立管理进程池,资源控制更精细,Apache 的
mod_php
模式在并发请求增多时,可能会因进程/线程开销过大而导致性能下降。 - 配置复杂度:对于初学者而言,Apache 的配置可能更直观,尤其是在
.htaccess
文件的支持上,Nginx 的配置则更为灵活和强大,但需要理解其location
块和代理规则,学习曲线稍陡一些。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复