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)