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

Artykuł ten będzie przydatny przede wszystkim dla tych, którzy postępując zgodnie z instrukcjami zawartymi w poprzednich czterech artykułach, samodzielnie „złożyli” NextCloud 13 Debian 9 (Przesyłam pozdrowienia dla moich dziesięciu subskrybentów w temacie NextCloud, szczególnie dla tych, dla których było to pierwsze doświadczenie na świecie Linux). Osobom planującym budowę usługi od podstaw polecam wykorzystanie pierwszych czterech artykułów z tej serii jako podstawy, z uwzględnieniem zmian w bieżących wersjach. Debian 10 i NextCloud 17. Dla zaawansowanych użytkowników Linux Artykuł można określić jako coś pomiędzy „trywialnego i bezużytecznego” a „niezłym, wielofunkcyjnym poradnikiem”.
Spis treści
Szybka nawigacja po rozdziałach
Przedmowa
Początkowo chciałem Debian 10, zainstaluj i skonfiguruj Nginx, który z łatwością obsłużyłby najnowszą wersję Nextcloud 17. Nie miałem jednak na to wszystko czasu, dlatego ten artykuł stanowi zbiór instrukcji dotyczących aktualizacji Nextcloud z wersji 13 do najnowszej wersji 17, ze wstępnym przygotowaniem serwera WWW.
Najpierw musimy wyjaśnić, dlaczego konieczne były radykalne zmiany po stronie serwera WWW. Nasz serwer bazuje na aktualnej i obsługiwanej wersji. Debian 9. Możesz po prostu zaktualizować system operacyjny, a wszystkie komponenty serwera WWW otrzymają co najmniej aktualizacje zabezpieczeń. Wszystko byłoby w porządku, gdybyśmy nadal korzystali z NextCloud 13 lub zaktualizowali go tylko do wersji 14. Jednak NextCloud 13 nie jest już wspierany, a wsparcie dla wersji 14 maleje. Począwszy od wersji 15, NextCloud zaoferuje konwersję bazy danych do typu big int, aby obsługiwać kodowanie czterobajtowe, a w MariaDB 10.1 będzie to bardzo problematyczne. NextCloud 17 wymaga PHP 7.1-7.3, podczas gdy Debian Wersja 9 zawiera w swoich natywnych repozytoriach tylko wersję 7.0. Prawidłowym rozwiązaniem pod względem niezawodności i przewidywalności byłaby aktualizacja do przedostatniej wersji NextCloud, ale w ciągu ostatnich kilku lat nabrałem tak dużej pewności co do niezawodności usługi, że chciałem zaktualizować ją do najnowszej wersji i zaktualizować serwer WWW na przyszłość. Dlatego, aby zaktualizować NextCloud do wersji 17, optymalnie jest zaktualizować MariaDB do aktualnej stabilnej wersji 10.4 i PHP do wersji 7.2. Dokładniej, do wersji 7.2, a nie do obecnej wersji 7.4. Faktem jest, że NextCloud 13 wymaga PHP 5.6, 7.0 wymaga PHP 7.2, a NextCloud 17 wymaga PHP 7.1-7.3. Korzystanie z PHP 7.2 jest wygodne, ponieważ minimalizuje nakład pracy związany z aktualizacją. Nie trzeba aktualizować serwera Apache — wystarczy zainstalować aktualizacje zabezpieczeń dystrybuowane przez zespół wsparcia. DebianJednak w celu przeprowadzenia aktualizacji MariaDB i PHP konieczne będzie połączenie z zewnętrznymi repozytoriami.
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
[ napisane specjalnie dla witryny autor .
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 , 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 :
# 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ернуться .
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-01-2020]
Naprawiono kod przygotowania bazy danych Nexcloud, aby umożliwić kodowanie czterobajtowe.
1.0.0 [15-01-2020]
Pierwsza wersja.
Źródło: www.habr.com
