Aktualizacja

Nowe wydanie jest zawsze rozpakowywane do osobnego katalogu. Nie wolno go kopiować na istniejącą instalację ani bezpośrednio do niej rozpakowywać. Nowy update.sh aktualizuje następnie dokładnie instancję podaną jako argument.

Przygotowanie i kopia zapasowa

Przed każdą aktualizacją musi być dostępna pełna, zweryfikowana kopia zapasowa. Obejmuje ona co najmniej:

  • Pełny katalog instancji, w szczególności core/config/QisutuConfig.pm

  • var/secure/security.key

  • Baza danych

  • Własne dostosowania Apache, proxy, TLS i systemd

  • W razie potrzeby zewnętrzne załączniki lub podłączone lokalizacje pamięci

security.key jest niezbędny do odtworzenia zaszyfrowanych danych tajnych poczty, OAuth i uwierzytelniania dwuskładnikowego. Przechowuj go bezpiecznie wraz z odpowiednią kopią instancji.

Pobierz wydanie

cd /tmp
wget https://ftp.qisutu.de/qisutu-1.0.2.tar.gz
tar xzf qisutu-1.0.2.tar.gz
cd qisutu-1.0.2

Przy aktualizacji do późniejszej wersji należy oczywiście użyć adresu URL i nazwy katalogu tej wersji docelowej.

Uruchom aktualizację

Instancja produkcyjna:

sudo ./update.sh /opt/qisutu

Dodatkowa instancja:

sudo ./update.sh /opt/qisututest

Aktualizator odczytuje var/install/instance.conf i przed potwierdzeniem pokazuje ścieżkę instalacji, identyfikator instancji, ścieżkę WWW, bazę danych i usługę systemd. Przerwij, jeśli któraś z tych wartości nie należy do żądanej instancji.

Przebieg aktualizacji

Skrypt wykonuje między innymi następujące kroki:

  1. Sprawdzenie sum kontrolnych wydania, wersji, pliku schematu, składni Perla i rejestracji programów.

  2. Opcjonalne utworzenie dodatkowego zrzutu bazy danych. Wcześniej sprawdź wolne miejsce w /var/backups.

  3. Włączenie trybu konserwacji, zatrzymanie demona instancji i zablokowanie nowych pobrań poczty.

  4. Aktualizacja wszystkich plików programu zarządzanych przez wydanie; nowe pliki są dodawane, a niepublikowane już pliki zarządzane są usuwane.

  5. Zachowanie lokalnych plików instancji, konfiguracji, dzienników, danych wykonawczych i klucza bezpieczeństwa.

  6. Uzgodnienie schematu bazy danych i wykonanie wszystkich jeszcze niezarejestrowanych migracji SQL i Perl.

  7. Ponowne sprawdzenie stanu docelowego i uruchomienie demona.

Kontrola po aktualizacji

Po pomyślnym zakończeniu sprawdź:

systemctl status qisutu-daemon.service
journalctl -u qisutu-daemon.service --since today

Następnie zaloguj się, sprawdź wyświetlane wersje Qisutu i bazy danych oraz przetestuj co najmniej logowanie, widok zgłoszenia, pobieranie i wysyłanie poczty. Przy wielu instancjach kontrolę wykonuje się osobno dla każdej zaktualizowanej instancji.

Nieudana aktualizacja

Nie uruchamiaj skryptu wielokrotnie bez analizy przyczyny. Zapisz wynik i dzienniki, sprawdź wolne miejsce, dostęp do bazy danych, uprawnienia plików i stan usługi. Jeśli stan nie jest jednoznaczny, przywróć razem wcześniej zweryfikowaną pełną kopię katalogu programu i bazy danych.