Nginx-PHP-FPM部署指南
本指南基于GitHub开源项目 wyveo/nginx-php-fpm,旨在提供一个清晰明了的步骤来理解和部署这个集成了Nginx与PHP-FPM的环境。以下内容分为三个主要部分:项目目录结构介绍、启动文件解析以及配置文件详解。
1. 项目目录结构及介绍
假设您已克隆了此仓库到本地,其典型的目录结构可能如下所示:
nginx-php-fpm/
│
├── docker-compose.yml <- Docker Compose配置文件,用于容器化部署
├── nginx/
│ ├── conf.d/ <- Nginx的配置片段目录
│ │ └── example.conf <- 示例配置文件
│ ├── nginx.conf <- 主Nginx配置文件
│ └── ... <- 可能还有其他配置或默认文件
├── php/
│ ├── php.ini <- PHP的核心配置文件
│ ├── fpm-pool.d/ <- PHP-FPM池配置目录
│ │ └── www.conf <- 默认的PHP-FPM池配置
│ └── ... <- PHP相关配置或脚本
├── README.md <- 项目说明文档
└── ... <- 其他辅助文件或目录
- docker-compose.yml 提供了一个快速部署的方式,通过Docker容器来运行Nginx和PHP-FPM。
- nginx/ 目录包含了Nginx的所有配置文件,是Web服务器的核心配置所在。
- php/ 目录存储着PHP及其FPM的相关配置,包括核心配置
php.ini
和FPM池配置。
2. 项目的启动文件介绍
Docker启动方式
- docker-compose.yml: 使用Docker Compose启动服务时的关键文件。通过编辑此文件,您可以定制Nginx和PHP-FPM的容器行为,比如映射端口、挂载卷(共享宿主机与容器的数据)等。要启动项目,仅需执行
docker-compose up -d
命令即可在后台启动Nginx和PHP-FPM的服务。
传统服务启动
若项目不依赖于Docker,则启动过程涉及分别配置和启动Nginx与PHP-FPM服务。这通常涉及到系统的服务管理工具(如systemd或init.d),具体步骤如下:
- Nginx启动: 通常通过命令
sudo systemctl start nginx
或service nginx start
。 - PHP-FPM启动: 类似地,可能是
sudo systemctl start php-fpm
或service php-fpm start
,具体取决于系统的配置和服务名称。
3. 项目的配置文件介绍
Nginx配置文件 (nginx.conf
)
位于nginx/nginx.conf
,这是Nginx的主要配置入口,定义了HTTP服务器的基本行为,包括监听的端口、访问日志路径、错误日志级别以及最重要的服务器块(server blocks)配置,其中定义了如何处理HTTP请求,特别是如何将PHP请求代理给PHP-FPM。
PHP-FPM配置文件 (php/fpm-pool.d/www.conf
)
在PHP-FPM的上下文中,此配置文件定义了处理PHP脚本的池(pool)的行为。关键配置项包括监听地址(通常是socket或TCP端口)、用户与组(用于运行PHP进程的安全设置)、以及进程管理参数等。
- 用户与组:
user = www-data
和group = www-data
,确保PHP进程以安全的身份运行。 - 监听配置:比如
listen = /run/php/php7.4-fpm.sock
或者listen = 127.0.0.1:9000
,指定了Nginx和PHP-FPM通信的接口。
确保理解这些配置文件的内容,并按需调整,以便满足您的部署需求。每个项目的实际配置细节可能会有所不同,务必参考最新版本的文档和实际情况进行调整。