Updates
Ab der Version 3 mit DB-Version 40 und höher können Updates per Skript automatisch ausgeführt werden.
Warnung
Vor allen Updates sollte immer ein aktueller Dump der Datenbank durchgeführt werden, um Datenverluste zu vermeiden.
Wichtig
Vorbereitung und Systemvorraussetzungen
Zur Ausführung der Datenbankupdates benötigt der Account (i.d.R. User gris
) entsprechende Berechtigungen. Insbesondere CREATE
und ALTER
müssen ihm erlaubt sein.
Beispiel (User ggfs. anpassen):
-- Alle Rechte entfernen
REVOKE ALL PRIVILEGES ON *.* FROM 'gris'@'%';
REVOKE GRANT OPTION ON *.* FROM 'gris'@'%';
-- Rechte neu setzen
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, INDEX, ALTER, LOCK TABLES, SHOW VIEW ON *.* TO 'gris'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Außerdem sind vor dem Update drei Änderungen in der Datei gris_init_settings.php
(falls vorhanden) nötig. Die Werte der jeweiligen Settings spielen dabei keine Rolle und sollten nicht verändert werden. Wichtig ist nur der Zusatz , true
.
// Roles that can be assigned multiple times
$init_settings->set_setting("organigram", "multiple_roles", "Mitarbeiter|Co-Abteillungsleitung|Co-Teamleitung", true);
// Default order for resourcetype groups separated by pipe (e. g. Publikation|Lehre|Vortrag|Gutachten|Sonstiges)
$init_settings->set_setting("resource", "default_type_order", "", true);
// Database version (according to the tag numbers in sql/gris_model_history.sql)
$init_settings->set_setting("database", "version", "40", true);
Um die Settings automatisch aktualisieren zu können, muss curl
installiert sein:
apt update
apt install curl
Schritte des Update-Skripts
git pull (nur beim ersten automatischen Update nötig, danach übernimmt das Skript die Aktualisierung des Codes)
DB aktualisieren, falls neue DB-Updates vorhanden (Version wird am Ende höher gesetzt)
Settings neu laden
Sprachtabellen neu erzeugen
Updateskript aufrufen:
cd /var/www/gris
-- Pull ist nur bei der ersten Ausführung des Skripts nötig
git pull
-- Update ausführen
./update.sh
Alternativ kann das Skript auch per Cron-Job automatisiert ausgeführt werden. Dabei sollte jedoch der oben angesprochene Dump ebenfalls vorher ausgeführt werden.
Troubleshooting
Sollten während des Updates Fehler auftreten, können diese meist in folgende Kategorien eingeteilt werden:
Fehlende Datei-Berechtigungen
Hat die Datei Ausführungsrechte?
Fehlende Datenbank-Berechtigungen
Der User gris
(bzw. der in den Settings eingetragene User) muss die oben beschriebenen Rechte für den lokalen Zugriff besitzen.
Synchronisierungsfehler mit dem GIT-Repository
Falls Dateien aus dem Repository lokal geändert wurden, ist ein Abgleich nicht direkt möglich. Um den Update dennoch durchführen zu können, sollte ein Stash durchgeführt werden:
cd /var/www/gris
-- Stash um lokale Daten zwischenzuspeichern
git stash