La 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 una serie di articoli sul tema della creazione di un server web basato su Debian 8 e dell'esecuzione su di esso del servizio Nextcloud 11. Alcuni mesi dopo è apparsa un'aggiunta contenente informazioni "differenziali" sull'installazione di Nextcloud 13 su Debian 9. Alla fine del 2018, ho appena aggiornato Debian e Nextcloud e non ho riscontrato problemi insoliti o interessanti. L'aggiornamento di fine 2019 era già più interessante e vale la pena parlarne.

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

Questo articolo sarà utile soprattutto a chi, secondo le istruzioni dei quattro articoli precedenti, ha “assemblato” Nextcloud 13 su Debian 9 (saluto circa una dozzina di miei abbonati sull'argomento Nextcloud, soprattutto a quelli per i quali questa era la loro prima esperienza nel mondo di Linux). Per coloro che intendono creare un servizio da zero, consiglio di prendere come base i primi quattro articoli di questa serie, adattati per le attuali versioni di Debian 10 e Nextcloud 17. Per gli utenti Linux esperti, l'articolo potrebbe richiedere del tempo posto tra "banale e inutile" e "cheat sheet tutto in uno, non male".

Sommario

Parte 1: Configurazione di un ambiente Debian per l'uso quotidiano
Parte 2: Creazione di un server - configurazione di 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 dei capitoli

prefazione
Aggiornamento Debian
Aggiornamento PHP alla versione 7.2
Aggiornamento di MariaDB alla versione 10.4
Aggiornamento di Nextcloud alla versione 17
postfazione

prefazione

Inizialmente volevo installare e configurare Nginx su Debian 10, sulla quale si poteva installare senza problemi l'attuale Nextcloud 17. Ma non sono riuscito a trovare il tempo per tutto questo, quindi questo articolo è un insieme di istruzioni per l'aggiornamento Nextcloud dalla versione 13 all'attuale versione 17 con predisposizione preliminare del web server.

Innanzitutto dobbiamo spiegare perché sono stati necessari cambiamenti radicali lato server web. Il nostro server si basa sull'attuale e supportata Debian 9. Puoi semplicemente aggiornare il sistema operativo e tutti i componenti del server web riceveranno almeno gli aggiornamenti di sicurezza. Sarebbe tutto fantastico se continuassimo a utilizzare Nextcloud 13 o aggiornassimo solo alla versione 14. Ma Nextcloud 13 non è più supportato e il supporto per la 14a versione sta per scomparire. A partire dalla versione 15, Nexctcloud offrirà la conversione del database in big int per supportare la codifica a quattro byte, e con MariaDB 10.1 questo sarà molto problematico. Nexctcloud 17 richiede PHP 7.1-7.3, mentre Debian 9 contiene solo la versione 7.0 nei suoi repository nativi. Sarebbe più corretto, in termini di affidabilità e prevedibilità, passare alla penultima versione di Nextcloud, ma dopo un paio d'anni sono diventato così sicuro dell'affidabilità di questo servizio che ho voluto passare all'ultima versione e aggiornare il server web con una riserva per il futuro. Pertanto, per aggiornare a Nexctcloud 17, è ottimale aggiornare MariaDB all'attuale versione stabile 10.4 e PHP alla 7.2. Esattamente 7.2, non l'attuale 7.4. Il fatto è che Nextcloud 13 richiede PHP 5.6, 7.0 - 7.2 e Nextcloud 17 richiede PHP 7.1 - 7.3. È conveniente utilizzare PHP 7.2 per ridurre al minimo gli sforzi di aggiornamento. Non è necessario aggiornare il tuo server Apache: basta installare gli aggiornamenti di sicurezza distribuiti dal team di supporto Debian. Ma per gli aggiornamenti di MariaDB e PHP dovrai connettere repository esterni.

Quando stavo appena conoscendo Nextcloud, l'ho aggiornato “a mano”: utilizzando un apposito comando dalla console, il sito è stato messo in modalità manutenzione, l'archivio con la nuova versione del sito è stato scaricato e decompresso manualmente, i file sono stati aggiornati ed è stata avviata la procedura di aggiornamento. Un aggiornamento del genere di solito portava ai risultati attesi, anche se non ero pigro nel fare una copia di backup del sito, del database e dei dati dell'utente. Ma gli aggiornamenti automatici a volte riservavano ogni sorta di sorprese. Ma è passato molto tempo, da allora la stabilità del motore è aumentata notevolmente e questa volta ho effettuato gli aggiornamenti esclusivamente tramite l'interfaccia web. È vero, non riuscivo ancora a staccarmi dalla riga di comando. Durante l'aggiornamento iterativo di ogni nuova versione, nel pannello di controllo verranno visualizzati vari avvisi e notifiche, che dovranno essere "rimossi" eseguendo in modo significativo i comandi sulla riga di comando. Non sei obbligato a farlo: il servizio continuerà a funzionare. Sebbene questo approccio sia fondamentalmente sbagliato, Nextcloud ha lavorato per me in questa modalità per 3 mesi prima che affrontassi intenzionalmente i problemi emersi.

Aggiornamento Debain

Arrestare il server web:

# service apache2 stop


E aggiorniamo:

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


Dopo l'aggiornamento, puoi controllare la versione del sistema operativo ed eseguire un riavvio di prova per assicurarti che tutto si avvii normalmente dopo l'aggiornamento:

# cat /etc/debian_version
# reboot


Aggiornamento PHP alla versione 7.2

Arrestare il server web:

# service apache2 stop


Aggiungi certificato e chiavi PPA, 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 elimina la vecchia versione di PHP 7.0, verrà eliminato anche phpmyadmin, poiché elimineremo le "tracce" dai pacchetti eliminati utilizzando autoremove. Ciò non causerà particolari difficoltà, poiché non sono state effettuate impostazioni speciali per phpmyadmin e installarlo nuovamente non presenterà alcun problema.

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


Installazione dei moduli richiesti 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 scritto appositamente per il sito habr.com l'autore Alexanders.
Il collegamento alla fonte è facoltativo, ma menzionarlo è altamente raccomandato! ]

Controlliamo la versione PHP, avviamo il server web e controlliamo la funzionalità di Nextcloud:

# php -v
# service apache2 start


Aggiornamento di MariaDB alla versione 10.4

Sul sito del progetto c'è pagina interessante, dove devi indicare il tuo sistema operativo, la sua versione e selezionare la versione del database. Una volta selezionato, verrà generato il codice per aggiungere il repository.

Arrestare il server web:

# service apache2 stop


Aggiungi un repository e aggiorna 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, mentre tutti i database verranno preservati. Tuttavia, è ovviamente consigliabile effettuare una copia di backup del database Nextcloud.

Installa MariaDB e avvia la procedura di aggiornamento:

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


Dopo aver inserito la password, MariaDB si aggiornerà e potrai configurarla seguendo istruzioni dalla seconda parte:

# mysql_secure_installation


Lanciamo il server web e controlliamo la funzionalità di Nextcloud:

# service apache2 start


Aggiornamento di Nextcloud alla versione 17

Per avviare l'aggiornamento, è necessario accedere al 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 facendo clic sul pulsante "Apri finestra di aggiornamento". Una volta avviato, Nextcloud esegue un backup, scarica e verifica l'integrità dei file di aggiornamento, attiva la modalità di manutenzione e aggiorna i file. Poi arriva la domanda "Mantieni attiva la modalità di manutenzione"? Devi stare attento qui. Una risposta positiva lascerà il sito in modalità manutenzione: si presume che l'amministratore sappia cosa fare dopo e lo farà manualmente. Altrimenti, Nextcloud farà tutto da solo, quindi fai clic sul pulsante “No” per continuare.

Gli aggiornamenti vengono eseguiti in modo iterativo. Innanzitutto, Nextcloud 13.x verrà aggiornato all'ultima versione del ramo 14.x. Successivamente, dovrai accedere nuovamente all'interfaccia di amministrazione e avviare l'aggiornamento, ora da 14.x a 15.x. E così via fino al raggiungimento dell'ultima versione attuale possibile. Dopo ogni aggiornamento, nella pagina “Impostazioni generali” della sezione amministrativa, verrà visualizzato un elenco di suggerimenti e problemi riscontrati, nonché consigli per risolverli. Di seguito parleremo di cosa è necessario fare dopo ogni aggiornamento.

Fino all'aggiornamento

Nelle ultime versioni di Nextcloud, si consiglia di abilitare PHP OPcache per migliorare le prestazioni. È strano che in qualche modo mi sia sfuggito questo punto un paio di anni fa, da quando OPcache è apparso in PHP 5. In /etc/php/7.2/apache2/php.ini devi rimuovere i commenti 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

Ripristino degli indici delle tabelle:

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


Aggiornamento 14.x -> 15.x

Prepariamo il database 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


Abilita 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"


Conversione delle tabelle:

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


Recupero degli indici delle tabelle perdute:

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


Converti gli indici delle tabelle in bigint:

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


Aggiornamento 15.x -> 16.x

Recupero degli indici delle tabelle perdute:

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


Converti gli indici delle tabelle in bigint:

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


Aggiornamento 16.x -> 17.x

Non è richiesta alcuna azione aggiuntiva.

postfazione

Seguendo queste istruzioni è stata aggiornata una macchina virtuale con Nextcloud 13. L'utilizzo di una macchina virtuale permette di non fare copie di backup dei file Nextcloud e del suo database, poiché in caso di problemi è sufficiente restituire il file della macchina virtuale precedentemente salvato e ricominciare tutto da capo Ancora. Questo però non vale per la cartella con i dati utente, di cui consiglio anche il backup insieme alla macchina virtuale con Nextcloud. Nel mio caso, il "cloud" viene utilizzato come cartella remota con controllo delle versioni automatico e con la direzione della sincronizzazione "solo lì", e la perdita di questi dati non è stata critica per me: avrei dovuto semplicemente rifare la sincronizzazione per diverse ore . Nonostante il mio disprezzo per la regola permanente del "salva per ogni evenienza", l'aggiornamento si è svolto senza problemi e tutti i client hanno iniziato a lavorare senza problemi con Nextcloud 17. Sono impressionato, Frank Karlitshek: tu e il tuo team state facendo un ottimo lavoro lavoro!

Dopo l'aggiornamento, ho deciso di cancellare i dati dell'utente che, a giudicare dalle statistiche, occupavano circa due terabyte. Non avevo molti dati operativi: la maggior parte del volume era occupata da file di versione e file eliminati. Il problema che ho riscontrato è che per un utente c'erano così tanti dati cancellati (non è nemmeno una questione di volume, ma di quantità: molti piccoli file) che Nextcloud non riusciva a visualizzarli nell'interfaccia web. Dopo aver studiato il manuale di amministrazione, ho trovato una soluzione tramite la riga di comando. Forse questo sarà utile a qualcuno.

Per cancellare i file utente eliminati:

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


Per cancellare i file della versione utente:

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

Ritornare all'inizio, al sommario.

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

Aggiorna registro1.1.1 [15-01-2020] Correzione di errori di battitura.

1.1.0 [15-01-2020] Risolto il problema con il codice di preparazione del database nexcloud per abilitare la codifica a quattro byte.

1.0.0 [15-01-2020] Prima versione.

Fonte: habr.com