游乐游手机版
首页/编程语言/文章详情

Ubuntu系统下PHP-FPM与Nginx协同配置教程

时间:2026-08-16 16:58
Ubuntu上Nginx处理静态文件,PHP-FPM解析PHP脚本。配置:安装两者,修改www conf启用socket监听并设用户组www-data,再改Nginx站点配置转发 php至该socket,重启服务即可验证。

想要在 Ubuntu 服务器上搭建一套高性能的 PHP 运行环境?Nginx 搭配 PHP-FPM 一直是 Linux Web 环境中非常成熟且常见的经典组合。两者协同工作时,Nginx 主要负责处理静态资源请求,而 PHP-FPM 专门执行 PHP 脚本,职责清晰,性能表现也更出色。下面就一步一步讲清楚 Ubuntu 下 Nginx 与 PHP-FPM 的配置方法,帮助你快速完成部署。

Ubuntu PHP-FPM与Nginx如何协同

第一步:安装Nginx和PHP-FPM

在 Ubuntu 上安装 Nginx 和 PHP-FPM,其实只需要执行一组命令。建议先更新软件源,再直接安装相关软件包:

sudo apt-get update
sudo apt-get install nginx php-fpm

安装完成后,Nginx 和 PHP-FPM 服务通常会自动启动。不过此时它们还没有真正完成联动,还需要继续进行对接配置。

第二步:配置PHP-FPM

PHP-FPM 的默认配置文件路径通常位于/etc/php/7.x/fpm/pool.d/www.conf(注意将7.x替换为你当前安装的 PHP 版本,例如 7.4、8.1 或 8.2)。打开该文件后,先找到下面这一行:

;listen = /run/php/php7.x-fpm.sock

这一行前面带有分号,说明当前处于注释状态。你需要取消注释,也就是删除分号,并将其中的版本号改为实际使用的 PHP 版本。这样配置后,PHP-FPM 会通过 Unix socket 文件监听请求,而不是使用 TCP 端口。通常这种方式在本机通信时性能更高,同时也更安全。

接着继续向下查找类似下面的两行配置:

;listen.owner = www-data
;listen.group = www-data

同样需要取消注释,并将用户和用户组都设置为www-data。这是 Ubuntu 中 Nginx 默认常用的运行账户。完成这一步后,Nginx 才能具备访问和使用该 socket 文件的权限。修改完成后记得保存并退出配置文件。

第三步:配置Nginx

Nginx 的站点配置文件通常位于/etc/nginx/sites-a vailable/default。打开该文件后,在server块中找到location ~ \.php$这一段。默认配置下,这部分可能并未完整启用,你可以将其调整为如下内容:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.x-fpm.sock;
}

这里需要特别注意,fastcgi_pass后面的 socket 路径必须和前面 PHP-FPM 配置文件中listen指定的路径完全一致,版本号也要对应正确。这一步的核心作用,就是告诉 Nginx:当用户请求 .php 文件时,不由 Nginx 自己解析,而是转交给 PHP-FPM 处理。

第四步:重启服务,让配置生效

完成 Nginx 和 PHP-FPM 配置后,需要重启对应服务,才能让新的设置正式生效:

sudo systemctl restart nginx
sudo systemctl restart php7.x-fpm

同样,别忘了将7.x替换成你实际安装的 PHP 版本。服务重启完成后,就可以进行测试了——你可以新建一个phpinfo.php文件,放到 Nginx 网站根目录中,然后通过浏览器访问该文件。如果页面能够正常显示 PHP 信息,就说明 Ubuntu 下的 Nginx 与 PHP-FPM 已经成功协同工作。

当这套 Nginx + PHP-FPM 环境搭建完成后,后续部署和管理 PHP 网站会更加高效。静态文件由 Nginx 直接响应,动态 PHP 请求交由 FPM 进程池处理,不仅结构清晰,也更利于提升网站性能和并发处理能力。如果后续你还想进一步优化 PHP 性能,例如调整 PHP-FPM 子进程数量、优化进程池参数,也可以继续在这个www.conf文件中进行设置。不过在此之前,先把基础环境稳定配置好,才是最关键的一步。

来源:https://www.yisu.com/ask/93209975.html
上一篇Python操作RabbitMQ消息队列入门与实战指南 下一篇Ubuntu环境下Node.js容器化部署实战指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Python应用打包与部署入门教程:核心概念、操作步骤与结果验证
编程语言 · 2026-10-01

Python应用打包与部署入门教程:核心概念、操作步骤与结果验证

从 Python 应用打包的基本概念入手,介绍项目环境准备、依赖管理、构建发布包、安装部署以及运行结果验证,并梳理常见打包失败与部署问题,帮助初学者完成从源码到可部署应用的完整流程。

Python CLI 开发避坑指南:从环境配置到参数解析的实战排查
编程语言 · 2026-10-01

Python CLI 开发避坑指南:从环境配置到参数解析的实战排查

本文聚焦 Python 命令行工具(CLI)开发中最高频的故障点,按执行链路梳理从环境配置、参数解析、路径处理到异常调试的完整排查流程。通过具体代码示例与终端输出对照,提供可复现的修复方案,帮助开发者快速定位 ModuleNotFoundError、参数校验失败及跨平台兼容性问题,构建更健壮的命令行

Python CLI 开发:从参数解析到工程化发布的完整路径
编程语言 · 2026-10-01

Python CLI 开发:从参数解析到工程化发布的完整路径

本文以 Python 命令行工具开发为切入点,从项目结构搭建与虚拟环境配置入手,深入讲解 argparse 参数解析与子命令设计。通过一个完整的日志分析工具案例,演示输入校验、错误处理与异常捕获的最佳实践,最后覆盖打包发布流程与常见排查技巧,帮助开发者构建健壮、易用的 CLI 应用。

Python 模块与包的工程化实践:结构、依赖与排错指南
编程语言 · 2026-10-01

Python 模块与包的工程化实践:结构、依赖与排错指南

本文从项目目录规范与模块导入机制切入,详细阐述虚拟环境的配置、第三方包的管理策略以及完整案例的模块化拆分方法。通过具体代码示例展示如何构建高内聚低耦合的代码结构,并针对 ModuleNotFoundError、ImportError 及依赖冲突等常见工程问题提供系统化的排查与解决方案,帮助开发者建立

Python 函数参数与返回值:从环境搭建到实战避坑
编程语言 · 2026-10-01

Python 函数参数与返回值:从环境搭建到实战避坑

本文从搭建 Python 运行环境入手,详细解析函数定义、参数传递机制及返回值处理。通过电商订单计算的完整案例,展示如何模块化组织业务逻辑,并针对参数数量、作用域及返回值缺失等常见错误提供排查方案,帮助开发者写出健壮且可维护的代码。