4.7. Linguaggi di programmazione dinamici, server web e database (traduzione automatica)
Python 3 è l'implementazione predefinita Pythonin RHEL 8
Red Hat Enterprise Linux 8 è distribuito con Python 3.6. Il pacchetto non è installato di default. Per installarePython 3.6, utilizzare il yum install python3comando.
Python 2.7 è disponibile nella python2confezione. Tuttavia, Python 2avrà un ciclo di vita più breve e il suo scopo è quello di facilitare una transizione più agevole Python 3per i clienti.
Con RHEL 8 non vengono distribuiti né il pacchetto predefinito pythonné l'/usr/bin/pythoneseguibile non modificato. I clienti sono invitati a utilizzare python3o python2direttamente. In alternativa, gli amministratori possono configurare il comando unversioned pythonusando il alternativescomando.
Per i dettagli, vedere Using Python in Red Hat Enterprise Linux 8.
(BZ#1580387)
Gli script Python devono specificare la versione principale negli hashbangs al momento della compilazione di RPM
In RHEL 8, gli script eseguibili Python devono utilizzare hashbangs (shebangs) specificando esplicitamente almeno la versione principale di Python.
Lo script /usr/lib/rpm/redhat/brp-mangle-shebangsbuildroot policy (BRP) viene eseguito automaticamente quando si costruisce un qualsiasi pacchetto RPM. Questo script tenta di correggere gli hashbang in tutti i file eseguibili. Quando lo script incontra hashbang ambigui che non possono essere risolti con una versione maggiore di Python, genera errori. Esempi di questi hashbang ambigui sono:
-
#! /usr/bin/python -
#! /usr/bin/env python
Per modificare gli hashbangs negli script Python che causano questi errori di compilazione al momento della compilazione di RPM, utilizzare lo pathfix.pyscript del pacchetto platform-python-devel:
pathfix.py -pn -i %{__python3} PATH ...
pathfix.py -pn -i %{__python3} PATH ...
È possibile specificare più PATH. Se un PATH è una directory, verifica pathfix.pyricorsivamente la presenza di qualsiasi script Python che corrisponda allo schema^[a-zA-Z0-9_]+\.py$, non solo quelli con un hashbang ambiguo. Aggiungere questo comando alla %prepsezione o alla fine della %installsezione.
Per ulteriori informazioni, vedere Handling hashbangs in Python scripts.
(BZ#1583620)
Notevoli cambiamenti in PHP
Red Hat Enterprise Linux 8 è distribuito con PHP 7.2. Questa versione introduce le seguenti importanti modifichePHP 5.4, disponibili in RHEL 7:
-
PHPusa FastCGI Process Manager (FPM) per impostazione predefinita (sicuro per l'uso con un threadedhttpd) -
Le variabili
php_valueephp-flagle variabili non dovrebbero più essere usate nei file dihttpdconfigurazione, ma dovrebbero essere impostate nella configurazione del pool:/etc/php-fpm.d/*.conf -
PHPe gli errori di script e gli avvisi vengono registrati nel/var/log/php-fpm/www-error.logfile invece che nel file/var/log/httpd/error.log -
Quando si cambia la variabile di configurazione di PHP
max_execution_time, l'httpdProxyTimeoutimpostazione dovrebbe essere aumentata per corrispondere a -
L'utente che esegue
PHPgli script è ora configurato nella configurazione del pool FPM (il/etc/php-fpm/d/www.conffile; l'apacheutente è quello predefinito) -
Il
php-fpmservizio deve essere riavviato dopo una modifica della configurazione o dopo l'installazione di una nuova estensione
Le seguenti estensioni sono state rimosse:
-
aspell -
mysql(notare che le estensionimysqliepdo_mysqlle estensioni sono ancora disponibili, fornite aphp-mysqlndpacchetto) -
zip -
memcache
(BZ#1580430, BZ#1691688)
Notevoli cambiamenti in Ruby
RHEL 8 fornisceRuby 2.5, che introduce numerose nuove caratteristiche e miglioramenti rispetto Ruby 2.0.0a quelli disponibili in RHEL 7. Notevoli cambiamenti includono:
- È stato aggiunto il sistema di raccolta incrementale dei rifiuti.
-
La
Refinementssintassi è stata aggiunta. - I simboli sono ora raccolti nella spazzatura.
-
I
$SAFE=2livelli di$SAFE=3sicurezza sono ormai obsoleti. -
Le classi
FixnumeBignumle classi sono state unificate nellaIntegerclasse. -
Le prestazioni sono state migliorate ottimizzando la
Hashclasse, migliorando l'accesso alle variabili di istanza e laMutexclasse è sempre più piccola e veloce. - Alcune vecchie API sono state deprecate.
-
Le librerie in bundle, come
RubyGems,Rake, , ,RDoc, ,Psych, ,Minitest, etest-unit, sono state aggiornate. -
Altre librerie, come
mathn,DL, , ,ext/tk, , eXMLRPC, che in precedenza erano distribuite conRuby, sono deprecate o non più incluse. -
Lo schema di
SemVerversioning è ora utilizzato per laRubyversioning.
(BZ#1648843)
Notevoli cambiamenti in Perl
Perl 5.26distribuito con RHEL 8, introduce le seguenti modifiche rispetto alla versione disponibile in RHEL 7:
-
Unicode 9.0è ora supportato. -
Nuovi
op-entry,loading-file, , e leloaded-fileSystemTapsonde sono forniti. - Il meccanismo di copia in scrittura viene utilizzato quando si assegnano gli scalari per migliorare le prestazioni.
-
E' stato aggiunto il
IO::Socket::IPmodulo per la gestione trasparente delle prese IPv4 e IPv6. -
E' stato aggiunto il
Config::Perl::Vmodulo per accedereperl -Vai dati in modo strutturato. -
È stato aggiunto un nuovo
perl-App-cpanminuspacchetto che contiene l'cpanmutilità per ottenere, estrarre, costruire e installare moduli dal repository Comprehensive Perl Archive Network (CPAN). -
La directory
.corrente è stata rimossa dal percorso di ricerca del@INCmodulo per motivi di sicurezza. -
L'
doistruzione ora restituisce un avviso di deprecazione quando non riesce a caricare un file a causa del cambiamento comportamentale descritto sopra. -
La
do subroutine(LIST)chiamata non è più supportata e comporta un errore di sintassi. -
Gli hash sono randomizzati per impostazione predefinita. L'ordine in cui le chiavi e i valori restituiti da un hash cambia ad ogni
perlesecuzione. Per disabilitare la randomizzazione, impostare la variabile d'PERL_PERTURB_KEYSambiente su0. -
Non sono più ammessi caratteri letterali
{non scappati nei modelli di espressione regolare. -
Il supporto del campo di applicazione lessicale per la
$_variabile è stato rimosso. -
L'utilizzo dell'
definedoperatore su una matrice o un hash si traduce in un errore fatale. -
L'importazione di funzioni dal
UNIVERSALmodulo provoca un errore fatale. -
I tasti
find2perl,s2p, , ,a2p, , ,c2ph, epstructgli strumenti sono stati rimossi. -
La
${^ENCODING}struttura è stata rimossa. La modalità predefinita delencodingpragma non è più supportata. Per scrivere il codice sorgente in una codifica diversa daUTF-8, utilizzare l'Filteropzione di codifica. -
L'
perlimballaggio è ora allineato con quello a monte. Ilperlpacchetto installa anche i moduli principali, mentre l'/usr/bin/perlinterprete è fornito dalperl-interpreterpacchetto. Nelle versioni precedenti, ilperlpacchetto comprendeva solo un interprete minimo, mentre ilperl-corepacchetto comprendeva sia l'interprete che i moduli principali.
(BZ#1511131)
Node.js nuovo in RHEL 8
Node.jsPer la prima volta in RHEL viene fornita una piattaforma di sviluppo software per la realizzazione di applicazioni di rete veloci e scalabili nel linguaggio di programmazione JavaScript. In precedenza era disponibile solo come raccolta di software. RHEL 8 fornisce Node.js 10.
(BZ#1622118)
Notevoli cambiamenti in SWIG
RHEL 8 include la versione 3.0 di Simplified Wrapper and Interface Generator (SWIG), che fornisce numerose nuove funzionalità, miglioramenti e correzioni di bug rispetto alla versione 2.0 distribuita in RHEL 7. In particolare, è stato attuato lo standard C+++11. SWIG ora supporta anche Go 1.6, PHP 7. Ottava 4.2, e Pitone 3.5.
(BZ#1660051)
Notevoli cambiamenti in Apache httpd
RHEL 8 è distribuito con il server HTTP Apache 2.4.37. Questa versione introduce le seguenti modifiche httpddisponibili in RHEL 7:
-
Il supporto HTTP/2 è ora fornito dal
mod_http2pacchetto, che fa parte delhttpdmodulo. -
Il provisioning automatico dei certificati TLS e il rinnovo utilizzando il protocollo ACME (Automatic Certificate Management Environment) è ora supportato dal
mod_mdpacchetto (per l'utilizzo con fornitori di certificati come ad esempioLet’s Encrypt) -
Il server HTTP Apache supporta ora il caricamento di certificati TLS e chiavi private da token di sicurezza hardware direttamente dai
PKCS#11moduli. Come risultato, unamod_sslconfigurazione può ora utilizzarePKCS#11URL per identificare la chiave privata TLS e, facoltativamente, il certificato TLS nelleSSLCertificateFiledirettiveSSLCertificateKeyFilee direttive. -
Il modulo multi-processo (MPM) configurato di default con il server HTTP Apache è passato da un modello multi-processo, biforcuto (noto come
prefork) ad un modello multi-threaded ad alte prestazioni,event. Tutti i moduli di terze parti che non sono thread-safe devono essere sostituiti o rimossi. Per cambiare il MPM configurato, modificare il/etc/httpd/conf.modules.d/00-mpm.conffile. Per ulteriori informazioni, vedere la paginahttpd.conf(5)dedicata ai dipendenti.
Per ulteriori informazioni su httpd, vedere Setting up the Apache HTTP web server.
(BZ#1632754, BZ#1527084, BZ#1581178)
Il server nginxweb nuovo in RHEL 8
RHEL 8 introduce nginx 1.14un server web e proxy che supporta l'HTTP e altri protocolli, con particolare attenzione all'alta concorrenza, alle prestazioni e al basso consumo di memoria. nginxera precedentemente disponibile solo come Software Collection.
Il server nginxweb ora supporta il caricamento di chiavi private TLS da token di sicurezza hardware direttamente dai PKCS#11moduli. Come risultato, una nginxconfigurazione può utilizzare PKCS#11URL per identificare la chiave privata TLS nella ssl_certificate_keydirettiva.
(BZ#1545526)
Server di database in RHEL 8
RHEL 8 fornisce i seguenti server di database:
-
MySQL 8.0un server di database SQL multi-utente e multi-threaded. Si compone del demone delMySQLserver emysqlddi molti programmi client. -
MariaDB 10.3un server di database SQL multi-utente e multi-threaded. Per tutti gli scopi pratici,MariaDBè binario compatibile conMySQL. -
PostgreSQL 10ePostgreSQL 9.6, un sistema avanzato di gestione di database oggetti-relazionale (DBMS). -
Redis 5un negozio avanzato di chiavi-valore. Viene spesso indicato come server di struttura dati perché le chiavi possono contenere stringhe, hash, liste, set, set e set ordinati.Redis
Notare che il server di database NoSQL MongoDBnon è incluso in RHEL 8.0 perché utilizza la Server Side Public License (SSPL).
(BZ#1647908)
Notevoli cambiamenti in MySQL 8.0
RHEL 8 è distribuito con MySQL 8.0, che prevede, ad esempio, i seguenti miglioramenti:
-
MySQLincorpora ora un dizionario dei dati transazionali, che memorizza informazioni sugli oggetti del database. -
MySQLora supporta i ruoli, che sono raccolte di privilegi. -
Il set di caratteri predefinito è stato cambiato da
latin1autf8mb4. - È stato aggiunto il supporto per le espressioni comuni delle tabelle, sia non recursive che recursive.
-
MySQLsupporta ora le funzioni della finestra, che eseguono un calcolo per ogni riga di una query, utilizzando le righe correlate. -
InnoDBsupporta ora le istruzioni di letturaNOWAITeSKIP LOCKEDle opzioni con le istruzioni di blocco. - Sono state migliorate le funzioni relative ai GIS.
- La funzionalità JSON è stata migliorata.
-
I nuovi
mariadb-connector-cpacchetti forniscono una comune libreria client perMySQLeMariaDB. Questa libreria è utilizzabile con qualsiasi versione del serverMySQLe delMariaDBdatabase. Come risultato, l'utente è in grado di collegare una build di un'applicazione a uno qualsiasi deiMySQLMariaDBserver distribuiti con RHEL 8.
Inoltre, il MySQL 8.0server distribuito con RHEL 8 è configurato per l'utilizzo mysql_native_passwordcome plug-in di autenticazione predefinito perché gli strumenti client e le librerie in RHEL 8 sono incompatibili con il caching_sha2_passwordmetodo, che viene utilizzato di default nella versione upstreamMySQL 8.0.
Per modificare il plug-in di autenticazione predefinito in caching_sha2_password, modificare il /etc/my.cnf.d/mysql-default-authentication-plugin.cnffile come segue:
[mysqld] default_authentication_plugin=caching_sha2_password
[mysqld]
default_authentication_plugin=caching_sha2_password
(BZ#1649891, BZ#1519450, BZ#1631400)
Notevoli cambiamenti in MariaDB 10.3
MariaDB 10.3 fornisce numerose novità rispetto alla versione 5.5 distribuita in RHEL 7. Alcuni dei cambiamenti più importanti sono:
-
MariaDB Galera Cluster, un cluster sincrono multi-master, è ora una parte standard diMariaDB. -
InnoDBè usato come motore di archiviazione predefinito invece diXtraDB. - Espressioni comuni delle tabelle
- Tavoli con versione di sistema
-
FORcircuiti - Colonne invisibili
- Sequenze
-
Istantanea
ADD COLUMNperInnoDB - Compressione della colonna indipendente dal motore di stoccaggio
- Replicazione parallela
- Replicazione multi-fonte
Inoltre, i nuovi mariadb-connector-cpacchetti forniscono una comune libreria client per MySQLe MariaDB. Questa libreria è utilizzabile con qualsiasi versione del server MySQLe del MariaDBdatabase. Come risultato, l'utente è in grado di collegare una build di un'applicazione a uno qualsiasi dei MySQLMariaDBserver distribuiti con RHEL 8.
Vedi anche Using MariaDB on Red Hat Enterprise Linux 8.
(BZ#1637034, BZ#1519450)