Преди две години публикувах поредица от статии по темата за създаване на уеб сървър, базиран на Debian 8 и стартиране на услугата Nextcloud 11. Няколко месеца по-късно се появи допълнение, съдържащо „диференциална“ информация за инсталиране на Nextcloud 13 на Debian 9. В края на 2018 г. току-що актуализирах Debian и Nextcloud и не срещнах необичайни или интересни проблеми. Актуализацията в края на 2019 г. вече беше по-интересна и заслужаваше да се пише.
Тази статия ще бъде полезна предимно за онези, които според инструкциите на предишните четири статии са „сглобили“ Nextcloud 13 на Debian 9 (здравейте на около дузина мои абонати по темата Nextcloud, особено на тези, за които това беше първият им опит в света на Linux). За тези, които планират да създадат услуга от нулата, ви съветвам да вземете като основа първите четири статии от тази поредица, коригирани за текущите версии на Debian 10 и Nextcloud 17. За опитни потребители на Linux статията може да отнеме малко място между „тривиално и безполезно“ и „не лошо, всичко на едно място мамят лист“.
Таблица на съдържанието
Бърза навигация по глави
предговор
Първоначално исках да инсталирам и конфигурирам 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
[
Връзката към източника не е задължителна, но споменаването му е силно препоръчително! ]
Проверяваме версията на 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