Acum doi ani, am publicat un ciclu de articole despre crearea unui server web bazat pe Debian 8 și lansarea serviciului Nextcloud 11 pe acesta. După câteva luni, a apărut un supliment care conținea informații „diferențiate” despre instalarea Nextcloud 13 pe Debian 9. La sfârșitul anului 2018, am actualizat pur și simplu Debian și Nextcloud și nu m-am confruntat cu probleme neobișnuite sau interesante. Actualizarea de la sfârșitul anului 2019 a fost mult mai interesantă și despre aceasta merită să scriu.

Acest articol va fi în primul rând util celor care, conform instrucțiunilor din cele patru articole anterioare, și-au „construit” Nextcloud 13 pe Debian 9 (transmit salutări celor zece abonați ai mei pe tema Nextcloud, în special celor pentru care aceasta a fost prima experiență în lumea Linux). Pentru cei care intenționează să creeze un serviciu de la zero, recomand să se bazeze pe primele patru articole din acest ciclu, având în vedere versiunile actuale Debian 10 și Nextcloud 17. Pentru utilizatorii experimentați Linux, articolul poate ocupa un loc undeva între „trivial și inutil” și „bine, un ghid tot-în-unul”.
Cuprins
Navigare rapidă în capitol
Prefață
Inițial, am dorit să instalez și să configurez Nginx pe Debian 10, sub care s-ar instala fără probleme versiunea actuală Nextcloud 17. Dar pentru toate acestea nu am reușit să aleg timp, așa că acest articol reprezintă un set de instrucțiuni pentru actualizarea Nextcloud de la 13 la versiunea actuală 17, cu pregătirea prealabilă a serverului web.
Mai întâi, trebuie să explicăm de ce sunt necesare modificări radicale pe serverul web. Serverul nostru se bazează pe Debian 9, care este actualizat și suportat. Putem pur și simplu să actualizăm sistemul de operare și toate componentele serverului web vor primi cel puțin actualizări de securitate. Totul ar fi fost minunat dacă am folosi în continuare Nextcloud 13 sau ne-am fi actualizat doar la versiunea 14. Dar Nextcloud 13 nu mai este suportat, iar suportul pentru versiunea 14 este pe sfârșit. Începând cu versiunea 15, Nextcloud va oferi posibilitatea de a transforma baza de date în big int pentru a sprijini codificarea pe patru octeți, iar cu MariaDB 10.1, acest lucru va fi destul de problematic. Nextcloud 17 necesită PHP 7.1-7.3, în timp ce Debian 9 în repositoarele sale native conține doar versiunea 7.0. Cea mai corectă decizie, din punct de vedere al fiabilității și predictibilității, ar fi fost să ne actualizăm la penultima versiune Nextcloud, dar în ultimii câțiva ani am avut atât de multă încredere în fiabilitatea acestui serviciu, încât am vrut să fac upgrade la cea mai recentă versiune și să actualizez serverul web cu gândul la viitor. Așadar, pentru a face upgrade la Nextcloud 17, este optim să actualizăm MariaDB la cea mai recentă versiune stabilă 10.4 și PHP la 7.2. Anume 7.2, nu la actuala 7.4. Motivul este că Nextcloud 13 necesită PHP 5.6, 7.0 - 7.2, iar pentru Nextcloud 17 este necesar PHP 7.1 - 7.3. Utilizarea PHP 7.2 este convenabilă pentru a minimiza acțiunile de actualizare. Nu este necesară actualizarea serverului Apache - este suficient să instalăm actualizările de securitate furnizate de echipa de suport Debian. Dar pentru actualizările MariaDB și PHP trebuie să conectăm repositoare externe.
Când m-am familiarizat cu Nextcloud, îl actualizam manual: din consolă, cu o comandă specială, site-ul era pus în modul de întreținere, arhiva cu noua versiune era descărcată și dezarhivată manual, fișierele erau actualizate și se lansa procedura de actualizare. Această actualizare de obicei ducea la rezultatele așteptate, deși nu ezitam să fac o copie de rezervă a site-ului, bazei de date și datelor utilizatorilor. Însă actualizarea automată uneori aducea surprize. Dar asta a fost demult, stabilitatea motorului a crescut semnificativ de atunci și de data aceasta am realizat actualizările exclusiv prin interfața web. Totuși, nu am reușit să evit complet linia de comandă. La fiecare actualizare iterativă, în panoul de control vor apărea diferite avertizări și notificări care vor trebui „îndepărtate”, executând comenzi în linia de comandă. Acest lucru ar putea fi evitat — serviciul va funcționa oricum. Deși această abordare este fundamental greșită, Nextcloud a funcționat în acest mod timp de 3 luni înainte de a mă ocupa intenționat de întrebările apărute.
Actualizarea Debian
Oprind serverul web:
# service apache2 stop
Și ne actualizăm:
# apt-get update
# apt-get dist-upgrade
După actualizare, se poate verifica versiunea OS și se poate face o repornire de control pentru a ne asigura că totul pornește corect după actualizare:
# cat /etc/debian_version
# reboot
Actualizarea PHP la versiunea 7.2
Oprind serverul web:
# service apache2 stop
Adăugând certificatul și cheile PPA, depozitul 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
La eliminarea versiunii vechi PHP 7.0, phpmyadmin va fi de asemenea eliminat, deoarece vom curăța „urmele” pachetelor eliminate folosind autoremove. Acest lucru nu va crea dificultăți speciale, deoarece nu au fost efectuate setări speciale pentru phpmyadmin și reinstalarea sa nu va fi o problemă.
# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin
Instalarea modulelor necesare pentru 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
[ este scris special pentru site-ul de către .
Linkul către sursă nu este obligatoriu, dar menționarea acesteia este extrem de dorită! ]
Verificăm versiunea PHP, pornim serverul web și verificăm funcționalitatea Nextcloud:
# php -v
# service apache2 start
Actualizarea MariaDB la versiunea 10.4
Pe site-ul proiectului există , pe care trebuie să indicăm sistemul nostru de operare, versiunea sa și să alegem versiunea bazei de date. După selectare, se va genera un cod pentru adăugarea depozitului.
Oprind serverul web:
# service apache2 stop
Adăugăm depozitul și actualizăm pachetele:
# 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
La instalarea MariaDB, managerul de pachete va elimina corect versiunea anterioară și va instala noua versiune, păstrând toate bazele de date. Totuși, este recomandat să faci un backup al bazei de date Nextcloud.
Instalăm MariaDB și inițiem procedura de actualizare:
# apt-get install mariadb-server
# mysql_upgrade u root -p
După introducerea parolei, MariaDB se va actualiza și va putea fi configurată conform :
# mysql_secure_installation
Pornim serverul web și verificăm funcționarea Nextcloud:
# service apache2 start
Actualizarea Nextcloud la versiunea 17
Pentru a porni actualizarea, trebuie să te autentifici în serviciu cu un cont de administrator, să accesezi setările și să deschizi „Setările generale” în secțiunea administrativă. Nextcloud va afișa versiunea instalată și versiunea disponibilă pentru actualizare, pe care o poți iniția apăsând butonul „Deschide fereastra de actualizare”. După inițiere, Nextcloud va face un backup, va descărca și va verifica integritatea fișierelor de actualizare, va activa modul de întreținere și va actualiza fișierele. Apoi va apărea întrebarea „Menține activ modul de întreținere”? Aici trebuie să fii atent. Un răspuns pozitiv va lăsa site-ul în modul de întreținere — se presupune că administratorul știe ce are de făcut și va acționa manual. În caz contrar, Nextcloud va face totul singur, așa că pentru a continua, apăsăm butonul „Nu”.
Actualizările se fac iterativ. Mai întâi, Nextcloud 13.x va fi actualizat la cea mai recentă versiune a ramurii 14.x. Apoi va trebui să te întorci în centrul de administrare și să inițiezi actualizarea, acum de la 14.x la 15.x. Și așa mai departe, până când se va atinge cea mai recentă versiune disponibilă. După fiecare actualizare, pe pagina „Setări generale” din secțiunea administrativă va apărea o listă de propuneri și probleme întâmpinate, precum și recomandări pentru rezolvarea acestora. În continuare, vom discuta despre ce trebuie să faci după fiecare actualizare.
Înainte de actualizare
În versiunile recente de Nextcloud, se recomandă activarea PHP OPcache pentru a îmbunătăți performanța. E ciudat că am omis acest aspect cu câțiva ani în urmă, deoarece OPcache a apărut încă în PHP 5. În /etc/php/7.2/apache2/php.ini trebuie să decommentăm și să edităm următoarele parametere:
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
Actualizare 13.x -> 14.x
Restaurăm indexul tabelelor:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Actualizare 14.x -> 15.x
Pregătim baza de date Nextcloud pentru activarea codificării pe patru octeți:
# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit
Activăm suportul pentru codificarea pe patru octeți în Nextcloud:
# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"
Transformăm tabelele:
# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
Recuperăm indecșii pierduți ai tabelelor:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Transformăm indecșii tabelelor în bigint:
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Actualizare 15.x -> 16.x
Recuperăm indecșii pierduți ai tabelelor:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Transformăm indecșii tabelelor în bigint:
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Actualizare 16.x -> 17.x
Nu sunt necesare acțiuni suplimentare.
Cuvânt înainte
Conform acestei instrucțiuni, mașina virtuală cu Nextcloud 13 a fost actualizată. Utilizarea mașinii virtuale permite evitarea realizării de copii de rezervă pentru fișierele Nextcloud și baza sa de date, deoarece, în caz de probleme, se poate reveni pur și simplu la fișierul salvat anterior al mașinii virtuale și se poate începe totul de la zero. Totuși, aceasta nu se aplică folderului cu datele utilizatorilor, pe care recomand, de asemenea, să-l salvezi împreună cu mașina virtuală cu Nextcloud. În cazul meu, „cloudul” este folosit ca un folder de stocare la distanță cu versionare automată, iar sincronizarea este direcționată „doar în acea direcție”, iar pierderea acestor date nu ar fi fost critică – ar fi fost necesar doar să reiau sincronizarea timp de câteva ore. În ciuda neglijenței mele față de regula vieții dezvoltată „salvează-te pe tine”, actualizarea a decurs fără probleme, iar toți clienții au funcționat, de asemenea, fără probleme cu Nextcloud 17. Sunt impresionat, Frank Karlitschek – tu și echipa ta faceți o treabă excelentă!
După actualizare, am decis să curăț datele utilizatorului, care, conform statisticilor, ocupau aproape două terabytes. Nu am avut atât de multe date operaționale – cea mai mare parte a volumului era ocupată de fișierele versiunilor și fișierele șterse. Problema cu care m-am confruntat a fost că pentru un utilizator, datele șterse erau atât de numeroase (nu era vorba de volum, ci de număr – foarte multe fișiere mici), încât Nextcloud nu le putea afișa în interfața web. După ce am studiat manualul de administrare, am găsit o soluție prin linia de comandă. Poate că va fi de ajutor pentru cineva.
Pentru a curăța fișierele șterse ale utilizatorului user:
# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user
Pentru a curăța fișierele versiunilor utilizatorului user:
# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup userÎnapoi .
Istoria creării unui cloud personal. Partea 5. Actualizare 2019 – PHP 7.2, MariaDB 10.4 și Nextcloud 17
Versiunea textului: 1.1.1.
Data primei publicări: 15.01.2020.
Data ultimei modificări: 15.01.2020.
Jurnal de actualizări1.1.1 [15-01-2020]
Corectarea greșelilor tipografice.
1.1.0 [15-01-2020]
Codul de pregătire a bazei de date Nextcloud pentru activarea codificării pe patru octeți a fost corectat.
1.0.0 [15-01-2020]
Prima versiune.
Sursa: habr.com
