本教程适用于以下操作系统版本

  • CentOS 8
  • CentOS 7.6
  • CentOS 7
  • CentOS 6.4
  • CentOS 6.3
  • CentOS 6.2

本页内容

  • 先决条件
  • 开始之前
  • 安装 Nginx Web 服务器
  • 安装 PHP 和 PHP-FPM
  • 为 Nginx 创建索引页
  • 配置 Nginx 以使用 PHP-FPM
  • 测试 Nginx 的 PHP-FPM 支持
  • 总结

Nginx 是一款免费、开源且全球最强大的 Web 服务器之一。它主要用于高负载和高流量的网站。Nginx 以稳定性、配置简单和资源消耗低而著称。你可以将 Nginx 用作 Web 服务器和反向代理。

FPM 是 FastCGI Process Manager(FastCGI 进程管理器)的缩写,是 PHP 的一种替代 FastCGI 实现,用于高流量网站。它通常与 Web 服务器配合使用来提供 PHP 页面。与其他运行 PHP 的方式相比,PHP-FPM 占用的内存和 CPU 更少。在多用户 PHP 环境中,PHP-FPM 比传统的基于 CGI 的方法更快。PHP-FPM 还允许同时运行多个版本的 PHP。

本教程将教我们如何在 CentOS 8 上安装支持 PHP-FPM 的 Nginx。

先决条件

  • 一台运行 CentOS 8 的服务器。
  • 服务器上已配置 root 密码。

开始之前

默认情况下,CentOS 8 服务器中启用了 SELinux。因此你需要先将其禁用。

你可以通过编辑 /etc/selinux/config 文件来实现:

nano /etc/selinux/config

进行如下修改:

SELINUX=disabled

保存并关闭文件。然后重启服务器使更改生效。

安装 Nginx Web 服务器

首先,使用以下命令安装 Nginx Web 服务器:

yum install nginx -y

Nginx 安装完成后,使用以下命令启动 Nginx 服务并设置为开机自启:

systemctl start nginx
systemctl enable nginx

完成后,你可以进入下一步。

安装 PHP 和 PHP-FPM

接下来,运行以下命令安装 PHP 和 PHP-FPM:

yum install php php-cli php-common php-fpm -y

所有软件包安装完成后,启动 PHP-FPM 服务并设置为系统重启后自动启动:

systemctl start php-fpm
systemctl enable php-fpm

你还可以使用以下命令查看 PHP-FPM 服务的状态:

systemctl status php-fpm

你应该会看到如下输出:

? php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-17 05:39:11 EDT; 4min 40s ago
 Main PID: 1475 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 5060)
   Memory: 28.5M
   CGroup: /system.slice/php-fpm.service
           ??1475 php-fpm: master process (/etc/php-fpm.conf)
           ??1478 php-fpm: pool www
           ??1479 php-fpm: pool www
           ??1480 php-fpm: pool www
           ??1481 php-fpm: pool www
           ??1482 php-fpm: pool www

Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.

为 Nginx 创建索引页

接下来,你需要创建一个示例 info.php 页面,用于测试 Nginx 是否使用了 PHP-FPM。

你可以在 Nginx 默认文档根目录下创建 info.php,如下所示:

nano /var/www/html/info.php

添加以下行:

<?php
    phpinfo();
?>

完成后保存并关闭文件。

接下来,将 info.php 文件的所有权更改为 nginx:

chown -R nginx: /var/www/html/info.php/

配置 Nginx 以使用 PHP-FPM

接下来,你需要创建一个 Nginx 虚拟主机配置文件并启用 PHP-FPM 支持。

你可以使用以下命令创建该文件:

nano /etc/nginx/conf.d/example.conf

添加以下行:

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

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

保存并关闭文件。然后,使用以下命令检查 Nginx 是否存在语法错误:

nginx -t

接下来,启用 Nginx 虚拟主机文件并重启 Nginx 服务以应用配置:

systemctl restart nginx

测试 Nginx 的 PHP-FPM 支持

现在,打开你的 Web 浏览器并输入 URL http://example.com 。你将跳转到如下页面:

在 CentOS 8 上安装配置 Nginx + PHP-FPM(LEMP 栈)

在 CentOS 8 上安装配置 Nginx + PHP-FPM(LEMP 栈)

在上述页面中,你应该能看到 PHP-FPM 已随 Nginx Web 服务器一同加载。

总结

恭喜!你已成功在 CentOS 8 服务器上安装了支持 PHP-FPM 的 Nginx。现在你可以使用 PHP-FPM 来托管多个使用不同 PHP 版本的网站。