Update

Een nieuwe release wordt altijd in een aparte map uitgepakt. Deze mag niet over de bestaande installatie worden gekopieerd of daar direct worden uitgepakt. Het nieuwe update.sh werkt daarna precies de als argument opgegeven instantie bij.

Voorbereiding en back-up

Voor elke update moet een volledige, gecontroleerde back-up beschikbaar zijn. Deze omvat ten minste:

  • De volledige instantiemap, met name core/config/QisutuConfig.pm

  • var/secure/security.key

  • De database

  • Eigen Apache-, proxy-, TLS- en systemd-aanpassingen

  • Indien nodig externe bijlagen of gekoppelde opslaglocaties

security.key is onmisbaar voor het herstellen van versleutelde e-mail-, OAuth- en tweefactorgeheimen. Bewaar deze beschermd samen met de bijbehorende instantieback-up.

Release downloaden

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

Bij een update naar een latere versie moeten vanzelfsprekend de URL en mapnaam van die doelversie worden gebruikt.

Update starten

Productie-instantie:

sudo ./update.sh /opt/qisutu

Extra instantie:

sudo ./update.sh /opt/qisututest

De updater leest var/install/instance.conf en toont vóór bevestiging het installatiepad, de instantie-id, het webpad, de database en de systemd-service. Breek af als een van deze waarden niet bij de gewenste instantie hoort.

Updateverloop

Het script voert onder meer de volgende stappen uit:

  1. Controleren van releasechecksums, versies, schemabestand, Perl-syntaxis en programregistratie.

  2. Optioneel maken van een extra databasedump. Controleer vooraf de vrije ruimte onder /var/backups.

  3. Activeren van onderhoudsmodus, stoppen van de instantiedaemon en blokkeren van nieuwe e-mailophaalacties.

  4. Bijwerken van alle door de release beheerde programmabestanden; nieuwe bestanden worden toegevoegd en niet meer gepubliceerde beheerde bestanden verwijderd.

  5. Behouden van lokale instantiebestanden, configuraties, logboeken, runtimegegevens en beveiligingssleutel.

  6. Vergelijken van het databaseschema en uitvoeren van alle nog niet geregistreerde SQL- en Perl-migraties.

  7. Doelstatus opnieuw controleren en daemon starten.

Nacontrole

Controleer na succesvolle afronding:

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

Meld u daarna aan, controleer de weergegeven Qisutu- en databaseversie en test ten minste aanmelden, ticketweergave, e-mail ophalen en e-mail verzenden. Bij meerdere instanties wordt deze controle voor elke bijgewerkte instantie afzonderlijk uitgevoerd.

Mislukte update

Voer het script niet herhaaldelijk uit zonder oorzaakanalyse. Bewaar de uitvoer en logboeken en controleer vrije ruimte, databasetoegang, bestandsrechten en servicestatus. Als de toestand niet duidelijk is, herstel dan de eerder gecontroleerde volledige back-up van programmamap en database samen.