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)