在 CentOS 8 / RHEL 8 上使用 DNF 及 DNF module 安装 Nginx 1.20 及 PHP8.0
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 进程后,访问成功: