4.13. 动态编程语言、网页和数据库服务器
RHEL 9 中的 Python
Python 3.9 是 RHEL 9 中的默认 Python 实现。Python 3.9 在 BaseOS 存储库中的非模块化 python3
RPM 软件包中分发,通常默认安装。Python 3.9 将支持 RHEL 9 的整个生命周期。
其他版本的 Python 3 将以 RPM 软件包的形式发布,并通过 AppStream 软件仓库提供较短的生命周期,并可并行安装。
python
命令(/usr/bin/python
)和其他 Python-related 命令(如 pip
)位于未指定版本的表单中,并指向默认的 Python 3.9 版本。
Python 2 不随 RHEL 9 提供。
有关 RHEL 9 中的 Python 的更多信息,请参阅 Python 简介。
(BZ#1941595, JIRA:RHELPLAN-80598)
Node.js 16
在 RHEL 9 中可用
RHEL 9 提供了一个 Long Term Support(LTS)版本 16 的 Node.js
,它是一个软件开发平台,用于使用 JavaScript 编程语言构建快速、可扩展的网络应用程序。
与 Node.js 14
相比,Node.js 16
中的显著变化包括:
-
V8
引擎已升级至版本 9.4。 -
npm
软件包管理器已升级至 8.3.1 版本。 -
新的
Timers Promises
API 提供了一组替代的计时器功能,用于返回Promise
对象。 -
Node.js
现在与OpenSSL 3.0
兼容。 -
Node.js
现在提供一个新的实验性Web Streams
API 和实验性 ECMAScript 模块(ESM)加载程序 hook API。
Node.js 16
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。Node.js 16
生命周期比 RHEL 9 的生命周期短。详情请查看 Red Hat Enterprise Linux 应用程序流生命周期 文档。其它 Node.js
版本将作为模块提供,其在将来的 RHEL 9 次要发行版中的生命周期也较短。
RHEL 9 提供 Ruby 3.0
RHEL 9 使用 Ruby 3.0.3
提供,它比 Ruby 2.7
提供了很多性能改进、程序错误和安全修复以及新功能。
主要改进包括:
并发和并行功能:
-
Ractor
作为一个提供线程安全并行执行的 Actor-model 抽象作为实验功能提供。 -
Fiber Scheduler
作为一种实验功能引进。Fiber Scheduler
截获阻塞操作,在不更改现有代码的情况下启用轻量级并发操作。
-
静态分析功能:
-
引进了
RBS
语言,它描述了Ruby
程序的结构。rbs
gem 已被添加来解析使用RBS
编写的类型定义。 -
引进了
TypeProf
实用工具,它是Ruby
代码的类型分析工具。
-
引进了
-
与
case/in
表达式的模式匹配不再是实验性。 - 多行模式匹配(一个实验功能)已被重新设计。
- find pattern 已被添加为实验功能。
改进的性能:
-
将长代码粘贴到
Interactive Ruby Shell(IRB)
的速度现在明显加快。 -
measure
命令已添加到IRB
中以进行测量。
其他显著变化包括:
- 关键字参数现在与其他参数分开。
-
用户安装的 gems 的默认目录现在是
$HOME/.local/share/gem/
,除非$HOME/.gem/
目录已存在。
Ruby 3.0
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。额外的 Ruby
版本将会作为模块提供,在以后的 RHEL 9 的次版本中会带有较短的生命周期。
(JIRA:RHELPLAN-80758)
RHEL 9 引入了 Perl 5.32
RHEL 9 包括 Perl 5.32
,它提供很多程序错误修复和增强 5.30。
主要改进包括:
-
Perl
现在支持 Unicode 版本 13.0。 -
qr
quote-like 运算符已被改进。 -
POSIX::mblen()
,mbtowc
, 和wctomb
功能现在可以在转换状态区域上工作,在 C99 上执行 thread-safe on C99,在具有 locale thread-safety 的平台上执行,长度参数现在是可选的。 -
新的实验性
isa
infix 操作符用于测试一个给定的对象是一个给定类的实例,还是从其中衍生出来的类。 - alpha assertions 不再是实验性。
- 脚本运行不再是实验性的。
- 功能检查现在可以更快。
-
现在,
Perl
可以在优化前转储编译的模式。
Perl 5.32
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。在以后的 RHEL 9 次版本中,会将额外的 Perl
版本作为模块提供,其生命周期会短。
(JIRA:RHELPLAN-80759)
RHEL 9 包括 PHP 8.0
RHEL 9 提供了 PHP 8.0
,与版本 7.4 相比,这个版本提供了多个程序错误修复和增强。
主要改进包括:
- 新的命名参数是独立于顺序且自我记录的参数,并可让您只指定所需的参数。
- 新的属性允许您将结构化元数据与 PHP 的原生语法搭配使用。
- 新的 union 类型可让您使用在运行时验证的原生 union 类型声明,而不是运行时验证的 PHPDoc 注解。
- 现在,如果参数验证失败,内部功能会更加一致地引发 Error 异常而不是警告。
- 新的 Just-In-Time 编译引擎可显著提高应用程序性能。
-
PHP 的
Xdebug
调试和生产力扩展已更新至版本 3。与Xdebug 2
相比,这个版本对功能和配置进行了重大更改。
PHP 8.0
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。在以后的 RHEL 9 次版本中,会将其他 PHP
版本作为模块提供更短的生命周期。
如需更多信息,请参阅使用 PHP 脚本语言。
RHEL 9 提供 Git 2.31
和 Git LFS 2.13
RHEL 9 提供了 Git 2.31
,它比 RHEL 8 中的版本 2.27 提供了很多改进和性能。主要变更包括:
-
git status
命令现在报告稀疏签出的状态。 -
现在,您可以将
--add-file
选项与git archive
命令一起使用,从树状标识符将未跟踪的文件包含在快照中。 -
您可以使用
clone.defaultremotename
配置变量自定义源远程存储库的 nickname。 -
您可以配置
git format-patch
命令创建的输出文件名的最大长度。在以前的版本中,长度限制为 64 字节。 - 删除了对已弃用的 PCRE1 库的支持。
另外,Git 大文件存储(LFS)
扩展版本 2.13 现已正式发布。RHEL 8 中发布的版本 2.11 的增强包括:
-
Git LFS
现在支持 SHA-256 软件仓库。 -
Git LFS
现在支持socks5h
协议。 -
git lfs install
和git lfs uninstall
命令提供了一个新的--worktree
选项。 -
git lfs migrate import
命令提供了一个新的--above
参数。
(BZ#1956345, BZ#1952517)
RHEL 9 中的 Subversion 1.14
RHEL 9 由 Subversion 1.14
提供。Subversion 1.14
是此应用程序流的初始版本,您可以将其作为 RPM 软件包轻松安装。在以后的 RHEL 9 次要发行本中,会将其他 Subversion
版本作为模块提供更短的生命周期。
(JIRA:RHELPLAN-82578)
Apache HTTP 服务器中的显著变化
RHEL 9.0 提供 Apache HTTP 服务器的版本 2.4.51。2.4.37 版本的显著变化包括:
Apache HTTP 服务器控制接口(
apachectl
):-
现在,
apachectl status
输出禁用了systemctl
pager。 -
现在,如果您传递了附加参数,则
apachectl
命令会失败,而不是发出警告。 -
apachectl graceful-stop
命令现在会立即返回。 -
apachectl configtest
命令现在在不更改 SELinux 上下文的情况下执行httpd -t
命令。 -
RHEL 中的
apachectl(8)
man page 现在完全指明了与上游apachectl
之间的差异。
-
现在,
Apache eXtenSion 工具(
pxs
):-
构建
httpd
软件包时,/usr/bin/apxs
命令不再使用或公开编译器选择的标志。现在,您可以使用/usr/lib64/httpd/build/vendor-apxs
命令应用与构建httpd
相同的编译器标志。要使用vendor-apxs
命令,您必须首先安装redhat-rpm-config
软件包。
-
构建
Apache 模块:
-
mod_lua
模块现在在一个单独的软件包中提供。 -
Apache HTTP 服务器的新
mod_jk
连接器是利用 Apache JServ 协议(AJP)将 Web 服务器与 Apache Tomcat 和其他后端连接的模块。 -
新的
mod_proxy_cluster
模块提供基于 httpd 的负载均衡器,它使用通信通道将请求从负载均衡器转发到一组应用服务器节点。应用程序服务器节点使用此连接来传输服务器端负载,通过一组称为 Mod-Cluster Management Protocol(MCMP)的 HTTP 方法将系和生命周期事件回发到负载均衡器。这种附加反馈通道允许mod_proxy_cluster
提供一定程度的智能和粒度,在其他负载平衡解决方案中未找到。此模块要求在后端服务器中安装ModCluster
客户端才能成功通信。
-
配置语法更改:
-
在由
mod_access_compat
模块提供的已弃用的Allow
指令中,注释(#
字符)现在会触发语法错误,而不是静默忽略。
-
在由
其他更改:
- 内核线程 ID 现在直接在错误信息中使用,从而使它们准确且更简洁。
- 多个小幅改进和漏洞修复。
- 模块作者可使用多个新接口。
从 RHEL 8 开始,httpd
模块 API 没有向后兼容的更改。
Apache HTTP Server 2.4 是此 Application Stream 的初始版本,您可以将其作为 RPM 软件包轻松安装。
如需更多信息,请参阅设置 Apache HTTP web 服务器。
(JIRA:RHELPLAN-68364, BZ#1931976, JIRA:RHELPLAN-80725)
RHEL 9 提供了 nginx 1.20
RHEL 9 包括 nginx 1.20
web 和代理服务器。与版本 1.18 相比,这个版本提供了很多程序错误修复、安全修复、新功能及改进。
新特性:
-
nginx
现在支持使用在线证书状态协议(OCSP)的客户端 SSL 证书验证。 -
nginx
现在支持基于最小可用空间量清除缓存。此支持作为proxy_cache_path
指令的min_free
参数实施。 -
添加了一个新的
ngx_stream_set_module
模块,它可让您为变量设置值。 -
添加了一个新的
nginx-mod-devel
软件包,它提供所有必要的文件,包括 RPM 宏和nginx
源代码,以便为nginx
构建外部动态模块。
增强的指令:
-
现在,可以使用多个新指令,如
ssl_conf_command
和ssl_reject_handshake
。 -
proxy_cookie_flags
指令现在支持变量。
改进了 HTTP/2:
-
ngx_http_v2
模块现在包含lingering_close
、lingering_time
、lingering_timeout
指令。 -
处理 HTTP/2 中的连接已与 HTTP/1.x 一致。从
nginx 1.20
中,使用keepalive_timeout
和keepalive_requests
指令,而不是移除的http2_recv_timeout
、http2_idle_timeout
和http2_max_requests
指令。
Nginx 1.20
是此 Application Stream 的初始版本,您可以将其作为 RPM 软件包轻松安装。额外的 nginx
版本将会作为模块提供,在以后的 RHEL 9 次版本中会带有较短的生命周期。
如需更多信息,请参阅设置和配置 NGINX。
RHEL 9 中的 Varnish Cache 6.6
RHEL 9 包括 Varnish Cache 6.6
,这是一个高性能 HTTP 反向代理。
自 6.0 版本开始的主要变化包括:
-
提高了日志处理工具的性能,如
varnishlog
- 改进了统计的准确性
- 在缓存查询中有多个优化
- 各种配置更改
- 修复了很多改进和程序错误修复
Varnish Cache 6
是此 Application Stream 的初始版本,您可以将其作为 RPM 软件包轻松安装。
RHEL 9 引入了 Squid 5
RHEL 9 通过 Squid 5.2
提供,这是一个用于 Web 客户端的高性能代理缓存服务器,支持 FTP、Gopher 和 HTTP 数据对象。与版本 4 相比,这个版本提供了很多程序错误修复、安全修复、新功能及改进。
新特性:
Squid
通过使用 Happy Eyeballs(HE)算法提高责任。-
Squid
现在会在很快请求转发时使用接收的 IP 地址,需要它而无需等待所有潜在的转发目的地完全解析。 -
可用的新指令包括:
happy_eyeballs_connect_gap
,happy_eyeballs_connect_limit
, 和happy_eyeballs_connect_timeout
指令。 -
dns_v4_first
指令已被删除。
-
-
Squid
现在在 Content Delivery Networks(CDN)中使用CDN-Loop
标头作为循环检测的来源。 -
Squid
引入了对 SSL bumping 的对等支持。 - 提供了新的互联网内容适配器协议(ICAP)尾随程序功能,它允许 ICAP 代理在邮件正文后可靠地发送消息元数据。
对配置选项的更改:
-
mark_client_packet
配置选项已替换了clientside_mark
。 -
shared_transient_entries_limit
配置选项已替换collapsed_forwarding_shared_entries_limit
。
Squid 5
是此 Application Stream 的初始版本,您可以将其作为 RPM 软件包轻松安装。
如需更多信息,请参阅配置 Squid 缓存代理服务器。
RHEL 9 中的 MariaDB 10.5
RHEL 9 提供 MariaDB 10.5
。MariaDB 10.5
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。在以后的 RHEL 9 次要发行本中,其他 MariaDB
版本将会作为模块提供较短的生命周期。
如需更多信息,请参阅使用 MariaDB。
RHEL 9 包括 MySQL 8.0
RHEL 9 提供 MySQL 8.0
。MySQL 8.0
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。MySQL 8.0
生命周期比 RHEL 9 的生命周期短。详情请查看 Red Hat Enterprise Linux 应用程序流生命周期 文档。
有关用法的详情,请参考 使用 MySQL。
(JIRA:RHELPLAN-78673)
RHEL 9 提供 PostgreSQL 13
RHEL 9 提供 PostgreSQL 13
。PostgreSQL 13
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。在以后的 RHEL 9 次要发行本中,其他 PostgreSQL
版本将会作为模块提供更短的生命周期。
如需更多信息,请参阅使用 PostgreSQL。
(JIRA:RHELPLAN-78675)
RHEL 9 中的 Redis 6.2
RHEL 9 由 Redis 6.2
提供,它比 RHEL 8 提供的 6.0 版本提供了很多程序错误和安全修复和增强。
值得注意的是,Red
Hatis 服务器配置文件现在位于专用目录中: /etc/redis/redis.conf
和 /etc/redis/sentinel.conf
。在 RHEL 8 版本中,这些文件的位置分别是 /etc/redis.conf
和 /etc/redis-sentinel.conf
。
Redis 6
是此 Application Stream 的初始版本,您可以轻松地作为 RPM 软件包安装。
新软件包:perl-Module-Signature
RHEL 9 引进了 perl-Module-Signature
Perl 模块。使用这个新模块,您可以为 cpan
启用签名检查来缓解 CVE-2020-16156。如需更多信息,请参阅如何在 perl-CPAN 中缓解 perl-App-cpanminus 和 CVE-2020-16156 中的 CVE-2020-16154。
(BZ#2039361)