4.7. 动态编程语言,Web和数据库服务器 (机器翻译版本)

Python 3 是默认值 Python 在RHEL 8中实现

Red Hat Enterprise Linux 8随附 Python 3.6。默认情况下不安装该程序包。安装 Python 3.6, , 使用 yum install python3 命令。

Python 2.7 可以在 python2 包。然而, Python 2 将有一个较短的生命周期,其目的是促进更顺利的过渡 Python 3 为客户。

既不是默认值 python 包装也没有无版本 /usr/bin/python 可执行文件随RHEL 8一起分发。建议客户使用 python3 要么 python2 直。或者,管理员可以配置未版本控制 python 命令使用 alternatives 命令。

有关详情,请参阅 Using Python in Red Hat Enterprise Linux 8

(BZ#1580387)

Python脚本必须在RPM构建时指定hashbang中的主要版本

在RHEL 8中,可执行的Python脚本应该使用hashbangs(shebangs)至少明确指定主要的Python版本。

/usr/lib/rpm/redhat/brp-mangle-shebangs 构建任何RPM包时会自动运行buildroot策略(BRP)脚本。此脚本尝试更正所有可执行文件中的hashbang。当脚本遇到无法解析为主要版本的Python的模糊hashbang时,会产生错误。这种模棱两可的hashbang的例子包括:

  • #! /usr/bin/python
  • #! /usr/bin/env python

要修改Python脚本中的hashbang,导致RPM构建时出现这些构建错误,请使用 pathfix.py 来自的脚本 平台的Python-devel的 包:

pathfix.py -pn -i %{__python3} PATH ...

路径s可以指定。如果一个 路径 是一个目录, pathfix.py 递归扫描与模式匹配的任何Python脚本 ^[a-zA-Z0-9_]+\.py$, ,不仅是那些含糊不清的人。将此命令添加到 %prep 部分或在结束时 %install 部分。

有关更多信息,请参阅 Handling hashbangs in Python scripts

(BZ#1583620)

值得注意的变化 PHP

Red Hat Enterprise Linux 8随附 PHP 7.2。此版本引入了以下主要更改 PHP 5.4, ,在RHEL 7中可用:

  • PHP 默认情况下使用FastCGI Process Manager(FPM)(安全使用带螺纹的 httpd
  • php_valuephp-flag 变量不应再用于 httpd 配置文件;它们应该在池配置中设置: /etc/php-fpm.d/*.conf
  • PHP 脚本错误和警告记录到 /var/log/php-fpm/www-error.log 文件而不是 /var/log/httpd/error.log
  • 更改PHP时 max_execution_time 配置变量, httpd ProxyTimeout 应增加设置以匹配
  • 用户正在运行 PHP 现在,在FPM池配置中配置了脚本( /etc/php-fpm/d/www.conf 文件;该 apache 用户是默认值)
  • php-fpm 配置更改后或安装新扩展后,需要重新启动服务

已删除以下扩展程序:

  • aspell
  • mysql (请注意 mysqlipdo_mysql 扩展仍然可用,由提供 php-mysqlnd 包)
  • zip
  • memcache

(BZ#1580430, BZ#1691688)

值得注意的变化 Ruby

RHEL 8提供 Ruby 2.5, ,它引入了许多新功能和增强功能 Ruby 2.0.0 可在RHEL 7中获得。值得注意的变化包括:

  • 增量垃圾收集器已添加。
  • Refinements 语法已添加。
  • 符号现在是垃圾收集。
  • $SAFE=2$SAFE=3 安全水平现已过时。
  • FixnumBignum 班级已经统一到了 Integer 类。
  • 通过优化,性能得到了提高 Hash class,改进了对实例变量的访问,以及 Mutex 班级越小越快。
  • 某些旧API已被弃用。
  • 捆绑的库,例如 RubyGems, ,Rake, ,RDoc, ,Psych, ,Minitest, ,和 test-unit, ,已经更新。
  • 其他图书馆,如 mathn, ,DL, ,ext/tk, ,和 XMLRPC, ,以前分发的 Ruby, ,已弃用或不再包括在内。
  • SemVer 版本控制方案现在用于 Ruby 版本。

(BZ#1648843)

值得注意的变化 Perl

Perl 5.26与RHEL 8一起分发,对RHEL 7中提供的版本进行了以下更改:

  • Unicode 9.0 现在支持。
  • op-entry, ,loading-file, ,和 loaded-file SystemTap 提供探针。
  • 在分配标量以提高性能时使用写时复制机制。
  • IO::Socket::IP 已添加透明处理IPv4和IPv6套接字的模块。
  • Config::Perl::V 模块访问 perl -V 已添加结构化数据。
  • 一个新的 perl-App-cpanminus 已添加包,其中包含 cpanm 用于从Comprehensive Perl Archive Network(CPAN)存储库获取,提取,构建和安装模块的实用程序。
  • 当前目录 . 已被删除 @INC 模块搜索路径出于安全原因。
  • do 语句现在在由于上述行为更改而无法加载文件时返回弃用警告。
  • do subroutine(LIST) 不再支持调用并导致语法错误。
  • 哈希现在默认是随机的。从哈希返回键和值的顺序在每个哈希上都会发生变化 perl 跑。要禁用随机化,请设置 PERL_PERTURB_KEYS 环境变量到 0
  • 未转义的文字 { 正则表达式模式中的字符不再允许。
  • 词汇范围支持 $_ 变量已被删除。
  • 使用 defined 数组或哈希上的运算符导致致命错误。
  • 从中导入函数 UNIVERSAL 模块导致致命错误。
  • find2perl, ,s2p, ,a2p, ,c2ph, ,和 pstruct 工具已被删除。
  • ${^ENCODING} 设施已被删除。该 encoding 不再支持pragma的默认模式。用其他编码编写源代码 UTF-8, ,使用编码 Filter 选项。
  • perl 包装现在与上游对齐。该 perl 包安装也是核心模块,而 /usr/bin/perl 口译员是由。提供的 perl-interpreter 包。在以前的版本中, perl 包中只包含一个最小的解释器,而 perl-core 包括解释器和核心模块。

(BZ#1511131)

Node.js RHEL 8中的新功能

Node.js,这是一个用于在JavaScript编程语言中构建快速,可扩展的网络应用程序的软件开发平台,这是RHEL首次提供的。它以前只能作为软件集合使用。RHEL 8提供 Node.js 10

(BZ#1622118)

SWIG的显着变化

RHEL 8包括简化的包装器和接口生成器(SWIG)3.0版,它提供了许多新功能,增强功能和错误修复,而不是RHEL 7中分发的2.0版本。最值得注意的是,支持C ++ 11标准已经实现。SWIG现在也支持Go 1.6,PHP 7。Octave 4.2和Python 3.5。

(BZ#1660051)

Apache的显着变化 httpd

RHEL 8随Apache HTTP Server 2.4.37一起分发。此版本引入了以下更改 httpd RHEL 7中提供:

  • 现在提供HTTP / 2支持 mod_http2 包,这是一部分 httpd 模块。
  • 现在支持使用自动证书管理环境(ACME)协议进行自动TLS证书配置和续订 mod_md 包(用于证书提供者,如 Let’s Encrypt
  • Apache HTTP Server现在支持直接从硬件安全令牌加载TLS证书和私钥 PKCS#11 模块。结果,一个 mod_ssl 配置现在可以使用 PKCS#11 用于标识TLS私钥的URL,以及可选的TLS证书 SSLCertificateKeyFileSSLCertificateFile 指令。
  • 默认情况下使用Apache HTTP Server配置的多处理模块(MPM)已从多进程分叉模型(称为 prefork)到一个高性能的多线程模型, event。任何非线程安全的第三方模块都需要更换或删除。要更改已配置的MPM,请编辑 /etc/httpd/conf.modules.d/00-mpm.conf 文件。见 httpd.conf(5) 手册页以获取更多信息。

有关的更多信息 httpd, ,见 Setting up the Apache HTTP web server

(BZ#1632754, BZ#1527084, BZ#1581178)

nginx RHEL 8中新增的Web服务器

RHEL 8介绍 nginx 1.14, ,支持HTTP和其他协议的Web和代理服务器,重点是高并发性,性能和低内存使用率。 nginx 以前只能作为软件集合使用。

nginx Web服务器现在支持直接从硬件安全令牌加载TLS私钥 PKCS#11 模块。结果,一个 nginx 配置可以使用 PKCS#11 用于标识TLS私钥的URL ssl_certificate_key 指示。

(BZ#1545526)

RHEL 8中的数据库服务器

RHEL 8提供以下数据库服务器:

  • MySQL 8.0,一个多用户,多线程的SQL数据库服务器。它由...组成 MySQL 服务器守护进程, mysqld, ,以及许多客户端程序。
  • MariaDB 10.3,一个多用户,多线程的SQL数据库服务器。出于所有实际目的, MariaDB 与二进制兼容 MySQL
  • PostgreSQL 10PostgreSQL 9.6, ,一种高级的对象 - 关系数据库管理系统(DBMS)。
  • Redis 5,一个先进的键值存储。它通常被称为数据结构服务器,因为键可以包含字符串,散列,列表,集和有序集。 Redis 在RHEL首次提供。

注意NoSQL MongoDB 数据库服务器未包含在RHEL 8.0中,因为它使用服务器端公共许可证(SSPL)。

(BZ#1647908)

值得注意的变化 MySQL 8.0

RHEL 8随附 MySQL 8.0, ,例如,它提供了以下增强功能:

  • MySQL 现在包含一个事务数据字典,它存储有关数据库对象的信息。
  • MySQL 现在支持角色,这是特权的集合。
  • 默认字符集已更改 latin1utf8mb4
  • 添加了对非递归和递归的公用表表达式的支持。
  • MySQL 现在支持窗口函数,它使用相关的行对查询中的每一行执行计算。
  • InnoDB 现在支持了 NOWAITSKIP LOCKED 锁定读取语句的选项。
  • 与GIS相关的功能得到了改进。
  • JSON功能已得到增强。
  • 新的 mariadb-connector-c 包提供了一个通用的客户端库 MySQLMariaDB。该库可用于任何版本的 MySQLMariaDB 数据库服务器因此,用户能够将应用程序的一个版本连接到任何一个 MySQLMariaDB 与RHEL 8一起分发的服务器。

除此之外 MySQL 8.0 与RHEL 8一起分发的服务器配置为使用 mysql_native_password 作为默认身份验证插件,因为RHEL 8中的客户端工具和库与 caching_sha2_password 方法,默认情况下在上游使用 MySQL 8.0 版。

要将默认身份验证插件更改为 caching_sha2_password, ,编辑 /etc/my.cnf.d/mysql-default-authentication-plugin.cnf 文件如下:

[mysqld]
default_authentication_plugin=caching_sha2_password

(BZ#1649891, BZ#1519450, BZ#1631400)

值得注意的变化 MariaDB 10.3

MariaDB 10.3 与RHEL 7中分发的5.5版相比,它提供了许多新功能。一些最显着的变化是:

  • MariaDB Galera Cluster,同步多主集群,现在是标准的一部分 MariaDB
  • InnoDB 用作默认存储引擎而不是 XtraDB
  • 公用表表达式
  • 系统版本的表
  • FOR 循环
  • 隐形列
  • 序列
  • 瞬间 ADD COLUMN 对于 InnoDB
  • 存储引擎独立列压缩
  • 并行复制
  • 多源复制

另外,新的 mariadb-connector-c 包提供了一个通用的客户端库 MySQLMariaDB。该库可用于任何版本的 MySQLMariaDB 数据库服务器因此,用户能够将应用程序的一个版本连接到任何一个 MySQLMariaDB 与RHEL 8一起分发的服务器。

也可以看看 Using MariaDB on Red Hat Enterprise Linux 8

(BZ#1637034, BZ#1519450)


为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。