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_value
和php-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
(请注意mysqli
和pdo_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
安全水平现已过时。 -
该
Fixnum
和Bignum
班级已经统一到了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证书SSLCertificateKeyFile
和SSLCertificateFile
指令。 -
默认情况下使用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 10
和PostgreSQL 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
现在支持角色,这是特权的集合。 -
默认字符集已更改
latin1
至utf8mb4
。 - 添加了对非递归和递归的公用表表达式的支持。
-
MySQL
现在支持窗口函数,它使用相关的行对查询中的每一行执行计算。 -
InnoDB
现在支持了NOWAIT
和SKIP LOCKED
锁定读取语句的选项。 - 与GIS相关的功能得到了改进。
- JSON功能已得到增强。
-
新的
mariadb-connector-c
包提供了一个通用的客户端库MySQL
和MariaDB
。该库可用于任何版本的MySQL
和MariaDB
数据库服务器因此,用户能够将应用程序的一个版本连接到任何一个MySQL
和MariaDB
与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
包提供了一个通用的客户端库 MySQL
和 MariaDB
。该库可用于任何版本的 MySQL
和 MariaDB
数据库服务器因此,用户能够将应用程序的一个版本连接到任何一个 MySQL
和 MariaDB
与RHEL 8一起分发的服务器。
也可以看看 Using MariaDB on Red Hat Enterprise Linux 8。
(BZ#1637034, BZ#1519450)
为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。