Apache Subversion: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
um Sicherung und Wiederherstellung eines Repositorys ergänzt
RoundCube (Diskussion | Beiträge)
K correct link
 
(20 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
Subversion befindet sich im Extra-Repository:
Subversion befindet sich im Extra-Repository:
  # pacman -S subversion
  # pacman -S subversion
== Svnserve ==
==SVN-Server einrichten==
=== Vorbereitung ===
Für die Einrichtung des SVN-Servers gibt es prinzipiell 2 Möglichkeiten:
* ''svnserve'' stellt einen einfachen Server-Daemon zur Verfügung. Dieser benutzt ein eigenes Protokoll, welches optional mittels SSH verschlüsselt werden kann. Vorteil ist die einfache Einrichtung. Nachteil ist die Speicherung von Passwörtern im Klartext im Dateisystem.
* ''Apache HTTP Server'' als SVN-Server. Diese Lösung bietet mehr Flexibilität, ist aber schwieriger einzurichten.
 
===Svnserve===
====Vorbereitung====
Für den Betrieb von '''svnserve''' ist es empfehlenswert, für Subversion einen gesonderten Nutzer samt Gruppe anzulegen:
Für den Betrieb von '''svnserve''' ist es empfehlenswert, für Subversion einen gesonderten Nutzer samt Gruppe anzulegen:
# groupadd svn
 
  # useradd -d /home/svn -m -U -s /bin/false -c "Subversion" svn
  # useradd -c "Subversion" -d /home/svn -g svn -m -s /bin/false svn
 
=== Anlegen der Repositories ===
(Erläuterung: Legt einen neuen Nutzer '''svn''' an, und erzeugt automatisch dessen Home-Verzeichnis und eine gleichnamige Gruppe)
Im Home-Verzeichnis des Nutzers '''svn''' wird nun ein Stammverzeichnis für alle Repositories angelegt:
 
====Anlegen der Repositorys====
Im Home-Verzeichnis des Nutzers '''svn''' wird nun ein Stammverzeichnis für alle Repositorys angelegt:
  # sudo -u svn mkdir /home/svn/repos
  # sudo -u svn mkdir /home/svn/repos
Dort können anschließend die Repositories angelegt werden:
Dort können anschließend die Repositories angelegt werden:
  # sudo -u svn svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME
  # sudo -u svn svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME
=== Nutzerrechte festlegen ===
====Nutzerrechte festlegen====
Die Nutzerrechte können für jede Repository einzeln in der Konfigurationsdatei <code>/home/svn/repos/REPO_NAME/conf/svnserve.conf</code> festgelegt werden. Als Rechtestufen können <code>read|write|none</code> verwendet werden. Dies geschieht durch das Auskommentieren der Zeile
Die Nutzerrechte können für jede Repository einzeln in der Konfigurationsdatei <code>/home/svn/repos/REPO_NAME/conf/svnserve.conf</code> festgelegt werden. Als Rechtestufen können <code>read|write|none</code> verwendet werden. Dies geschieht durch das Auskommentieren der Zeile
  [general]
  [general]
Zeile 26: Zeile 33:
  harry = foopassword
  harry = foopassword
  sally = barpassword
  sally = barpassword
=== Starten des Servers ===
====Starten des Servers====
Hierzu muss <code>/etc/conf.d/svnserve</code> entsprechend dem oben festgelegten Stammverzeichnis angepasst werden:
Hierzu muss <code>/etc/conf.d/svnserve</code> entsprechend dem oben festgelegten Stammverzeichnis angepasst werden:
  #
  #
Zeile 35: Zeile 42:
  SVNSERVE_USER="svn"
  SVNSERVE_USER="svn"
Anschließend den Server starten:
Anschließend den Server starten:
  # /etc/rc.d/svnserve start
  # systemctl start svnserve
Der Server-Daemon kann auch der [[rc.conf]] hinzugefügt werden:
Der Server-Daemon kann auch automatisch bei Systemstart geladen werden, dazu:
  DAEMONS = (... @svnserve)
  # systemctl enable svnserve
=== Test des Servers ===
 
====Test des Servers====
Ist alles korrekt eingerichtet, sollte folgender Test-Import in das Repository eine Meldung <code>"Revision x übertragen."</code> zurückgeben:
Ist alles korrekt eingerichtet, sollte folgender Test-Import in das Repository eine Meldung <code>"Revision x übertragen."</code> zurückgeben:
  $ cd /path/to/files
  $ cd /path/to/files
   
   
  $ svn import svn://domain.net/REPO_NAME -m "Import Test"
  $ svn import svn://domain.net/REPO_NAME -m "Import Test"
===Apache HTTP Server===
Voraussetzung ist ein installiertes Subversion und ein funktionsfähiger Apache HTTP Server mit installiertem SSL-Zertifikat.
====Repositories anlegen====
Zunächst sollte ein Repository-Verzeichnis angelegt werden:
# mkdir -p /srv/svn/repositorys
In diesem lassen sich nun die benötigten Repositorys anlegen:
# svnadmin create --fs-type fsfs /srv/svn/repositorys/REPO_NAME
====Apache HTTP Server einrichten====
Für den Zugriff auf die SVN-Repositorys wird dringend zur Verwendung von SSL geraten. Dazu sollte die Konfigurationsdatei '''/etc/httpd/conf/extra/subversion.conf''' mit folgendem Inhalt angelegt werden:
<Location /svn>
DAV svn
SVNParentPath /srv/svn/repositorys
SSLRequireSSL
SSLOptions +StrictRequire
AuthzSVNAccessFile /srv/svn/.svn-policy-file
AuthType Basic
AuthName "Subversion Repositorys"
AuthUserFile /srv/svn/.svn-auth-file
Satisfy Any
Require valid-user
</Location>
In der '''/etc/httpd/conf/httpd.conf''' sind folgende Einstellungen vorzunehmen:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
Include conf/extra/httpd-ssl.conf
Include conf/extra/subversion.conf
====Benutzer und Rechte festlegen====
Zunächst ist ein Nutzer samt Passwort anzulegen:
htpasswd -cs /srv/svn/.svn-auth-file USER_NAME
Weitere Nutzer können wie folgt hinzugefügt werden:
htpasswd -s /srv/svn/.svn-auth-file USER_NAME
Anschließend können die Rechte der Nutzer in der Datei '''/srv/svn/.svn-policy-file''' festgelegt werden:
[REPO_NAME:/]
USER_NAME = rw
====Apache HTTP Server neu starten====
Zuvor müssen noch die Rechte des SVN-Ordners gesetzt werden:
# chown -R http.http /srv/svn
Nun kann der Apache HTTP Server neugestartet werden:
# apachectl graceful
====Abschließender Test====
Sind alle vorhergehenden Schritte erfolgreich, sollte das Repository unter https://HOST_NAME/svn/REPO_NAME/ erreichbar sein.
== Wartung ==
== Wartung ==
=== Sicherung und Wiederherstellung eines Repositorys ===
=== Sicherung und Wiederherstellung eines Repositorys ===
Es ist empfehlenswert, in regelmäßigen Abständen ein Backup der Repositories auf einem physikalisch getrennten Medium anzulegen. Mit der folgenden Methode wird jeweils ein Repository gesichert. Sie muss für mehrere Repositories entsprechend wiederholt werden.
Es ist empfehlenswert, in regelmäßigen Abständen ein Backup der Repositorys auf einem physikalisch getrennten Medium anzulegen. Mit der folgenden Methode wird jeweils ein Repository gesichert. Sie muss für mehrere Repositorys entsprechend wiederholt werden.


Zuerst wird ein Dump angelegt. Dieser sollte sinnvoll benannt werden:
Zuerst wird ein Dump angelegt. Dieser sollte sinnvoll benannt werden:
  # sudo -u svn svnadmin dump /home/svn/repos/REPO_NAME > /path/to/dumps/REPO_NAME-20110101.dump
  # svnadmin dump /home/svn/repos/REPO_NAME > /path/to/dumps/REPO_NAME-20110101.dump


Diese Dumps können dann später in ein frisch angelegtes Repository eingespielt werden:
Diese Dumps können dann später in ein frisch angelegtes Repository eingespielt werden:
  # sudo -u svn svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME
  # svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME
   
   
  # sudo -u svn svnadmin load /home/svn/repos/REPO_NAME < REPO_NAME-20110101.dump
  # svnadmin load /home/svn/repos/REPO_NAME < REPO_NAME-20110101.dump
Wichtig ist hierbei das anschließende Setzen der Benutzerrechte:
Wichtig ist hierbei das anschließende Setzen der Benutzerrechte:
# chown -R svn.svn /home/svn/repos/REPO_NAME
  # chmod -R g+w /home/svn/repos/REPO_NAME/db
  # chmod -R g+w /home/svn/repos/REPO_NAME/db


Zeile 60: Zeile 121:
* [http://subversion.apache.org/ Offizielle Webseite] {{sprache|en}}
* [http://subversion.apache.org/ Offizielle Webseite] {{sprache|en}}


[[Kategorie:Netzwerk]]
[[Kategorie:Versionsverwaltung]]
 
[[en:Subversion]]

Aktuelle Version vom 14. Oktober 2020, 01:05 Uhr

Apache Subversion (SVN) ist ein Versionsverwaltungssystem für Dateien und Verzeichnisse. Grundlage des Systems ist ein zentrales Projektarchiv (Repository). In diesem Artikel soll neben der Installation von Subversion auf die Installation des einfachen SVN-Servers svnserve eingegangen werden.

Installation

Subversion befindet sich im Extra-Repository:

# pacman -S subversion

SVN-Server einrichten

Für die Einrichtung des SVN-Servers gibt es prinzipiell 2 Möglichkeiten:

  • svnserve stellt einen einfachen Server-Daemon zur Verfügung. Dieser benutzt ein eigenes Protokoll, welches optional mittels SSH verschlüsselt werden kann. Vorteil ist die einfache Einrichtung. Nachteil ist die Speicherung von Passwörtern im Klartext im Dateisystem.
  • Apache HTTP Server als SVN-Server. Diese Lösung bietet mehr Flexibilität, ist aber schwieriger einzurichten.

Svnserve

Vorbereitung

Für den Betrieb von svnserve ist es empfehlenswert, für Subversion einen gesonderten Nutzer samt Gruppe anzulegen:

# useradd -d /home/svn -m -U -s /bin/false -c "Subversion" svn

(Erläuterung: Legt einen neuen Nutzer svn an, und erzeugt automatisch dessen Home-Verzeichnis und eine gleichnamige Gruppe)

Anlegen der Repositorys

Im Home-Verzeichnis des Nutzers svn wird nun ein Stammverzeichnis für alle Repositorys angelegt:

# sudo -u svn mkdir /home/svn/repos

Dort können anschließend die Repositories angelegt werden:

# sudo -u svn svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME

Nutzerrechte festlegen

Die Nutzerrechte können für jede Repository einzeln in der Konfigurationsdatei /home/svn/repos/REPO_NAME/conf/svnserve.conf festgelegt werden. Als Rechtestufen können read|write|none verwendet werden. Dies geschieht durch das Auskommentieren der Zeile

[general]
auth-access = write
password-db = passwd

Dort kann auch allen anonymen Nutzern Schreib- oder Lesezugriff gewährt werden:

[general]
anon-access = read

Die Nutzer und Passwörter werden in /home/svn/repos/REPO_NAME/conf/passwd festgelegt:

[users]
harry = foopassword
sally = barpassword

Starten des Servers

Hierzu muss /etc/conf.d/svnserve entsprechend dem oben festgelegten Stammverzeichnis angepasst werden:

#
# Parameters to be passed to svnserve
#

SVNSERVE_ARGS="-r /home/svn/repos"
SVNSERVE_USER="svn"

Anschließend den Server starten:

# systemctl start svnserve

Der Server-Daemon kann auch automatisch bei Systemstart geladen werden, dazu:

# systemctl enable svnserve

Test des Servers

Ist alles korrekt eingerichtet, sollte folgender Test-Import in das Repository eine Meldung "Revision x übertragen." zurückgeben:

$ cd /path/to/files

$ svn import svn://domain.net/REPO_NAME -m "Import Test"

Apache HTTP Server

Voraussetzung ist ein installiertes Subversion und ein funktionsfähiger Apache HTTP Server mit installiertem SSL-Zertifikat.

Repositories anlegen

Zunächst sollte ein Repository-Verzeichnis angelegt werden:

# mkdir -p /srv/svn/repositorys

In diesem lassen sich nun die benötigten Repositorys anlegen:

# svnadmin create --fs-type fsfs /srv/svn/repositorys/REPO_NAME

Apache HTTP Server einrichten

Für den Zugriff auf die SVN-Repositorys wird dringend zur Verwendung von SSL geraten. Dazu sollte die Konfigurationsdatei /etc/httpd/conf/extra/subversion.conf mit folgendem Inhalt angelegt werden:

<Location /svn>
	DAV svn
	SVNParentPath /srv/svn/repositorys
	SSLRequireSSL
	SSLOptions +StrictRequire
	AuthzSVNAccessFile /srv/svn/.svn-policy-file
	AuthType Basic
	AuthName "Subversion Repositorys"
	AuthUserFile /srv/svn/.svn-auth-file
	Satisfy Any
	Require valid-user
</Location>

In der /etc/httpd/conf/httpd.conf sind folgende Einstellungen vorzunehmen:

LoadModule dav_module		modules/mod_dav.so
LoadModule dav_fs_module	modules/mod_dav_fs.so
LoadModule dav_svn_module	modules/mod_dav_svn.so
LoadModule authz_svn_module	modules/mod_authz_svn.so

Include conf/extra/httpd-ssl.conf
Include conf/extra/subversion.conf

Benutzer und Rechte festlegen

Zunächst ist ein Nutzer samt Passwort anzulegen:

htpasswd -cs /srv/svn/.svn-auth-file USER_NAME

Weitere Nutzer können wie folgt hinzugefügt werden:

htpasswd -s /srv/svn/.svn-auth-file USER_NAME

Anschließend können die Rechte der Nutzer in der Datei /srv/svn/.svn-policy-file festgelegt werden:

[REPO_NAME:/]
USER_NAME = rw

Apache HTTP Server neu starten

Zuvor müssen noch die Rechte des SVN-Ordners gesetzt werden:

# chown -R http.http /srv/svn

Nun kann der Apache HTTP Server neugestartet werden:

# apachectl graceful

Abschließender Test

Sind alle vorhergehenden Schritte erfolgreich, sollte das Repository unter https://HOST_NAME/svn/REPO_NAME/ erreichbar sein.

Wartung

Sicherung und Wiederherstellung eines Repositorys

Es ist empfehlenswert, in regelmäßigen Abständen ein Backup der Repositorys auf einem physikalisch getrennten Medium anzulegen. Mit der folgenden Methode wird jeweils ein Repository gesichert. Sie muss für mehrere Repositorys entsprechend wiederholt werden.

Zuerst wird ein Dump angelegt. Dieser sollte sinnvoll benannt werden:

# svnadmin dump /home/svn/repos/REPO_NAME > /path/to/dumps/REPO_NAME-20110101.dump

Diese Dumps können dann später in ein frisch angelegtes Repository eingespielt werden:

# svnadmin create --fs-type fsfs /home/svn/repos/REPO_NAME

# svnadmin load /home/svn/repos/REPO_NAME < REPO_NAME-20110101.dump

Wichtig ist hierbei das anschließende Setzen der Benutzerrechte:

# chown -R svn.svn /home/svn/repos/REPO_NAME

# chmod -R g+w /home/svn/repos/REPO_NAME/db

Weblinks