Storia della creazione di un cloud domestico. Parte 5. Aggiornamento 2019 – PHP 7.2, MariaDB 10.4 e Nextcloud 17

Due anni fa ho pubblicato un ciclo di articoli sulla creazione di un server web basato su Debian 8 e sull'avvio del servizio Nextcloud 11. Dopo alcuni mesi, è stato rilasciato un aggiornamento che conteneva informazioni "differenziali" per l'installazione di Nextcloud 13 su Debian 9. Alla fine del 2018 ho semplicemente aggiornato Debian e Nextcloud e non ho riscontrato problemi particolari o interessanti. L'aggiornamento alla fine del 2019 è stato decisamente più interessante e meritava di essere documentato.

Storia della creazione di un cloud domestico. Parte 5. Aggiornamento 2019 – PHP 7.2, MariaDB 10.4 e Nextcloud 17

Questo articolo sarà utile principalmente a coloro che, seguendo le istruzioni dei precedenti quattro articoli, hanno "costruito" il proprio Nextcloud 13 su Debian 9 (saluto i miei dieci lettori interessati a Nextcloud, in particolare coloro per cui è stata la prima esperienza nel mondo Linux). A chi intende avviare il servizio da zero consiglio di utilizzare come base i primi quattro articoli di questo ciclo, tenendo presente le versioni attuali di Debian 10 e Nextcloud 17. Per gli utenti esperti di Linux, l'articolo potrà occupare un posto intermedio tra "triviale e inutile" e "non male, un riassunto tutto in un posto".

Indice

Parte 1. Configurazione dell'ambiente Debian per l'uso quotidiano
Parte 2. Creazione del server - configurazione LAMP su Debian
Parte 3. Creazione di un cloud personale - installazione e configurazione di Nextcloud
Parte 4. Aggiornamento 2018 - Debian 9 e Nextcloud 13
Parte 5. Aggiornamento 2019 - PHP 7.2, MariaDB 10.4 e Nextcloud 17

Navigazione rapida nel capitolo

Introduzione
Aggiornamento di Debian
Aggiornamento di PHP alla versione 7.2
Aggiornamento di MariaDB alla versione 10.4
Aggiornamento di Nextcloud alla versione 17
Postfazione

Introduzione

Inizialmente volevo installare e configurare Nginx su Debian 10, sopra il quale sarebbe stato facile installare l'attuale Nextcloud 17. Tuttavia, non sono riuscito a trovare il tempo necessario, quindi questo articolo è un insieme di istruzioni per aggiornare Nextcloud dalla versione 13 all'attuale versione 17, con una preparazione preliminare del server web.

Per iniziare, è necessario spiegare il motivo per cui sono stati richiesti cambiamenti radicali sul lato del server web. Il nostro server è basato su Debian 9, attuale e supportato. È possibile semplicemente aggiornare il sistema operativo e tutti i componenti del server web riceveranno almeno aggiornamenti di sicurezza. Sarebbe fantastico se continuassimo a utilizzare Nextcloud 13 o se ci aggiornassimo solo alla versione 14. Ma Nextcloud 13 non è più supportato e il supporto per la versione 14 è "in dirittura d'arrivo". A partire dalla versione 15, Nextcloud offrirà la possibilità di convertire il database in big int per supportare la codifica a quattro byte e con MariaDB 10.1 sarà piuttosto problematico farlo. Nextcloud 17 richiede PHP 7.1-7.3, mentre Debian 9 nelle sue repository ufficiali contiene solo la versione 7.0. Dal punto di vista della affidabilità e della prevedibilità, sarebbe più appropriato aggiornarsi alla penultima versione di Nextcloud, ma in un paio d'anni mi sono così convinto dell'affidabilità di questo servizio che desideravo aggiornarmi all'ultima versione e modernizzare il server web con uno sguardo al futuro. Pertanto, per aggiornare a Nextcloud 17, è ottimale aggiornare MariaDB all'attuale versione stabile 10.4 e PHP a 7.2. Proprio 7.2, e non l'attuale 7.4. Infatti, Nextcloud 13 richiede PHP 5.6, 7.0-7.2, mentre Nextcloud 17 richiede PHP 7.1-7.3. Utilizzare PHP 7.2 è conveniente per minimizzare le operazioni di aggiornamento. Non sarà necessario aggiornare il server Apache: è sufficiente installare gli aggiornamenti di sicurezza forniti dal team di supporto di Debian. Tuttavia, per gli aggiornamenti di MariaDB e PHP sarà necessario attivare repository esterni.

Quando ho iniziato a conoscere Nextcloud, lo aggiornavo "a mano": dalla console, con un comando speciale il sito veniva portato in modalità manutenzione, il pacchetto con la nuova versione veniva scaricato e scompattato manualmente, i file venivano aggiornati e veniva avviata la procedura di aggiornamento. Tale aggiornamento portava solitamente ai risultati attesi, anche se non mi sono mai tirato indietro dal fare un backup del sito, del database e dei dati utente. Tuttavia, gli aggiornamenti automatici a volte portavano a vari imprevisti. Ma questo era tempo fa, la stabilità del motore è molto aumentata da allora e questa volta ho effettuato gli aggiornamenti esclusivamente tramite interfaccia web. Anche se non sono riuscito a mettere da parte del tutto la linea di comando. Con l'aggiornamento iterativo, su ogni nuova versione, appariranno vari avvisi e notifiche nel pannello di controllo, che sarà necessario "eliminare", eseguendo le comandi nella console. Si potrebbe anche non farlo — il servizio funzionerà comunque. Anche se questo approccio è fondamentalmente sbagliato, il mio Nextcloud ha funzionato in questo modo per 3 mesi prima che io mi dedicassi seriamente a risolvere le domande sorte.

Aggiornamento Debain

Arrestiamo il server web:

# service apache2 stop


E ci aggiorniamo:

# apt-get update
# apt-get dist-upgrade


Dopo l'aggiornamento è possibile controllare la versione del OS e fare un riavvio di controllo, per assicurarsi che tutto parta normalmente dopo l'aggiornamento:

# cat /etc/debian_version
# reboot


Aggiornamento di PHP alla versione 7.2

Arrestiamo il server web:

# service apache2 stop


Aggiungiamo il certificato e le chiavi PPA, il repository PHP:

# apt install ca-certificates apt-transport-https
# wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
# echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list


Quando si rimuove la vecchia versione di PHP 7.0, verrà rimosso anche phpmyadmin, poiché puliremo le "tracce" dei pacchetti rimossi utilizzando autoremove. Questo non creerà particolari difficoltà, poiché non sono state effettuate impostazioni speciali per phpmyadmin e reinstallarlo non sarà un problema.

# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin


Installazione dei moduli necessari per Nextcloud 17:

# apt-get install php7.2-mysql php7.2-curl php7.2-xml php7.2-gd php7.2-json php7.2-mbstring php7.2-zip php7.2-intl
# apt-get install php-memcached php-apcu php-redis php-imagick


[ Questo testo è stato scritto appositamente per il sito habr.com dall'autore AlexanderS.
Il link alla fonte non è obbligatorio, ma è fortemente consigliato! ]

Controlliamo la versione di PHP, avviamo il server web e verifichiamo il funzionamento di Nextcloud:

# php -v
# service apache2 start


Aggiornamento di MariaDB alla versione 10.4

Sul sito del progetto c'è una pagina interessante, sulla quale è necessario specificare il proprio OS, il suo rilascio e scegliere la versione del database. Dopo la selezione verrà generato un codice per aggiungere il repository.

Arrestiamo il server web:

# service apache2 stop


Aggiungiamo il repository e aggiorniamo i pacchetti:

# apt-get install software-properties-common dirmngr
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
# add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirror.iweb.com/repo/10.4/debian stretch main'
# apt-get update


Durante l'installazione di MariaDB, il gestore pacchetti rimuoverà correttamente la versione precedente e installerà quella nuova, mantenendo intatte tutte le basi di dati. Tuttavia, è sempre consigliato fare un backup del database di Nextcloud.

Installiamo MariaDB e avviamo la procedura di aggiornamento:

# apt-get install mariadb-server
# mysql_upgrade u root -p


Dopo aver inserito la password, MariaDB si aggiornerà e potrà essere configurata seguendo le istruzioni della seconda parte:

# mysql_secure_installation


Avviamo il server web e verifichiamo il funzionamento di Nextcloud:

# service apache2 start


Aggiornamento di Nextcloud alla versione 17

Per avviare l'aggiornamento, è necessario autenticarsi nel servizio con un'account amministrativo, andare nelle impostazioni e aprire 'Impostazioni generali' nella sezione amministrativa. Nextcloud mostra la versione installata e la versione disponibile per l'aggiornamento, che può essere avviato premendo il pulsante 'Apri finestra di aggiornamento'. Dopo l'inizio, Nextcloud eseguirà un backup, scaricherà e verificherà l'integrità dei file di aggiornamento, attiverà la modalità di manutenzione e aggiornerà i file. Successivamente verrà chiesto 'Mantenere attiva la modalità di manutenzione'? È qui che bisogna essere attenti. Rispondendo positivamente, il sito rimarrà in modalità di manutenzione — si presume che l'amministratore sappia cosa fare dopo e lo farà manualmente. Altrimenti, Nextcloud procederà autonomamente, quindi per continuare premiamo il pulsante 'No'.

Gli aggiornamenti vengono eseguiti in modo iterativo. Innanzitutto, Nextcloud 13.x verrà aggiornato all'ultima versione della serie 14.x. Dopo di che, sarà necessario accedere di nuovo al centro di amministrazione e avviare l'aggiornamento, ora da 14.x a 15.x. E così via, fino a raggiungere l'ultima versione disponibile. Dopo ogni aggiornamento, nella pagina 'Impostazioni generali' della sezione amministrativa verrà visualizzato un elenco di suggerimenti e problemi riscontrati, oltre a raccomandazioni per la loro risoluzione. Di seguito, si parlerà di cosa sarà necessario fare dopo ogni aggiornamento.

Prima dell'aggiornamento

Nelle ultime versioni di Nextcloud, si consiglia di attivare PHP OPcache per migliorare le prestazioni. È strano che questo aspetto mi sia sfuggito qualche anno fa, dato che OPcache è stato introdotto già in PHP 5. In /etc/php/7.2/apache2/php.ini è necessario decommentare e modificare i seguenti parametri:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
pcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1


Aggiornamento 13.x -> 14.x

Ripristiniamo gli indici delle tabelle:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Aggiornamento 14.x -> 15.x

Prepariamo il database di nextcloud per abilitare la codifica a quattro byte:

# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit


Attiviamo il supporto per la codifica a quattro byte in Nextcloud:

# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"


Convertiamo le tabelle:

# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair


Ripristiniamo gli indici delle tabelle persi:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Convertiamo gli indici delle tabelle in bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


Aggiornamento 15.x -> 16.x

Ripristiniamo gli indici delle tabelle persi:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Convertiamo gli indici delle tabelle in bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


Aggiornamento 16.x -> 17.x

Nessuna azione aggiuntiva è necessaria.

Postfazione

Seguendo questa guida è stata aggiornata la macchina virtuale con Nextcloud 13. L'uso di una macchina virtuale elimina la necessità di eseguire backup dei file di Nextcloud e del suo database, poiché in caso di problemi si può semplicemente ripristinare un file della macchina virtuale precedentemente salvato e ricominciare da capo. Tuttavia, ciò non riguarda la cartella con i dati degli utenti, che consiglio di fare anche un backup insieme alla macchina virtuale con Nextcloud. Nel mio caso, il "cloud" è utilizzato come cartella remota con versioni automatiche, con la direzione di sincronizzazione "solo in quel senso", e la perdita di questi dati non sarebbe stata critica: mi sarei dovuto limitare a ricominciare la sincronizzazione per alcune ore. Nonostante la mia indifferenza verso la regola di vita consolidata "fai un backup per ogni evenienza", l'aggiornamento è andato senza problemi e tutti i client hanno funzionato correttamente con Nextcloud 17. Sono impressionato, Frank Karlitschek — tu e il tuo team state facendo un ottimo lavoro!

Dopo l'aggiornamento ho deciso di pulire i dati degli utenti, che, secondo le statistiche, occupavano quasi due terabyte. Non avevo tanti dati operativi: la maggior parte dello spazio era occupato da file di versioni e file rimossi. Il problema con cui mi sono scontrato era che per un utente c'erano così tanti dati rimossi (non tanto per la dimensione, ma proprio per il numero — un sacco di file piccoli) che Nextcloud non poteva visualizzarli nell'interfaccia web. Dopo aver consultato il manuale di amministrazione, ho trovato una soluzione tramite la riga di comando. Forse a qualcuno potrebbe tornare utile.

Per pulire i file rimossi dell'utente user:

# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user


Per pulire i file di versioni dell'utente user:

# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup user

Torna all'inizio, all'indice.

Storia della creazione di un cloud domestico. Parte 5. Aggiornamento 2019 – PHP 7.2, MariaDB 10.4 e Nextcloud 17
Versione del testo: 1.1.1.
Data della prima pubblicazione: 15.01.2020.
Data dell'ultima modifica: 15.01.2020.

Registro aggiornamenti1.1.1 [15-01-2020]
Correzione di errori di battitura.

1.1.0 [15-01-2020]
Corretto il codice di preparazione del database di nextcloud per abilitare la codifica a quattro byte.

1.0.0 [15-01-2020]
Prima versione.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster