CentOS 8、RockyLinux8 及 RHEL 8 默认提供的 Nginx 版本为:Nginx 1.14.1;默认提供的 PHP、PHP-fpm 版本为: 7.2.24;特殊情况下,需要更高本版本支持。EPEL 库提供了 Nginx 1.20版本;REMI 库提供了PHP 8.0、PHP 8.1 等最新版本的支持,这篇文章将引导你安装这些高本版。

默认 Nginx 信息:

默认 PHP 信息:

EPEL 存储库概述

  EPEL的全称叫 Extra Packages for Enterprise Linux ; EPEL 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目;并且 EPEL 则为服务器版本提供大量的rpm包,而且大多数rpm包在官方 repository 中是找不到的;这里的绝大多数rpm包要比官方repository 的rpm包版本要来得新。

CentOS 8 / RHEL 8 中使用 REMI

在 CentOS 8 / RHEL 8 中可以直接使用 dnf 方式配置 EPEL,如下:

1
dnf install -y epel-release

安装后确认安装是否成功:

1
dnf repolist

使用 EPEL 中的软件包

查找最新的 NGinx 软件包:

1
dnf module list nginx

安装 Nginx 1.20 版本:

1
dnf module install nginx:1.20/common

<size=“5”>dnf module 语法 点击查看: DNF ( Dandified-YUM ) 必知必会

REMI 存储库概述

  REMI 是由 Remi Collect 创建和维护的免费存储库,其主要目标是面向 Fedora 和 Enterprise Linux(RHEL、CentOS、Oracle、Scientific Linux)用户提供全功能的最新版本的 PHP 技术栈软件,以及其他一些软件包。

CentOS 8 / RHEL 8 中使用 REMI

在 CentOS 8 / RHEL 8 中可以直接使用 dnf 方式配置 REMI,如下:

1
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

安装后确认安装是否成功:

1
dnf repolist

使用 REMI 中的软件包

查找最新 PHP 软件包:

1
dnf module list php

输出将显示所有可用模块的列表,包括关联的流、版本和安装配置文件,如下图所示:

1
dnf search php-fpm

安装特定版本 PHP

1
dnf install php80-php-fpm

状态信息:

安装后使之生效

  按照以上步骤安装后,你赶快把 <?php phpinfo(); ?> 写入到 /usr/share/nginx/html 中写入 index.php 文件,然后,兴高采烈开启了 Nginx systemctl start nginx 与 php80-php-fpm systemctl start php80-php-fpm后,慌忙打开浏览器,结果 可能会让你失望,并没有出现 php 的各种信息页面,而是下载了 index.php 文件保存了。 why?

为什么没有生效

首先我们比较一下默认安装和 高版本安装的区别:

默认安装的 Nginx 与 PHP-fpm 版本:

我们从上面方法安装的高版本的 Nginx 与 PHP-fpm 版本:

比较发现:

  默认安装后,PHP-fpm 会向 Nginx 的配置目录 /etc/nginx/conf.d/ 写入文件 php-fpm.conf;向 Nginx 的配置目录 /etc/nginx/default.d/ 写入 php.conf 文件,而这两个配置文件配置了 Nginx 如何与 PHP-fpm 进行 ICP 通讯的。php-fpm.conf 与 php.conf 文件内容如下:

  设置完相关的Nginx的PHP-fpm配置后,重启运行仍然不行,但排错会发现:

经过仔细分析文件 /etc/opt/remi/php80/php-fpm.d/www.conf 定位到 55 行观察 “listen.acl_users” 参数,这里只有 Apache 而没有我们使用的 Nginx,所以,当 Nginx 进程访问www.sock文件时候出现权限错误,加Nginx 如下,添加分隔符为逗号:

添加前:

添加后:

重启 php80-php-fpm 进程后,访问成功: