SoSci Survey umziehen

Diese Anleitung richtet sich an Betreiber einer lokalen Instanz (Installation) von SoSci Survey. Die Anleitung beschreibt, wie man eine Installation von SoSci Survey mit allen Befragungsprojekten von einem Server auf einen anderen Server umzieht.

Hinweis: Es geht hier nicht um den Umzug eines Befragungsprojekts, dazu s. Befragungsprojekt kopieren oder umziehen

Eine Instanz von SoSci Survey besteht aus folgenden Komponenten:

Für den Umzug auf einen anderen server gehen Sie wie folgt vor.

  1. Bereiten Sie den neuen Server vor.
    1. Die Prozesse für den Webserver sollten funktionieren und die Konfiguration für Apache, nginx, IIS o.ä. sollte abgeschlossen sein.
    2. Erstellen Sie eine Datei test.html mit beliebigem Inhalt im Wurzelverzeichnis für SoSci Survey, und testen Sie, ob diese Datei über die neue URL mit dem Anhang /test.html im Browser via HTTPS aufgerufen werden kann (zum Beispiel https://www.beispiel-neuer-server.de/test.html)
    3. Datenbank-System eingerichtet sein, und es sollte eine Datenbank für SoSci Survey inkl. zugehörigem Datenbank-Benutzer vorbereitet sein, aber noch ohne Tabellen.
    4. Sofern SoSci Survey E-Mails direkt über den Server (sendmail) verschickt, sollte auch dies korrekt konfiguriert werden. Der Versand über SMTP ist in aller Regel besser zu warten.
  2. Ein gesonderter Nutzer auf dem alten Server (im Beispiel transfer) erliechert die Übertragung der Dateien.
  3. Sperren Sie auf dem alten Server die Instanz von SoSci Survey, damit während des Umzugs keine Änderungen an Fragebögen und kein Ausfüllen von Fragebögen möglich ist.
    1. Server-VerwaltungServer-WartungServer sperren
    2. Bei der Sperrung wird der Cache automatisch geleert.
  4. Kopieren Sie das Verzeichnis von SoSci Survey auf den neuen Server, am besten mittels rsync und scp, alternativ als .tar.gz packen und diese Datei per SFTP kopieren.
    1. Tipp: Um die Downtime zu minimieren, können Sie die Synchronisation auch vor dem Sperren des Servers laufen lassen, und danach noch einmal. rsync kopiert beim zweiten Aufruf nur noch die geänderten Daten.
    2. Unten finden Sie ein Code-Beispiel mit rsync für einen extra angelegten Linux-Nutzer transfer
  5. Datenbank übertragen (Beispiel-Code siehe unten)
    1. Erstellen Sie ein Datenbank-Dump
    2. Kopieren Sie das Datenbank-Dump auf den neuen Server, zum Beispiel mittels scp
    3. Laden Sie das Dump in die neue Datenbank
  6. Anpassen der URL in der Konfiguration
    1. Rufen Sie über den Webbrowser die URL auf, unter welcher SoSci Survey auf dem neuen Server erreichbar ist, und darin /admin/install.php (zum Beispiel https://www.beispiel-neuer-server.de/admin/install.php).
    2. Setzen Sie das Häkchen, dass Lizenz und URL zurückgesetzt werden sollen, und loggen Sie sich mit dem Administrator-Konto ein.
    3. Alternativ können Sie die Zeile $GLOBALS['oFb']['licence data'] = … aus der Datei system/config.php löschen.
  7. Wenn die Installationsroutine (admin/install.php) erfolgreich durchgelaufen ist, wird der Wartungmodus (Server sperren) automatisch beendet.

Bitte beachten Sie, dass der nachfolgende Code nur ein Beispiel ist. Für die Verwendung auf dem eigenen Server müssen sowohl Pfade als auch die Namen von Benutzern und/oder Gruppen angepasst werden.

# Zugriffsrechte für geschützte Verzeichnisse temporär anpassen
# (auf dem alten Server)
sudo chmod -R 750 /var/www/soscisurvey/files/protected
sudo chmod -R 750 /var/www/soscisurvey/system/keyring
 
# Synchronisation des Dateisystems ohne Cache und Sessions
# (auf dem neuen Server)
sudo rsync -av -e ssh --delete --exclude=/system/session/ --exclude=/system/cache/ --exclude=/view transfer@192.0.2.123:/var/www/soscisurvey/ /var/www/soscisurvey/
sudo rsync -av -e ssh --delete transfer@192.0.2.123:/var/www/sosci-log/ /var/www/sosci-log/
 
# Datenbank Dump erstellen
# (auf dem alten Server)
sudo mysqldump -usosci -p --databases soscisurvey --quick --single-transaction | gzip -9 > /home/transfer/transfer-database.sql.gz
 
# Dump auf dem neuen Server kopieren und einspielen
# (auf dem neuen Server)
scp -i ~/.ssh/id_ecdsa transfer@192.0.2.123:/home/transfer/transfer* /home/transfer
gunzip -c /home/transfer/transfer-database.sql.gz | mysql -u sosci -p soscisurvey
 
# Die Projektverzeichnisse müssen www-data gehören, damit PHP dort schreiben kann
# (auf dem neuen Server)
sudo chown -R www-data:www-data /var/www/soscisurvey
 
# Einige Verzeichnisse sind exklusiv www-data zugeordnet
# (auf dem neuen Server)
sudo chown -R www-data:www-data /var/www/soscisurvey/system/keyring
sudo chown -R www-data:www-data /var/www/soscisurvey/files
sudo chown -R www-data:www-data /var/www/soscisurvey/system
 
# FTP ist der Besitzer der Bibliotheken, aber die ganze www-data Gruppe hat Lesezugriff
# (auf dem neuen Server)
sudo chown -R www-ftp:www-data /var/www/soscisurvey/admin
sudo chown -R www-ftp:www-data /var/www/soscisurvey/inc
sudo chown -R www-ftp:www-data /var/www/soscisurvey/lib
sudo chown -R www-ftp:www-data /var/www/soscisurvey/images
sudo chown -R www-ftp:www-data /var/www/soscisurvey/internal
sudo chown -R www-ftp:www-data /var/www/soscisurvey/layout
sudo chown -R www-ftp:www-data /var/www/soscisurvey/modules
sudo chown -R www-ftp:www-data /var/www/soscisurvey/plugins
sudo chown -R www-ftp:www-data /var/www/soscisurvey/script
sudo chown -R www-ftp:www-data /var/www/soscisurvey/templates
 
# Zugriffsrechte wieder setzen
# (auf dem neuen Server)
sudo chmod -R u-x+rwX,g-xw+rX,o-rwx /var/www/soscisurvey
sudo chmod 770 /var/www/soscisurvey
sudo chmod -R u-x+rwX,go-rwx /var/www/soscisurvey/files/protected
sudo chmod -R u-x+rwX,go-rwx /var/www/soscisurvey/system/keyring