Apache Subversion: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) K unkat |
K correct link |
||
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 16: | Zeile 16: | ||
(Erläuterung: Legt einen neuen Nutzer '''svn''' an, und erzeugt automatisch dessen Home-Verzeichnis und eine gleichnamige Gruppe) | (Erläuterung: Legt einen neuen Nutzer '''svn''' an, und erzeugt automatisch dessen Home-Verzeichnis und eine gleichnamige Gruppe) | ||
====Anlegen der | ====Anlegen der Repositorys==== | ||
Im Home-Verzeichnis des Nutzers '''svn''' wird nun ein Stammverzeichnis für alle | 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: | ||
Zeile 42: | Zeile 42: | ||
SVNSERVE_USER="svn" | SVNSERVE_USER="svn" | ||
Anschließend den Server starten: | Anschließend den Server starten: | ||
# | # systemctl start svnserve | ||
Der Server-Daemon kann auch | Der Server-Daemon kann auch automatisch bei Systemstart geladen werden, dazu: | ||
# 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: | ||
Zeile 56: | Zeile 57: | ||
====Repositories anlegen==== | ====Repositories anlegen==== | ||
Zunächst sollte ein Repository-Verzeichnis angelegt werden: | Zunächst sollte ein Repository-Verzeichnis angelegt werden: | ||
# mkdir -p /srv/svn/ | # mkdir -p /srv/svn/repositorys | ||
In diesem lassen sich nun die benötigten | In diesem lassen sich nun die benötigten Repositorys anlegen: | ||
# svnadmin create --fs-type fsfs /srv/svn/ | # svnadmin create --fs-type fsfs /srv/svn/repositorys/REPO_NAME | ||
====Apache HTTP Server einrichten==== | ====Apache HTTP Server einrichten==== | ||
Für den Zugriff auf die SVN- | 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> | <Location /svn> | ||
DAV svn | DAV svn | ||
SVNParentPath /srv/svn/ | SVNParentPath /srv/svn/repositorys | ||
SSLRequireSSL | SSLRequireSSL | ||
SSLOptions +StrictRequire | SSLOptions +StrictRequire | ||
AuthzSVNAccessFile /srv/svn/.svn-policy-file | AuthzSVNAccessFile /srv/svn/.svn-policy-file | ||
AuthType Basic | AuthType Basic | ||
AuthName "Subversion | AuthName "Subversion Repositorys" | ||
AuthUserFile /srv/svn/.svn-auth-file | AuthUserFile /srv/svn/.svn-auth-file | ||
Satisfy Any | Satisfy Any | ||
Zeile 86: | Zeile 87: | ||
Zunächst ist ein Nutzer samt Passwort anzulegen: | Zunächst ist ein Nutzer samt Passwort anzulegen: | ||
htpasswd -cs /srv/svn/.svn-auth-file USER_NAME | htpasswd -cs /srv/svn/.svn-auth-file USER_NAME | ||
Weitere Nutzer können | Weitere Nutzer können wie folgt hinzugefügt werden: | ||
htpasswd -s /srv/svn/.svn-auth-file USER_NAME | 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: | Anschließend können die Rechte der Nutzer in der Datei '''/srv/svn/.svn-policy-file''' festgelegt werden: | ||
Zeile 92: | Zeile 93: | ||
USER_NAME = rw | USER_NAME = rw | ||
====Apache HTTP Server | ====Apache HTTP Server neu starten==== | ||
Zuvor müssen noch die Rechte des SVN-Ordners gesetzt werden: | Zuvor müssen noch die Rechte des SVN-Ordners gesetzt werden: | ||
# chown -R http.http /srv/svn | # chown -R http.http /srv/svn | ||
Zeile 103: | Zeile 104: | ||
== Wartung == | == Wartung == | ||
=== Sicherung und Wiederherstellung eines Repositorys === | === Sicherung und Wiederherstellung eines Repositorys === | ||
Es ist empfehlenswert, in regelmäßigen Abständen ein Backup der | 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: | ||
Zeile 121: | Zeile 122: | ||
[[Kategorie:Versionsverwaltung]] | [[Kategorie:Versionsverwaltung]] | ||
[[en:Subversion | |||
[[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