Historia powstania chmury domowej. Część 5. Aktualizacja 2019 – PHP 7.2, MariaDB 10.4 i Nextcloud 17

Dwa lata temu opublikowałem serię artykułów na temat tworzenia serwera WWW w oparciu o Debiana 8 i uruchamiania na nim usługi Nextcloud 11. Kilka miesięcy później pojawił się dodatek zawierający informacje „różnicowe” dotyczące instalacji Nextcloud 13 na Debianie 9. Pod koniec 2018 roku właśnie zaktualizowałem Debiana i Nextcloud i nie napotkałem żadnych nietypowych ani interesujących problemów. Aktualizacja pod koniec 2019 roku była już ciekawsza i warto o niej pisać.

Historia powstania chmury domowej. Część 5. Aktualizacja 2019 – PHP 7.2, MariaDB 10.4 i Nextcloud 17

Artykuł ten przyda się przede wszystkim tym, którzy zgodnie z instrukcjami zawartymi w poprzednich czterech artykułach „zmontowali” Nextcloud 13 na Debianie 9 (witam kilkunastu moich subskrybentów w temacie Nextcloud, zwłaszcza tych, dla których było to ich pierwsze doświadczenie w świecie Linuksa). Tym, którzy planują stworzyć usługę od zera, radzę wziąć za podstawę pierwsze cztery artykuły z tej serii, dostosowane do aktualnych wersji Debiana 10 i Nextcloud 17. Dla doświadczonych użytkowników Linuksa artykuł może zająć trochę czasu miejsce pomiędzy „trywialnym i bezużytecznym” a „niezłą, kompleksową ściągawką”.

Spis treści

Część 1: Konfigurowanie środowiska Debiana do codziennego użytku
Część 2: Tworzenie serwera - konfiguracja LAMP na Debianie
Część 3. Tworzenie chmury osobistej – instalacja i konfiguracja Nextcloud
Część 4. Aktualizacja 2018 – Debian 9 i Nextcloud 13
Część 5. Aktualizacja 2019 – PHP 7.2, MariaDB 10.4 i Nextcloud 17

Szybka nawigacja po rozdziałach

Przedmowa
Aktualizacja Debiana
Aktualizacja PHP do wersji 7.2
Aktualizacja MariaDB do wersji 10.4
Aktualizacja Nextcloud do wersji 17
Posłowie

Przedmowa

Początkowo chciałem zainstalować i skonfigurować Nginx na Debianie 10, na którym bez problemu dałoby się zainstalować aktualne Nextcloud 17. Jednak nie mogłem znaleźć na to wszystko czasu, dlatego w tym artykule jest zestaw instrukcji dotyczących aktualizacji Nextcloud od 13 do aktualnej wersji 17 ze wstępnym przygotowaniem serwera WWW.

Najpierw musimy wyjaśnić, dlaczego konieczne były radykalne zmiany po stronie serwera WWW. Nasz serwer oparty jest na aktualnym i wspieranym Debianie 9. Możesz po prostu zaktualizować system operacyjny, a wszystkie komponenty serwera WWW otrzymają co najmniej aktualizacje zabezpieczeń. Wszystko byłoby wspaniale, gdybyśmy nadal korzystali z Nextcloud 13 lub zaktualizowali tylko do wersji 14. Jednak Nextcloud 13 nie jest już obsługiwany, a obsługa wersji 14. jest już wygaszona. Począwszy od wersji 15, Nexctcloud będzie oferował konwersję bazy danych na big int w celu obsługi kodowania czterobajtowego, a w przypadku MariaDB 10.1 będzie to bardzo problematyczne. Nexctcloud 17 wymaga PHP 7.1-7.3, podczas gdy Debian 9 zawiera tylko wersję 7.0 w swoich natywnych repozytoriach. Bardziej poprawne, pod względem niezawodności i przewidywalności, byłoby uaktualnienie do przedostatniej wersji Nextcloud, ale po kilku latach nabrałem takiej pewności co do niezawodności tej usługi, że chciałem zaktualizować ją do najnowszej wersji i zaktualizować serwer WWW z rezerwą na przyszłość. Dlatego, aby zaktualizować do Nexctcloud 17, optymalnie jest zaktualizować MariaDB do aktualnej stabilnej wersji 10.4 i PHP do 7.2. Dokładnie 7.2, a nie obecne 7.4. Faktem jest, że Nextcloud 13 wymaga PHP 5.6, 7.0 - 7.2, a Nexctcloud 17 wymaga PHP 7.1 - 7.3. Wygodnie jest używać PHP 7.2, aby zminimalizować wysiłki związane z aktualizacjami. Nie ma potrzeby aktualizowania serwera Apache — wystarczy zainstalować aktualizacje zabezpieczeń dystrybuowane przez zespół wsparcia Debiana. Ale w przypadku aktualizacji MariaDB i PHP będziesz musiał podłączyć zewnętrzne repozytoria.

Kiedy dopiero zapoznawałem się z Nextcloud, zaktualizowałem go „ręcznie”: specjalnym poleceniem z konsoli strona została przełączona w tryb konserwacji, ręcznie pobrano i rozpakowano archiwum z nową wersją witryny, pliki zostały zaktualizowane i rozpoczęto procedurę aktualizacji. Taka aktualizacja zwykle przynosiła oczekiwane rezultaty, chociaż nie leniłem się w tworzeniu kopii zapasowej witryny, bazy danych i danych użytkownika. Ale automatyczne aktualizacje czasami prowadziły do ​​różnego rodzaju niespodzianek. Ale to było dawno temu, od tego czasu stabilność silnika znacznie wzrosła i tym razem aktualizacje dokonywałem wyłącznie poprzez interfejs WWW. To prawda, że ​​​​nadal nie mogłem uciec od wiersza poleceń. Podczas iteracyjnej aktualizacji do każdej nowej wersji w panelu sterowania będą pojawiać się różne ostrzeżenia i powiadomienia, które trzeba będzie „usunąć” poprzez sensowne wykonanie poleceń z wiersza poleceń. Nie musisz tego robić – usługa nadal będzie działać. Choć takie podejście jest zasadniczo błędne, Nextcloud pracował u mnie w tym trybie przez 3 miesiące, zanim celowo uporałem się z powstałymi problemami.

Aktualizacja Debaina

Zatrzymaj serwer WWW:

# service apache2 stop


I aktualizujemy:

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


Po aktualizacji możesz sprawdzić wersję systemu operacyjnego i wykonać testowe ponowne uruchomienie, aby upewnić się, że po aktualizacji wszystko uruchomi się normalnie:

# cat /etc/debian_version
# reboot


Aktualizacja PHP do wersji 7.2

Zatrzymaj serwer WWW:

# service apache2 stop


Dodaj klucze certyfikatu i PPA, repozytorium 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


Podczas usuwania starej wersji PHP 7.0, phpmyadmin również zostanie usunięty, ponieważ usuniemy „ślady” z usuniętych pakietów za pomocą autorove. Nie spowoduje to żadnych szczególnych trudności, ponieważ nie wprowadzono żadnych specjalnych ustawień dla phpmyadmin i ponowna instalacja nie będzie stanowić żadnych problemów.

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


Instalowanie modułów wymaganych dla 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


[ Ten tekst napisane specjalnie dla witryny www.habr.com autor Aleksander S.
Link do źródła jest opcjonalny, ale wspomnienie o nim jest zdecydowanie zalecane! ]

Sprawdzamy wersję PHP, uruchamiamy serwer WWW i sprawdzamy funkcjonalność Nextcloud:

# php -v
# service apache2 start


Aktualizacja MariaDB do wersji 10.4

Na stronie projektu jest ciekawa strona, gdzie należy wskazać system operacyjny, jego wersję i wybrać wersję bazy danych. Po wybraniu zostanie wygenerowany kod umożliwiający dodanie repozytorium.

Zatrzymaj serwer WWW:

# service apache2 stop


Dodaj repozytorium i zaktualizuj pakiety:

# 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


Podczas instalacji MariaDB menedżer pakietów poprawnie usunie poprzednią wersję i zainstaluje nową, przy czym wszystkie bazy danych zostaną zachowane. Zaleca się jednak oczywiście wykonanie kopii zapasowej bazy danych Nextcloud.

Zainstaluj MariaDB i rozpocznij procedurę aktualizacji:

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


Po wprowadzeniu hasła MariaDB zostanie zaktualizowana i możesz je skonfigurować w następujący sposób instrukcje z części drugiej:

# mysql_secure_installation


Uruchamiamy serwer WWW i sprawdzamy funkcjonalność Nextcloud:

# service apache2 start


Aktualizacja Nextcloud do wersji 17

Aby rozpocząć aktualizację, należy zalogować się do usługi na koncie administracyjnym, przejść do ustawień i otworzyć „Ustawienia ogólne” w sekcji administracyjnej. Nextcloud pokazuje zainstalowaną wersję oraz wersję dostępną do aktualizacji, którą można uruchomić klikając przycisk „Otwórz okno aktualizacji”. Po zainicjowaniu Nextcloud tworzy kopię zapasową, pobiera i sprawdza integralność plików aktualizacji, włącza tryb konserwacji i aktualizuje pliki. Następnie pojawia się pytanie „Utrzymać aktywny tryb konserwacji”? Trzeba tu zachować ostrożność. Pozytywna odpowiedź spowoduje opuszczenie serwisu w trybie konserwacji – zakłada się, że administrator wie, co dalej robić i zrobi to ręcznie. W przeciwnym razie Nextcloud zrobi wszystko sam, więc kliknij przycisk „Nie”, aby kontynuować.

Aktualizacje są wykonywane iteracyjnie. W pierwszej kolejności Nextcloud 13.x zostanie zaktualizowany do najnowszej wersji gałęzi 14.x. Następnie będziesz musiał ponownie udać się do centrum administracyjnego i rozpocząć aktualizację, teraz z wersji 14.x do 15.x. I tak dalej, aż do osiągnięcia ostatniej możliwej aktualnej wersji. Po każdej aktualizacji, na stronie „Ustawienia ogólne” w części administracyjnej, wyświetlona zostanie lista sugestii i napotkanych problemów oraz zalecenia dotyczące ich rozwiązania. Poniżej omówimy, co należy zrobić po każdej aktualizacji.

Przed aktualizacją

W najnowszych wersjach Nextcloud zaleca się włączenie PHP OPcache w celu poprawy wydajności. Dziwne, że jakoś przeoczyłem ten punkt kilka lat temu, odkąd OPcache pojawiło się w PHP 5. W pliku /etc/php/7.2/apache2/php.ini musisz odkomentować i edytować następujące parametry:

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


Aktualizacja 13.x -> 14.x

Przywracanie indeksów tabel:

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


Aktualizacja 14.x -> 15.x

Przygotowujemy bazę danych nextcloud umożliwiającą kodowanie czterobajtowe:

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


Włącz obsługę kodowania czterobajtowego w Nextcloud:

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


Konwersja tabel:

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


Odzyskiwanie utraconych indeksów tabel:

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


Konwertuj indeksy tabel na bigint:

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


Aktualizacja 15.x -> 16.x

Odzyskiwanie utraconych indeksów tabel:

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


Konwertuj indeksy tabel na bigint:

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


Aktualizacja 16.x -> 17.x

Nie jest wymagane żadne dodatkowe działanie.

Posłowie

Postępując zgodnie z tymi instrukcjami, zaktualizowano maszynę wirtualną z Nextcloud 13. Korzystanie z maszyny wirtualnej pozwala nie tworzyć kopii zapasowych plików Nextcloud i jej bazy danych, ponieważ w przypadku problemów możesz po prostu zwrócić wcześniej zapisany plik maszyny wirtualnej i zacząć wszystko od nowa Ponownie. Nie dotyczy to jednak folderu z danymi użytkownika, który również polecam wykonać kopię zapasową wraz z maszyną wirtualną za pomocą Nextcloud. W moim przypadku „chmura” służy jako zdalny folder z automatyczną wersjonowaniem i z kierunkiem synchronizacji „tylko tam”, a utrata tych danych nie była dla mnie krytyczna - po prostu musiałbym powtarzać synchronizację przez kilka godzin . Pomimo mojego lekceważenia dożywotniej zasady „zapisz na wszelki wypadek”, aktualizacja przebiegła bez żadnych problemów i wszyscy klienci bez żadnych problemów rozpoczęli pracę z Nextcloud 17. Jestem pod wrażeniem, Franku Karlitshek – Ty i Twój zespół radzicie sobie świetnie stanowisko!

Po aktualizacji zdecydowałem się wyczyścić dane użytkownika, które według statystyk zajmowały około dwóch terabajtów. Nie miałem aż tak dużo danych operacyjnych - większość woluminu zajmowały pliki wersji i pliki usunięte. Problem, jaki napotkałem, polegał na tym, że w przypadku jednego użytkownika usunięto tak dużo danych (nie chodzi nawet o ilość, ale o ilość - dużo małych plików), że Nextcloud nie mógł ich wyświetlić w interfejsie WWW. Po przestudiowaniu instrukcji administracyjnej znalazłem rozwiązanie za pomocą wiersza poleceń. Być może będzie to dla kogoś przydatne.

Aby wyczyścić usunięte pliki użytkownika:

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


Aby wyczyścić pliki wersji użytkownika:

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

ернуться na początek, do spisu treści.

Historia powstania chmury domowej. Część 5. Aktualizacja 2019 – PHP 7.2, MariaDB 10.4 i Nextcloud 17
Wersja tekstowa: 1.1.1.
Data pierwszej publikacji: 15.01.2020.
Data ostatniej edycji: 15.01.2020.

Aktualizuj dziennik1.1.1 [15-01-2020] Korekta literówek.

1.1.0 [15] Naprawiono kod przygotowania bazy danych nexcloud, aby umożliwić kodowanie czterobajtowe.

1.0.0 [15] Wersja pierwsza.

Źródło: www.habr.com