Историята на създаването на домашно облако. Част 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, обновявах го ръчно: с помощта на специална команда в конзолата сайтът се прехвърляше в режим на поддръжка, архивът с новата версия на сайта се сваляше и разопакова, файловете се обновяваха и се стартираше процедурата за обновление. Такова обновление обикновено довеждаше до очаквани резултати, макар че не се ленях да правя резервно копие на сайта, базата данни и потребителските данни. Автоматичното обновление понякога обаче водеше до всякакви изненади. Но това беше отдавна, стабилността на движка значително се подобри оттогава и този път правих обновления изключително през уеб интерфейса. Вярно, не успях да избягам от командния ред. При итерационно обновление на всяка нова версия в контролния панел ще се появяват различни предупреждения и известия, които трябва да „премахнeте“, съзнателно изпълнявайки команди в командния ред. Може и да не го правите — услугата все пак ще работи. Въпреки че такъв подход е принципно погрешен, моя 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]
Коригиран е кодът за подготовка на базата данни на nexcloud за активиране на четирибайтово кодиране.

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

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

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