Историята на създаването на домашен облак. Част 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, Nexctcloud ще предлага преобразуване на базата данни в big int, за да поддържа четирибайтово кодиране, а с MariaDB 10.1 това ще бъде много проблематично. Nexctcloud 17 изисква PHP 7.1-7.3, докато Debian 9 съдържа само версия 7.0 в собствените си хранилища. Би било по-правилно, от гледна точка на надеждност и предвидимост, да надстроя до предпоследната версия на Nextcloud, но след няколко години станах толкова уверен в надеждността на тази услуга, че исках да надстроя до най-новата версия и да актуализирам уеб сървър с резерв за бъдещето. Следователно, за да актуализирате до Nexctcloud 17, оптимално е да актуализирате MariaDB до текущата стабилна версия 10.4 и PHP до 7.2. Точно 7.2, а не сегашния 7.4. Факт е, че Nextcloud 13 изисква PHP 5.6, 7.0 - 7.2, а Nexctcloud 17 изисква PHP 7.1 - 7.3. Удобно е да използвате PHP 7.2, за да сведете до минимум усилията за актуализиране. Няма нужда да актуализирате вашия Apache сървър - просто инсталирайте актуализациите за сигурност, разпространявани от екипа за поддръжка на Debian. Но за актуализации на MariaDB и PHP ще трябва да свържете външни хранилища.

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

Актуализация на Debain

Спрете уеб сървъра:

# 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


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

Проверяваме версията на 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 не можеше да ги покаже в уеб интерфейса. След като проучих ръководството за администриране, намерих решение чрез командния ред. Може би това ще бъде полезно за някого.

За да изчистите изтритите потребителски файлове:

# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup 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] Коригиран код за подготовка на база данни nexcloud за активиране на четирибайтово кодиране.

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

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