SVN-Server installieren

Aus

Anleitung ist veraltert

Diese Anleitung ist veraltet. SVN ist jetzt als Zusatzpaket im DiskStation Manager verfügbar.

[ https://www.synology.com/de-de/dsm/packages/SVN]

SVN (Subversion) auf der Disk Station

Subversion ist eine Versionsverwaltungsoftware, die das gemeinsame Arbeiten an dem Code für einen Nutzer oder große Gruppen wesentlich vereinfacht. Subversion übernimmt hierbei das Versionsmanagement des Code.

Installation

Voraussetzungen

Netzwerkfreigabe und Synology-Benutzer anlegen

Im Disk Station Manager (Web GUI) eine neue Netzwerkfreigabe (gemeinsamen Ordner) Namens "svn" erstellen. Dabei wird von dem System der SVN Arbeitsordner /volume1/svn angelegt.

Einen neuen Synology Benutzer Namens "svnowner" ohne Passwort anlegen und ihm Schreib-Leserechte für das Verzeichnis "svn" freigeben. Für den Benutzer sollen am besten alle weiteren Freigaben versperrt bleiben. Zur Not müssen die Rechte nachträglich angepasst werden. Oft sind die falschen Rechte bei den Dateien und Verzeichnissen ein Grund dafür, dass der Server nicht startet.

Neus SVN Repository anlegen und konfigurieren

Einloggen mit Putty als root mit Adminpasswort.

Die Prozentzeichen (%...%) deuten auf eine Variable die Sie entsprechend Ihren Bedürfnissen jedoch ohne Prozentzeichen ersetzen sollen.

login as: root
password: %Adminpasswort%

Auf der DiskStation IPKG Pakete aktualisieren und das Paket SVN installieren.

$ ipkg update
$ ipkg install svn

Wechseln ins Verzeichnis /volume1/svn

cd /volume1/svn


Das SVN-Verzeichnis erstellen. "my_svn_repo" ist der Name von unserem neuen Repository. Wichtig - vollständigen Pfad angeben.

svnadmin create /volume1/svn/%my_svn_repo%

Benutzerrechte für das Verzeichnis /volume1/svn/%my_svn_repo% anpassen. Rechte mit dem Befehl "dir" überprüfen. Alle Dateien sollen dem User "svnowner" und der Gruppe "users" gehören.

chown svnowner:users -R %my_svn_repo%
dir

In das Verzeichnis /volume1/svn/%my_svn_repo% wechseln. Eventuell die Struktur wieder mit dem Befehl "dir" kontrollieren.

cd %my_svn_repo%
dir

In das Unterverzeichnis "conf" in unserem neu erstellten SVN-Repository wechseln. Wieder mit "dir" die Struktur kontrollieren.

cd conf
dir

Datei mit der Benutzerdatenbank "/volume1/svn/%my_svn_repo%/conf/passwd" mit dem Editor VI öffnen.

Bemerkung: Die Konfigurationsdateien können auch in dem freigegebenen Ordner "svn" mit einem Windows-Editor wie Notepad++ bearbeitet werden.

vi passwd

In die Datei 'passwd' zukünftige SVN-Benutzer eintragen. Im Klartext User und Passwort der Benutzer für das Repository eingeben.

%mein_svn_user1% = %meinpasswort123%
%mein_svn_user2% = %meinpasswort456%
karlheinz = geheim
...

Editiermodus verlassen, in den Befehlsmodus wechseln.

Taste "ESC"

Datei speichern und VI-Editor verlassen (write & quite).

:wq

Für begrenzte Schreib/Leserechte der Datei "passwd" sorgen.

chmod 600 passwd

Konfigurationsdatei des neuen SVN Repository "/volume1/svn/%my_svn_repo%/conf/svnserve.conf" mit dem Editor VI anpassen.

vi svnserve.conf

Editor VI in den Editiermodus umschalten.

i

Folgendes auskommentieren bzw. ergänzen:

  1. Rechte für anonyme Benutzer einschränken.
  2. Angemeldeten Benutzern den Zugang erlauben.
  3. Bezeichnung der Passwortdatei in der die Benutzer aufgelistet sind.
  4. Bezeichnung des Repository - optional
anon-access = none
auth-access = write
password-db = passwd
realm = Mein Repository

Editiermodus verlassen, in den Befehlsmodus wechseln.

Taste "ESC"

Datei speichern und VI-Editor verlassen (write & quite).

:wq

Das Repository ist nun einsatzbereit. Der Server muss noch konfiguriert werden.

Konfiguration des Servers

Einrichtung von inet-Daemon

Mit dem Editor VI die Datei /etc/inetd.conf bearbeiten:

vi /etc/inetd.conf

Folgende Zeile einfügen

svn stream tcp nowait svnowner /opt/bin/svnserve svnserve -i -r /volume1/svn

Speichern und schließen:

: wq

Datei "services" anpassen

Mit dem Editor VI die Datei /etc/services bearbeiten:

vi /etc/services

Am Ende folgende Zeilen einfügen:

svn             3690/tcp                        #Subversion
svn             3690/udp                        #Subversion

Speichern und schließen:

: wq

Neustart

Nach der Installation ist ein Neustart der DiskStation erforderlich. Das geht manuell per WebGUI oder mit dem Befehl:

reboot

SVN auf Arbeitscomputer aufrufen

Am besten geht das mit dem Programm Tortoise. Es ist ein mächtiges Werkzeug, ist kostenlos und kann einfach runterladen und auf den Arbeitscomputer installieren werden.

Nach dem Tortoise auf Ihrem Arbeitscomputer installiert ist kann man per Rechtsklick auf dem Desktop oder Ordner das Kontextmenü aufrufen und dort den Punkt "SVN Checkout" aufrufen.

Der SVN-Pfad den man eingeben muss lautet folgendermaßen:

svn://%ip_von_DS%/%my_svn_repo%

Man wird nach dem Benutzernamen und Passwort gefragt. Hier geben Sie den Benutzernamen denn Sie in der Datei mit der Benutzerdatenbank /volume1/svn/%my_svn_repo%/conf/passwd eingetragen haben. Anschließend wird der Ordner an der entsprechenden Stelle erzeugt.

Nun kann man mit dem SVN Repository arbeiten. Ihr könnt die Dateien in den Ordner hineinpacken und mit dem Rechtsklick auf Datei oder Ordner und dem Kontextmenu "SVN übertragen" die Dateien auf den Server hochladen oder mit "SVN aktualisieren" herunterladen.

SVN Repository löschen

Wird ein SVN Repository nicht mehr benötigt kann es mit dem einfachen Befehl "rm -r %my_svn_repo%" gelöscht werden. Das Löschen über die Netzwerkfreigabe reicht ebenfalls aus.

In das SVN Verzeichnis wechseln. Verzeichnisstruktur mit "dir" kontrollieren. Nicht mehr benötigtes Repository löschen.

cd /volume1/svn
dir
rm -r %my_svn_repo%"

Mit dem SVN Repository auf einen anderen Ort umziehen

Beim Systemwechsel, Neuinstallation der DiskStation OS ist es notwendig das Repository zu sichern und wieder neu einzuspielen.

Mit dem Befehl "svnadmin dump..." wird eine Kopie des SVN Repositorys erstellt. Bei diesem Beispiel wird die Dump-Datei im vorher freigegebenen Ordner "public" gespeichert.

svnadmin dump /volume1/svn/%my_svn_repo% > /volume1/public/%my_svn_repo%.dump

Wiederherstellen auf dem neuen Ort geht mit dem Befehl "load". Das Ziel SVN Repository "my_svn_repo" muss bereits existieren.

svnadmin load /volume1/svn/%my_svn_repo% < /volume1/public/%my_svn_repo%.dump

WebSVN installieren

Aktuelle Version von WebSVN herunterladen und in den Ordner /web/websvn entpacken. Es wird empfohlen die Datei INSTALL.TXT durchzulesen. bei der Version 2.3.2 liegt die unter "/doc/install.html". Damit die Anwendung gestartet werden kann muss die Konfigurationsdatei angelegt werden. Dafür im Ordner /include eine Kopie der Datei distconfig.php anlegen und in config.php umbenennen.

Die Datei /web/websvn/include/config.php wie folgt ergänzen:

1. Folgende Zeile hinzufügen ( SVN läuft im Ordner /opt/bin).

$config->setSVNCommandPath('/opt/bin');

2. SVN Repository hinzufügen (etwa bei der Zeile 70). Es können mehrere Repositorys untereinander eingetragen werden.

$config->addRepository('Mein repository','file:///volume1/svn/%my_svn_repo%');

Weitere Einstellungen in der Datei nach Bedarf ändern.

Damit WebSVN den Server erreichen kann müssen die PHP Konfigurationsdateien angepasst werden. Sonst beim Aufruf der Adresse http://%ip_von_DS%/websvn/ bekommt man die Fehlermeldung mit open_basedir.

In der Datei /usr/syno/etc/php.ini den eintrag safe_mode_execdir entfernen.

# WebSVN
# safe_mode_exec_dir = /usr/syno/bin
safe_mode_exec_dir =

Unter DSM 3.0 muss der Eintrag "open_basedir, PHPINI_BASEDIR_DEF" in der Datei /usr/syno/etc/php/user-setting.ini erfolgen (Nicht getestet, Sehe http://forum.synology.com/wiki).

Da DSM 2.3 die Datei php.ini bei dem Start überschreibt muss der Eintrag PHPINI_BASEDIR_DEF im Skrips /usr/syno/etc/rc.d/S97apache-user.sh geänder werden.

# WebSVN
# PHPINI_BASEDIR_DEF="/usr/bin/php:/usr/syno/synoman:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:${PHPINI_BASEDIR_SERV}"
PHPINI_BASEDIR_DEF="/usr/bin/php:/opt/bin:/usr/syno/synoman:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:${PHPINI_BASEDIR_SERV}"

Apache neu starten.

/usr/syno/etc/rc.d/S97apache-user.sh restart


Nun kann man das angelegte Repository unter der Adresse öffnen:

http://%ip_von_DS%/websvn/

Probleme und Bemerkungen der User

Einmaliges Starten des Servers, geht bei Neustart verloren. Auf Konsole aufrufen:

svnserve -d -r %my_svn_repo%

Start des SVN-Servers bei Systemstart:

Nach dieser Anleitung vorgehen und in das eigene Bootscript obigen Code einfügen.

Vorbemerkung: SVN ist erfahrungsgemäß recht ressourcenhungrig. Darum ist es sinnvoller den SVNserver-Daemon nicht die ganze Zeit am Laufen zu haben, sondern nur zu starten, wenn er benötigt wird. Das funktioniert unter Linux/Unix mit dem inet-Daemon. (...kann ich nicht bestätigen)

Bei mir funktionierte der Start mittels inetd nicht auf Anhieb. Das Problem wurde anscheinend auch hier beschrieben. Es half den inet-Daemon neu zu starten:

/usr/syno/etc/rc.d/S03inetd.sh stop
/usr/syno/etc/rc.d/S03inetd.sh start

Links