История на създаването на домашното облако. Част 5. Актуализация 2019 – PHP 7.2, MariaDB 10.4 и Nextcloud 17

Преди две години публикувах серия статии за създаването на уеб сървър на базата на Debian 8 и стартирането на услугата Nextcloud 11 на него. Няколко месеца по-късно се появи допълнение, съдържащо „диференциална“ информация за инсталирането на Nextcloud 13 на Debian 9. В края на 2018 година просто обнових Debian и Nextcloud и не срещнах никакви необичайни или интересни проблеми. Обновлението в края на 2019 година беше вече по-интересно и за него си струваше да се напише.

История на създаването на домашното облако. Част 5. Актуализация 2019 – PHP 7.2, MariaDB 10.4 и Nextcloud 17

Тази статия в основата си ще бъде полезна на тези, които според инструкциите на предишните четири статии са „събрали“ Nextcloud 13 на Debian 9 (пращам поздрави на десет от моите последователи по темата Nextcloud, особено на тези, за които това беше първият опит в света на Linux). На тези, които ще стартират услугата от нулата, препоръчвам да вземат за основа първите четири статии от тази серия с корекции за актуалните версии на Debian 10 и Nextcloud 17. За опитните потребители на Linux статията може да заеме някакво място между „тривиална и безполезна“ и „не е лоша, шпаргалка всичко на едно място.“

Съдържание

Част 1. Настройка на средата Debian за ежедневна употреба
Част 2. Създаване на сървър — настройка на LAMP в Debian
Част 3. Създаване на личен облак — инсталиране и конфигуриране на Nextcloud
Част 4. Актуализация 2018 – Debian 9 и Nextcloud 13
Част 5. Актуализация 2019 – PHP 7.2, MariaDB 10.4 и Nextcloud 17

Бърза навигация по главата

Предговор
Обновление на Debian
Обновление на PHP до версия 7.2
Обновление на MariaDB до версия 10.4
Обновление на Nextcloud до версия 17
Следсловие

Предговор

Първоначално исках да инсталирам и конфигурирам Nginx на Debian 10, върху което без проблем би се инсталирал актуалният Nextcloud 17. Но за всичко това не успях да намеря време, затова тази статия представлява набор от инструкции за обновление на Nextcloud от 13 до актуалната версия 17 с предварителна подготовка на уеб сървъра.

Първо, е необходимо да обясним защо бяха нужни радикални промени на нивото на уеб сървъра. Нашият сървър е основан на актуалната и поддържана версия на Debian 9. Можем просто да актуализираме операционната система и всички компоненти на уеб сървъра ще получат най-малко обновления за сигурност. Всичко щеше да е чудесно, ако продължавахме да използваме Nextcloud 13 или ако просто се актуализирахме до версия 14. Но Nextcloud 13 вече не се поддържа, а поддръжката на 14-та версия е на изчерпване. Започвайки от 15-та версия, Nextcloud ще предложи преобразуване на базата данни в big int, за да поддържа четирибайтово кодиране, а с MariaDB 10.1 това ще бъде доста проблематично. Nextcloud 17 изисква PHP 7.1-7.3, докато Debian 9 в собствените си репозитории съдържа само версия 7.0. Правилно, от гледна точка на надеждност и предсказуемост, би било да се актуализираме до предпоследната версия на Nextcloud, но през последните няколко години толкова се уверих в надеждността на този услуга, че исках да се актуализирам до последната версия и да подобря уеб сървъра с мисъл за бъдещето. Ето защо, за обновление до Nextcloud 17, оптимално е да се обнови MariaDB до актуалната стабилна версия 10.4, а PHP — до 7.2. Именно 7.2, а не актуалната 7.4. Факт е, че Nextcloud 13 изисква PHP 5.6, 7.0 — 7.2, а за Nextcloud 17 е необходим PHP 7.1 — 7.3. Използването на PHP 7.2 е удобно с цел минимизиране на действията по обновление. Не е необходимо да обновяваме сървъра Apache — достатъчно е да инсталираме обновленията за сигурност, предоставени от екипа за поддръжка на Debian. Но за обновления на MariaDB и PHP ще трябва да се свържем с външни репозитории.

Когато за първи път се запознах с Nextcloud, го актуализирах „ръчно“: от конзолата специална команда премества сайта в режим на поддръжка, ръчно се изтегляше и разархивираше архив с новата версия на сайта, файловете се актуализираха и се стартираше процедурата за обновление. Такова обновление обикновено водеше до очаквани резултати, въпреки че не се колебаех да направя резервно копие на сайта, базата данни и потребителските данни. Но автоматичното обновление понякога водеше до всякакви изненади. Но това беше отдавна, стабилността на движка оттогава значително се увеличи и този път правих актуализации изцяло чрез уеб интерфейса. Въпреки това, не можах да се откажа от командния ред. При итеративното обновление на всяка нова версия в контролния панел ще се появяват различни предупреждения и уведомления, които трябва да се „премахват“, като смислено изпълнявате команди в командния ред. Може и да не го правите — услугата все пак ще работи. Въпреки че такъв подход е коренно неправилен, моят Nextcloud работи в този режим 3 месеца, преди да се захвана умишлено с възникналите въпроси.

Обновление на Debian

Спираме уеб сървъра:

# service apache2 stop


И се актуализираме:

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


След обновяването можете да проверите версията на операционната система и да извършите контролно рестартиране, за да се уверите, че всичко стартира нормално след актуализацията:

# cat /etc/debian_version
# reboot


Обновление на PHP до версия 7.2

Спираме уеб сървъра:

# service apache2 stop


Добавяме сертификат и ключове PPA, репозиторий 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


При изтриването на старата версия PHP 7.0 ще бъде изтрит и phpmyadmin, тъй като "следите" от премахнатите пакети ще бъдат почистени с autoremove. Това няма да създаде особени затруднения, тъй като не са правени специални настройки за phpmyadmin и инсталирането му отново не би трябвало да е проблем.

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


Инсталираме нужните модули за 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


[ Текстът е написан специално за сайта habr.com от автора AlexanderS.
Споменаването на източника не е задължително, но е силно желателно!

Проверяваме версията на PHP, стартираме уеб сървъра и проверяваме работоспособността на Nextcloud:

# php -v
# service apache2 start


Обновление на MariaDB до версия 10.4

На сайта на проекта има интересна страница, на която трябва да посочите своята операционна система, нейното издание и да изберете версия на базата данни. След избора ще се генерира код за добавяне на репозитория.

Спираме уеб сървъра:

# service apache2 stop


Добавяме репозиторий и актуализираме пакетите:

# 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


При инсталирането на MariaDB пакетният мениджър правилно ще премахне предишната версия и ще инсталира нова, при което всички бази данни ще бъдат запазени. Въпреки това, е препоръчително да се направи резервно копие на базата Nextcloud.

Инсталираме MariaDB и стартираме процедурата за обновление:

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


След въвеждане на паролата MariaDB ще бъде обновена и можете да я конфигурирате, следвайки инструкциите от втората част:

# mysql_secure_installation


Стартираме уеб сървера и проверяваме работоспособността на Nextcloud:

# service apache2 start


Обновление на Nextcloud до версия 17

За да стартирате обновлението, трябва да се впишете в услугата с административен акаунт, да отидете в настройките и да отворите „Общи настройки“ в административния раздел. Nextcloud показва инсталираната версия и версията, достъпна за обновление, което може да се стартира, натискайки бутона „Отворете прозорец за обновление“. След инициирането Nextcloud прави резервно копие, изтегля и проверява целостта на файловете за обновление, включва режим на поддръжка и обновява файловете. След това следва въпросът „Да се запази ли активен режим на поддръжка?“ Тук трябва да бъдете внимателни. Положителният отговор ще остави сайта в режим на поддръжка — предполага се, че администраторът знае какво да прави и ще го направи ръчно. В противен случай Nextcloud ще се справи сам, затова за продължаване натискаме бутона „Не“.

Обновленията се извършват итеративно. Първо Nextcloud 13.x ще се обнови до последната версия на клон 14.x. След това отново трябва да влезете в администраторския център и да стартирате обновлението от 14.x до 15.x. И така нататък, докато не се достигне последната възможна актуална версия. След всяко обновление на страницата „Общи настройки“ в административния раздел ще бъде изведен списък с предложения и възникнали проблеми, както и препоръки за тяхното разрешаване. По-долу ще се говори за това, какво трябва да се направи след всяко обновление.

До обновлението

На последните версии на Nextcloud се препоръчва да се включи PHP OPcache за подобряване на производителността. Странно е, че този момент го пропуснах преди няколко години, тъй като OPcache се появи още в PHP 5. В /etc/php/7.2/apache2/php.ini е нужно да разкоментирате и редактирате следните параметри:

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


Актуализиране 13.x -> 14.x

Възстановяване на индексите на таблиците:

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


Актуализиране 14.x -> 15.x

Подготовка на базата данни на Nextcloud за включване на четиробайтовата кодировка:

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


Включване на поддръжка на четиробайтовата кодировка в Nextcloud:

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


Преобразуване на таблиците:

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


Възстановяване на загубените индекси на таблиците:

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


Преобразуване на индексите на таблиците в bigint:

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


Актуализиране 15.x -> 16.x

Възстановяване на загубените индекси на таблиците:

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


Преобразуване на индексите на таблиците в bigint:

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


Актуализиране 16.x -> 17.x

Никакви допълнителни действия не са необходими.

Следсловие

По тази инструкция беше актуализирана виртуалната машина с Nextcloud 13. Използването на виртуална машина позволява да не правя архиви на файловете на Nextcloud и неговата база данни, тъй като в случай на проблеми мога просто да възстановя предварително запазения файл на виртуалната машина и да започна всичко отначало. Въпреки това, това не важи за папката с потребителските данни, която също препоръчвам да архивирате заедно с виртуалната машина на Nextcloud. В моя случай "облакът" се използва като отдалечена папка с автоматична версияция, с насочване на синхронизацията "само натам", и загубата на тези данни не беше критична — просто щеше да отнеме няколко часа, за да направя отново синхронизацията. Въпреки моето пренебрежение към правилото "запази се на всякъде", актуализацията премина без проблеми и всички клиенти работиха безпроблемно с Nextcloud 17. Впечатлен съм, Франк Карлитшек — вие и вашият екип вършите отлична работа!

След актуализацията реших да почистя потребителските данни, които, според статистиката, заеха около два терабайта. Толкова оперативни данни нямах — по-голямата част от обема заемаха файлове с версии и изтрити файлове. Проблемът, с който се сблъсках, беше, че за един потребител изтритите данни бяха толкова много (не става дума дори за обема, а именно за количеството — много малки файлове), че Nextcloud не можеше да ги покаже в уеб интерфейса. След проучване на ръководството по администриране намерих решение чрез командния ред. Може би ще е полезно за някого.

За почистване на изтритите файлове на потребителя user:

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


За почистване на файловете с версии на потребителя user:

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

Върнете се в началото, към съдържанието.

История на създаването на домашното облако. Част 5. Актуализация 2019 – PHP 7.2, MariaDB 10.4 и Nextcloud 17
Версия на текста: 1.1.1.
Дата на първото публикуване: 15.01.2020.
Дата на последното изменение: 15.01.2020.

Лог на актуализациите1.1.1 [15-01-2020]
Корекция на печатни грешки.

1.1.0 [15-01-2020]
Коригиран код за подготовка на базата данни на Nextcloud за включване на четиробайтовата кодировка.

1.0.0 [15-01-2020]
Първата версия.

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster