Umzug einer Installation unter GNU/Linux
In diesem Artikel beschreiben wir die generelle Vorgehensweise, um eine Installation von i-doit von einem GNU/Linux zu einem anderen umzuziehen. Der Umzug umfasst sowohl die Datenbanken, als auch die Dateien und Verzeichnisse.
Vorbereitungen und Annahmen#
Beide Systeme müssen auf der gleichen i-doit Version sein!
Es sind ein paar Dinge zu beachten, um einen möglichst reibungslosen Umzug zu gewährleisten:
- i-doit und optional installierte i-doit Add-ons sollten auf einem aktuellen Stand sein.
- Wir verändern das alte System nicht, um im Fall der Fälle schnell wieder in den Ursprungszustand zurückkehren zu können.
- Die gezeigten Befehle passen zu einem aktuellen Debian GNU/Linux und sollten an die entsprechende Umgebung angepasst werden. Blindes Ausführen der Befehle sollten vermieden werden.
Neues System vorbereiten#
Zunächst gilt es, das neue System so weit wie möglich vorzubereiten:
- Das neue Betriebssystem entspricht den Systemvoraussetzungen und ist auf einem aktuellen Stand.
- Auf dem neuen Betriebssystem sind die Systemeinstellungen konfiguriert worden.
- Gängige Sicherheitsmaßnahmen wurden durchgeführt.
Altes System außer Betrieb nehmen#
Das alte System sollte bereits während des Umzugs nicht mehr produktiv verwendet werden:
- Downtimes sind nervig - vor allem unerwartete. Die Benutzer von i-doit sollten vorab informiert worden sein, dass die Installation umzieht und in welchem Zeitraum sie nicht erreichbar ist.
- Automatisierte Zugriffe von Drittsystemen sollten deaktiviert werden.
- Cronjobs sollten ebenfalls deaktiviert werden. Hierzu reicht es meist, die Befehlszeilen auszukommentieren.
- Nach Sicherstellung der obigen Punkte sollte der Apache Webserver gestoppt werden:
1
sudo systemctl stop apache2.service
Dateien und Verzeichnisse umziehen#
-
Wir kopieren das gesamte Installationsverzeichnis von i-doit vom alten auf das neue System. Das Verzeichnis befindet sich in vielen Fällen unter /var/www/html/. Beispiel mit SSH, wobei i-doit im Verzeichnis /var/www/html/i-doit/ zu finden ist:
1 2 3 4
scp -r user@oldsystem:/var/www/html/i-doit/ /tmp/ scp -r /tmp/i-doit/ user@newsystem:/tmp/ ssh user@newsystem sudo -u www-data cp -r /tmp/i-doit/ /var/www/html/
-
Nach dem Kopieren sollte sichergestellt werden, dass die Dateisystemrechte richtig gesetzt sind. Der Apache Webserver benötigt Lese- und Schreibrechte auf das vollständige Installationsverzeichnis. Weitere Hinweise gibt der Artikel "Setup". Beispiel:
1 2 3 4
cd /var/www/html/i-doit/ sudo chown www-data:www-data -R . sudo find . -type d -name \* -exec chmod 775 {} \; sudo find . -type f -exec chmod 664 {} \;
-
Interne Caches speichert i-doit unterhalb des temp/-Verzeichnisses. Die Inhalte sollten komplett entfernt werden. Bei der ersten Verwendung von i-doit werden die Caches automatisch erstellt:
1
sudo rm -r temp/*
-
Es sollte kontrolliert werden, ob die Datei .htaccess kopiert wurde:
1
ls -lha /var/www/html/i-doit/.htaccess
Datenbanken umziehen#
-
i-doit benötigt mindestens 2 Datenbanken. Von jeder einzelnen sollte auf dem alten System ein Dump erstellt werden:
1 2
mysqldump -uroot -p idoit_system > /tmp/idoit_system.sql mysqldump -uroot -p idoit_data > /tmp/idoit_data.sql
*Wenn beim einspielen der Datenbank diese Fehlermeldung erscheint "Can't create table \idoit_data.\table_name (errno: 140 "Wrong create options")". Ist die Lösung dazu HIER zu finden
-
Diese Dumps kopieren wir auf das neue System:
1 2 3 4
scp user@oldsystem:/tmp/idoit_system.sql /tmp/ scp user@oldsystem:/tmp/idoit_data.sql /tmp/ scp /tmp/idoit_system.sql user@newsystem:/tmp/ scp /tmp/idoit_data.sql user@newsystem:/tmp/
-
Diese Dumps spielen wir im neuen System ein:
1 2 3 4 5 6
mysql -uroot -p CREATE DATABASE idoit_system; CREATE DATABASE idoit_data; exit mysql -uroot -p idoit_system < /tmp/idoit_system.sql mysql -uroot -p idoit_data < /tmp/idoit_data.sql
-
Beim ursprünglichen Setup von i-doit wurde ein MySQL-Benutzer erstellt (Standard: idoit). Dieser muss mit denselben Berechtigungen und demselben Passwort auf dem neuen System vorhanden sein. Dazu melden wir uns mit dem Superuser von MySQL an:
1
mysql -uroot -p
Nun führen wir die nötigen SQL-Befehle aus:
1 2 3
GRANT ALL PRIVILEGES ON idoit_system.* TO 'idoit'@'localhost' IDENTIFIED BY 'mypasswd'; GRANT ALL PRIVILEGES ON idoit_data.* TO 'idoit'@'localhost' IDENTIFIED BY 'mypasswd'; exit;
Für einen Test melden wir uns mit diesem Benutzer an:
1
mysql -uidoit -p
Wenn wir schon einmal dabei sind, können wir die Credentials für die Mandanten-Datenbanken überprüfen:
1 2
SELECT * FROM idoit_system.isys_mandator; exit;
Das obige Passwort für den Benutzer idoit sollte deckungsgleich mit den Angaben in der Datei /var/www/html/i-doit/src/config.inc.php sein.
Nachbereitung#
- DNS-Einträge, IP-Adressen, Hostnames etc. sollten im Nachgang angepasst werden, damit i-doit wie gewohnt erreichbar ist.
- Schnittstellen zu Drittsystemen können nun wieder aktiviert werden. Die Funktionen sollten geprüft werden.
- Cronjobs sollten wieder aktiviert und getestet werden.
- Backups sollten eingerichtet und getestet werden.
- Wenn auch die WebGUI wie gewohnt reagiert und alle Daten in i-doit augenscheinlich vorhanden sind, ist der Umzug erfolgreich verlaufen.