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 ...

È 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:

  • PHP usa FastCGI Process Manager (FPM) per impostazione predefinita (sicuro per l'uso con un threadedhttpd)
  • Le variabili php_valuee php-flagle variabili non dovrebbero più essere usate nei file di httpdconfigurazione, ma dovrebbero essere impostate nella configurazione del pool: /etc/php-fpm.d/*.conf
  • PHP e 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 PHPmax_execution_time, l'httpd ProxyTimeoutimpostazione 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 estensioni mysqlie pdo_mysqlle estensioni sono ancora disponibili, fornite a php-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 Fixnume Bignumle classi sono state unificate nella Integerclasse.
  • Le prestazioni sono state migliorate ottimizzando la Hashclasse, migliorando l'accesso alle variabili di istanza e la Mutexclasse è sempre più piccola e veloce.
  • Alcune vecchie API sono state deprecate.
  • Le librerie in bundle, come RubyGems, Rake, , , RDoc, , Psych, , Minitest, e test-unit, sono state aggiornate.
  • Altre librerie, come mathn, DL, , , ext/tk, , e XMLRPC, che in precedenza erano distribuite con Ruby, sono deprecate o non più incluse.
  • Lo schema di SemVerversioning è ora utilizzato per la Rubyversioning.

(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 le loaded-file SystemTapsonde 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 accedere perl -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 su 0.
  • 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, e pstructgli strumenti sono stati rimossi.
  • La ${^ENCODING}struttura è stata rimossa. La modalità predefinita del encodingpragma non è più supportata. Per scrivere il codice sorgente in una codifica diversa da UTF-8, utilizzare l'Filteropzione di codifica.
  • L'perlimballaggio è ora allineato con quello a monte. Il perlpacchetto installa anche i moduli principali, mentre l'/usr/bin/perlinterprete è fornito dal perl-interpreterpacchetto. Nelle versioni precedenti, il perlpacchetto comprendeva solo un interprete minimo, mentre il perl-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 del httpdmodulo.
  • 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, una mod_sslconfigurazione può ora utilizzare PKCS#11URL per identificare la chiave privata TLS e, facoltativamente, il certificato TLS nelle SSLCertificateFiledirettive SSLCertificateKeyFilee 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 pagina httpd.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 del MySQLserver e mysqlddi molti programmi client.
  • MariaDB 10.3un server di database SQL multi-utente e multi-threaded. Per tutti gli scopi pratici, MariaDBè binario compatibile con MySQL.
  • PostgreSQL 10 ePostgreSQL 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:

  • MySQL incorpora ora un dizionario dei dati transazionali, che memorizza informazioni sugli oggetti del database.
  • MySQL ora supporta i ruoli, che sono raccolte di privilegi.
  • Il set di caratteri predefinito è stato cambiato da latin1a utf8mb4.
  • È stato aggiunto il supporto per le espressioni comuni delle tabelle, sia non recursive che recursive.
  • MySQL supporta ora le funzioni della finestra, che eseguono un calcolo per ogni riga di una query, utilizzando le righe correlate.
  • InnoDB supporta ora le istruzioni di lettura NOWAITe SKIP 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 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.

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

(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 di MariaDB.
  • InnoDB è usato come motore di archiviazione predefinito invece di XtraDB.
  • Espressioni comuni delle tabelle
  • Tavoli con versione di sistema
  • FOR circuiti
  • Colonne invisibili
  • Sequenze
  • Istantanea ADD COLUMNper InnoDB
  • 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)