Owncloud Migration
Ansprechpartner |
Contents
Die Seite ist nicht mehr relevant, da wir vor langem schon auf Nextcloud umgestellt haben. Da ein Migrationsguide aber immer nützlich ist, lassen wir diese Seite mal stehen.
1. Ausgangslage
Der bisher separat betriebene owncloud Server soll in den neuen "All-in-One" Server integriert werden. Bisher lief der Cloud Server unter Dragonfly BSD, nun ist sein neues Zuhause ein Debian.
2. Arbeitsverzeichnis und Directory-Struktur
Das Owncloud Arbeitsverzeichnis liegt bei Debian unter /usr/share/owncloud.
Im Gegensatz zu den FreeBSD Varianten verteilt Debian die Verzeichnisse mit symbolischen Links. Hier die genaue Aufstellung:
lrwxrwxrwx 1 root root 24 Jan 2 17:00 backup -> /var/lib/owncloud/backup lrwxrwxrwx 1 root root 13 Jan 2 17:00 config -> /etc/owncloud lrwxrwxrwx 1 root root 22 Jan 2 17:00 data -> /var/lib/owncloud/data lrwxrwxrwx 1 root root 22 Jan 2 17:00 .htaccess -> /etc/owncloud/htaccess lrwxrwxrwx 1 root root 24 Jan 2 17:00 themes -> /var/lib/owncloud/themes
Vorteil dieser Aufteilung: Das Verzeichnis /usr/share/owncloud beinhaltet nur die reinen owncloud Systemdateien (ca 30m) und alle Nutzdaten liegen unter /var/lib/owncloud/data/.
3. Was wird übertragen?
Wir übertragen das owncloud Daten-Verzeichnis, den Datenbank-Dump und Teile der config.php Datei. Das ganze Spiel kann nur funktionieren wenn die Owncloud Versionen identisch sind. Hier ist es 5.0.14a.
4. Vorbereitungen
Debian Seite:
Apache abschalten
root@lug-in:/usr/share# service apache2 stop
5. Nutzdaten übertragen
Dragonfly BSD Seite:
Nutzdaten (inkl. Datenbank-Dump) vom BSD-Server übertragen (und Rechte anpassen):
dragon3# rsync -av --delete -e "ssh -i lug-in.wtf.ag_rsa" /usr/local/www/owncloud/data/ root@lug-in.wtf.ag:/var/lib/owncloud/data/ dragon3# scp -i fremd_keys/lug-in.wtf.ag_rsa /usr/local/www/postgresql_database_dump/oc_dump.out root@lug-in.wtf.ag:/var/lib/postgresql/
Nun haben allerdings alle Daten die falschen UID/GID's. Also müssen wir auf der Debian Seite nachbessern:
root@lug-in:~# chown -R www-data:www-data /var/lib/owncloud/data/ root@lug-in:~# chown postgres:postgres /var/lib/postgresql/oc_dump.out
6. Datenbank anpassen
Debian Seite:
Die BSD-Varianten verwenden den Datenbank-Admin-User pgsql, Debian nennt ihn postgres. Des weiteren sind in der Tabelle oc_storages die Verzeichnisse gespeichert in denen die einzelnen User Ihre Dateien liegen haben. Werden sie nicht an das neue Arbeitsverzeichnis /usr/share/owncloud/ angepasst "verschwinden" die Shares.
Also müssen wir im Datenbank-Dump eine Anpassung machen. vi kann das erledigen
root@lug-in:~# cd /var/lib/postgresql/ root@lug-in:/var/lib/postgresql# su postgres postgres@lug-in:/var/lib/postgresql# vi oc_dump.out
Wir setzten folgendes Kürzel innerhalb von vi ab
:%s/pgsql/postgres/g :%s/\/usr\/local\/www\/owncloud\//\/usr\/share\/owncloud\//g :%s/plpostgres/plpgsql/g
7. Datenbank einlesen
Die Datenbank muss nun gelöscht und wieder neu angelgt werden. Im nachfolgenden Beispiel heisst die Bank owncloud und der Datenbank-Admin auch owncloud.
Wir erzeugen einen Datei db_delete.sql mit folgendem Inhalt:
DROP DATABASE owncloud; CREATE DATABASE owncloud TEMPLATE template0 ENCODING 'UNICODE'; ALTER DATABASE owncloud OWNER TO owncloud ; GRANT ALL PRIVILEGES ON DATABASE owncloud TO owncloud ;
Und lassen die SQL-Befehle ausführen:
postgres@lug-in:/var/lib/postgresql# psql -f db_delete.sql # Datenbank löschen und neu erstellen postgres@lug-in:/var/lib/postgresql# psql -d owncloud -f oc_dump.out # Dump einspielen
8. config.php anpassen
Nun müssen wir aus der alten Config Datei noch ein paar Parameter herüberretten.Dafür kopieren wir uns zuerst die alte config.php.
Dragonfly BSD Seite:
dragon3# scp -i fremd_keys/lug-in.wtf.ag_rsa /usr/local/www/owncloud/config/config.php root@lug-in.wtf.ag:/usr/share/owncloud/config/config.php.dflybsd
Debian Seite:
Wir müssen die folgenden Parameter in unserer /usr/share/owcloud/config/config.php aus der alten config.php.dflybsd übernehmen:
'instanceid' => '78435affe753753', 'passwordsalt' => '**************', 'dbuser' => 'owncloud', 'dbpassword' => '**************',
Nun noch den Apache neustarten und fertig
root@lug-in:/var/lib/postgresql# service apache2 restart