Due anni fa ho pubblicato una serie di articoli sulla creazione di un server web basato su Debian 8 e sul lancio del servizio Nextcloud 11. Dopo alcuni mesi è stato rilasciato un aggiornamento contenente informazioni "differenziali" sull'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 della fine del 2019 è stato molto più interessante e meritava di essere documentato.

Questo articolo sarà particolarmente utile per coloro che, seguendo le istruzioni delle quattro articoli precedenti, si sono "costruiti" Nextcloud 13 su Debian 9 (un saluto ai miei dieci follower sul tema Nextcloud, in particolare a coloro per cui è stata la prima esperienza nel mondo Linux). A chi intende creare il servizio da zero, consiglio di basarsi sui primi quattro articoli di questa serie, tenendo presente le versioni attuali di Debian 10 e Nextcloud 17. Per gli utenti esperti di Linux, questo articolo può situarsi da "triviale e inutile" a "non male, un promemoria tutto-in-uno".
Indice
Navigazione rapida nella sezione
Prefazione
Inizialmente volevo installare e configurare Nginx su Debian 10, ed installare senza problemi l'ultima versione di Nextcloud 17. Ma non sono riuscito a trovare il tempo per farlo, quindi questo articolo è una serie di istruzioni per aggiornare Nextcloud da 13 all'ultima versione 17, con la preparazione preliminare del server web.
Innanzitutto, è importante spiegare perché sono stati necessari cambiamenti radicali sul server web. Il nostro server è basato su Debian 9, attuale e supportato. Si potrebbe semplicemente aggiornare il sistema operativo e tutti i componenti del server web riceverebbero almeno gli aggiornamenti di sicurezza. Tutto 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 scadenza". A partire dalla versione 15, Nextcloud richiederà la conversione del database in big int per supportare la codifica a quattro byte e con MariaDB 10.1 sarà piuttosto problematico. Nextcloud 17 richiede PHP 7.1-7.3, mentre Debian 9 nei suoi repository nativi contiene solo la versione 7.0. Sarebbe stato più corretto, in termini di affidabilità e prevedibilità, aggiornarsi all'ultima versione prima di Nextcloud, ma in pochi anni mi sono così fidato dell'affidabilità di questo servizio che volevo aggiornarmi all'ultima versione e ristrutturare il server web con una visione futura. Pertanto, per l'aggiornamento a Nextcloud 17, è ottimale aggiornare MariaDB all'attuale versione stabile 10.4 e PHP a 7.2. Proprio 7.2, non l'ultima 7.4. Questo perché Nextcloud 13 richiede PHP 5.6, 7.0-7.2, e per Nextcloud 17 è richiesto PHP 7.1-7.3. Utilizzare PHP 7.2 è comodo per ridurre al minimo le azioni di aggiornamento. Non sarà necessario aggiornare il server Apache — basta installare gli aggiornamenti di sicurezza resi disponibili dal team di supporto Debian. Tuttavia, per gli aggiornamenti di MariaDB e PHP sarà necessario collegare repository esterni.
Quando ho iniziato a conoscere Nextcloud, lo aggiornavo "manualmente": tramite console, con un comando speciale il sito veniva messo in modalità manutenzione, il pacchetto della nuova versione veniva scaricato e decompresso, i file venivano aggiornati e veniva avviata la procedura di aggiornamento. Questo tipo di aggiornamento portava solitamente ai risultati attesi, anche se non mi ero mai dimenticato di fare un backup del sito, del database e dei dati degli utenti. Tuttavia, gli aggiornamenti automatici talvolta portavano a sorprese inaspettate. Ma questo è stato un po' di tempo fa, la stabilità del motore è aumentata notevolmente da allora e questa volta ho eseguito gli aggiornamenti esclusivamente tramite l'interfaccia web. Tuttavia, non sono riuscito a evitare completamente la riga di comando. Durante ogni aggiornamento iterativo a una nuova versione, nel pannello di controllo appariranno vari avvisi e notifiche che dovranno essere "rimossi" eseguendo ponderatamente i comandi nella riga di comando. Potresti anche non farlo — il servizio funzionerà comunque. Anche se questo approccio è fondamentalmente errato, ho fatto funzionare Nextcloud in questo modo per 3 mesi prima di affrontare deliberatamente le questioni emerse.
Aggiornamento di Debian
Arrestiamo il server web:
# service apache2 stop
E procediamo con l'aggiornamento:
# apt-get update
# apt-get dist-upgrade
Dopo l'aggiornamento, è possibile controllare la versione del sistema operativo e effettuare un riavvio di controllo per assicurarsi che tutto funzioni correttamente 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
Rimuovendo la vecchia versione di PHP 7.0, verrà rimosso anche phpmyadmin, poiché elimineremo i «tracce» dei pacchetti rimossi utilizzando autoremove. Questo non comporterà particolari difficoltà, poiché non sono state effettuate configurazioni speciali per phpmyadmin e reinstallarlo non presenterà alcun 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
[ è stato scritto appositamente per il sito dall'autore .
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'è , dove è necessario specificare il proprio sistema operativo, la sua versione e scegliere la versione del database. Dopo la scelta, verrà generato il 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 intatti tutti i database. Tuttavia, è consigliabile effettuare 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 sarà possibile configurarla seguendo :
# 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 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 premendo il pulsante «Apri finestra di aggiornamento». Dopo l'inizio, Nextcloud esegue un backup, scarica e controlla l'integrità dei file di aggiornamento, attiva la modalità di manutenzione e aggiorna i file. Successivamente, verrà posta la domanda «Tenere attiva la modalità di manutenzione»? Qui bisogna prestare attenzione. Una risposta positiva lascerà il sito in modalità di manutenzione — si presume che l'amministratore sappia cosa fare dopo e lo faccia manualmente. In caso contrario, Nextcloud farà tutto da solo, quindi per continuare facciamo clic sul pulsante «No».
Gli aggiornamenti vengono eseguiti in modo iterativo. Inizialmente, Nextcloud 13.x verrà aggiornato all'ultima versione del ramo 14.x. Successivamente, sarà necessario tornare al centro di amministrazione e avviare l'aggiornamento da 14.x a 15.x. E così via, finché non si raggiunge l'ultima versione disponibile. Dopo ogni aggiornamento, nella pagina «Impostazioni generali» della sezione amministrativa, verrà visualizzato un elenco di suggerimenti e problemi riscontrati, nonché raccomandazioni su come risolverli. Di seguito verrà discusso cosa sarà necessario fare dopo ogni aggiornamento.
Prima dell'aggiornamento
Nelle ultime versioni di Nextcloud, si consiglia di abilitare PHP OPcache per migliorare le prestazioni. È strano che questo aspetto mi sia sfuggito qualche anno fa, dato che OPcache è apparso già in PHP 5. Nel "/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
opcache.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
Prepara il database nextcloud per l'abilitazione della codifica a quattro byte:
# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit
Abilitiamo 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 mancanti:
# 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 mancanti:
# 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
Non sono richieste ulteriori azioni.
Epifania
Questa istruzione è stata utilizzata per aggiornare una macchina virtuale con Nextcloud 13. L'uso di una macchina virtuale consente di non eseguire backup dei file di Nextcloud e del suo database, poiché in caso di problemi è sufficiente ripristinare un file di macchina virtuale precedentemente salvato e ricominciare tutto da capo. Tuttavia, ciò non riguarda la cartella con i dati degli utenti, che consiglio di eseguire backup insieme alla macchina virtuale di Nextcloud. Nel mio caso, il «cloud» è utilizzato come cartella remota con versioning automatico, con direzione di sincronizzazione «solo verso di lì», e la perdita di questi dati non sarebbe stata critica — avrei semplicemente impiegato alcune ore a rifare la sincronizzazione. Nonostante la mia negligenza nei confronti della regola di vita «fai un backup per ogni evenienza», l'aggiornamento è avvenuto senza problemi e tutti i client hanno ripreso a funzionare senza intoppi su Nextcloud 17. Sono colpito, Frank Karlitschke — tu e il tuo team state facendo un ottimo lavoro!
Dopo l'aggiornamento, ho deciso di pulire i dati utente che, a giudicare dalle statistiche, occupavano quasi due terabyte. Non avevo mai avuto così tanti dati operativi: la maggior parte dello spazio era occupata da file di versioni e file eliminati. Il problema che ho incontrato era che per un utente i dati eliminati erano così tanti (non tanto per il volume, ma per il numero — moltissimi file di piccole dimensioni) che Nextcloud non riusciva a visualizzarli nell'interfaccia web. Dopo aver studiato la guida per l'amministrazione, ho trovato una soluzione tramite la riga di comando. Forse potrebbe tornare utile a qualcuno.
Per la pulizia dei file eliminati dell'utente user:
# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user
Per la pulizia dei file di versioni dell'utente user:
# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup userTorna .
Storia della creazione del 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 delle modifiche1.1.1 [15-01-2020]
Correzione di refusi.
1.1.0 [15-01-2020]
Corretto il codice di preparazione del database Nextcloud per l'inclusione della codifica a quattro byte.
1.0.0 [15-01-2020]
Prima versione.
Fonte: habr.com
