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 PromisesAPI 提供了一组替代的计时器功能,用于返回Promise对象。 -
Node.js现在与OpenSSL 3.0兼容。 -
Node.js现在提供一个新的实验性Web StreamsAPI 和实验性 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程序的结构。rbsgem 已被添加来解析使用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。 -
qrquote-like 运算符已被改进。 -
POSIX::mblen(),mbtowc, 和wctomb功能现在可以在转换状态区域上工作,在 C99 上执行 thread-safe on C99,在具有 locale thread-safety 的平台上执行,长度参数现在是可选的。 -
新的实验性
isainfix 操作符用于测试一个给定的对象是一个给定类的实例,还是从其中衍生出来的类。 - 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输出禁用了systemctlpager。 -
现在,如果您传递了附加参数,则
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)