如何通过 PHP-FPM 配置 Nginx 与 PHP 协同工作

1.安装 Nginx

Ubuntu / Debian

1
sudo apt install nginx

CentOS / AlmaLinux / Rocky Linux

Extra Packages for Enterprise Linux (EPEL)

1
sudo yum install epel-release
1
sudo yum install nginx

Fedora

1
sudo dnf install nginx

2.安装 PHP-FPM

Ubuntu / Debian

1
sudo apt install php-fpm

CentOS

CentOS 7

1
2
3
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php74
sudo yum install php php-fpm

CentOS 8

1
2
3
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum-config-manager --enable remi-php74
sudo yum install php php-fpm

3. 配置 Nginx 通过 PH-FPM 执行 PHP

创建 nginx 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo vim /etc/nginx/sites-available/example.com
````

编辑内容:

```shell
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm;
server_name example.com;

location / {
try_files $uri $uri/ =404;
}

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

保存后,创建软连接到 /etc/nginx/sites-enabled:

1
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com 

确保 fastcgi_pass 定义的 PHP socket 文件名是正确的,例子中是 php7.4-fpm.sock,

1
ls -l /var/run/php/

类似如下的内容:

1
2
3
4
total 4
-rw-r--r-- 1 root root 5 Dec 1 17:43 php7.4-fpm.pid
srw-rw---- 1 www-data www-data 0 Dec 1 17:43 php7.4-fpm.sock
lrwxrwxrwx 1 root root 30 Dec 1 17:43 php-fpm.sock -> /etc/alternatives/php-fpm.sock

如果不一致,按自己实际修改即可。

重启 Nginx 服务:

1
sudo systemctl restart nginx.service

4. 测试配置

上述设置中,站点文件根目录 /var/www/html, 创建测试文件:

1
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

测试访问 http://ip/info.php.

参考:

https://linuxiac.com/how-to-configure-nginx-to-work-with-php-via-php-fpm/

https://linuxiac.com/install-and-configure-nginx/