Inhaltsverzeichnis
Apache Subversion
Apache Subversion ist eine Versionsverwaltung basierend z.B. auf der Nutzung des Apache HTTP Servers und erlaubt es verschiedenen Benutzern das gleichzeitige bearbeiten und verwalten von Versionen von Dateien und Dateistrukturen, wie z.B. ganzen Projekten.
Voraussetzungen
Als Voraussetzung für die Installation von Apache Subversion sind folgende Komponenten erforderlich:
- Lauffähiger Web-Server z.B. Apache HTTP Server
- Zusätzliche Apache HTTP Server-Modul
- mod_dav_svn
Installation
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root
zu werden geben Sie bitte folgenden Befehl ein:
$ su - Password:
HINWEIS - Evtl. ist eine Version von subversion
bereits auf Ihrem System installiert, da diese von anderen im System befindlichen Komponenten bereits benötigt wurde !!!
Die Installation kann aus den Standard CentOS-Repositorys erfolgen und wird mit nachfolgendem Befehl durchgeführt:
# yum install subversion mod_dav_svn Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile 54 packages excluded due to repository priority protections Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package mod_dav_svn.x86_64 0:1.6.11-2.el6_0.3 set to be updated ---> Package subversion.x86_64 0:1.6.11-2.el6_0.3 set to be updated --> Processing Dependency: perl(URI) >= 1.17 for package: subversion-1.6.11-2.el6_0.3.x86_64 --> Processing Dependency: libneon.so.27()(64bit) for package: subversion-1.6.11-2.el6_0.3.x86_64 --> Running transaction check ---> Package neon.x86_64 0:0.29.3-1.2.el6 set to be updated --> Processing Dependency: libgnutls.so.26(GNUTLS_1_4)(64bit) for package: neon-0.29.3-1.2.el6.x86_64 --> Processing Dependency: libpakchois.so.0()(64bit) for package: neon-0.29.3-1.2.el6.x86_64 --> Processing Dependency: libproxy.so.0()(64bit) for package: neon-0.29.3-1.2.el6.x86_64 --> Processing Dependency: libgnutls.so.26()(64bit) for package: neon-0.29.3-1.2.el6.x86_64 ---> Package perl-URI.noarch 0:1.40-2.el6 set to be updated --> Running transaction check ---> Package gnutls.x86_64 0:2.8.5-4.el6 set to be updated --> Processing Dependency: libtasn1.so.3(LIBTASN1_0_3)(64bit) for package: gnutls-2.8.5-4.el6.x86_64 --> Processing Dependency: libtasn1.so.3()(64bit) for package: gnutls-2.8.5-4.el6.x86_64 ---> Package libproxy.x86_64 0:0.3.0-2.el6 set to be updated --> Processing Dependency: libproxy-bin = 0.3.0-2.el6 for package: libproxy-0.3.0-2.el6.x86_64 --> Processing Dependency: libproxy-python = 0.3.0-2.el6 for package: libproxy-0.3.0-2.el6.x86_64 ---> Package pakchois.x86_64 0:0.4-3.2.el6 set to be updated --> Running transaction check ---> Package libproxy-bin.x86_64 0:0.3.0-2.el6 set to be updated ---> Package libproxy-python.x86_64 0:0.3.0-2.el6 set to be updated ---> Package libtasn1.x86_64 0:2.3-3.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mod_dav_svn x86_64 1.6.11-2.el6_0.3 updates 78 k subversion x86_64 1.6.11-2.el6_0.3 updates 2.3 M Installing for dependencies: gnutls x86_64 2.8.5-4.el6 base 343 k libproxy x86_64 0.3.0-2.el6 base 39 k libproxy-bin x86_64 0.3.0-2.el6 base 8.1 k libproxy-python x86_64 0.3.0-2.el6 base 8.2 k libtasn1 x86_64 2.3-3.el6 base 238 k neon x86_64 0.29.3-1.2.el6 base 119 k pakchois x86_64 0.4-3.2.el6 base 21 k perl-URI noarch 1.40-2.el6 base 117 k Transaction Summary ================================================================================ Install 10 Package(s) Upgrade 0 Package(s) Total download size: 3.2 M Installed size: 14 M Is this ok [y/N]: y Downloading Packages: (1/10): gnutls-2.8.5-4.el6.x86_64.rpm | 343 kB 00:00 (2/10): libproxy-0.3.0-2.el6.x86_64.rpm | 39 kB 00:00 (3/10): libproxy-bin-0.3.0-2.el6.x86_64.rpm | 8.1 kB 00:00 (4/10): libproxy-python-0.3.0-2.el6.x86_64.rpm | 8.2 kB 00:00 (5/10): libtasn1-2.3-3.el6.x86_64.rpm | 238 kB 00:00 (6/10): mod_dav_svn-1.6.11-2.el6_0.3.x86_64.rpm | 78 kB 00:00 (7/10): neon-0.29.3-1.2.el6.x86_64.rpm | 119 kB 00:00 (8/10): pakchois-0.4-3.2.el6.x86_64.rpm | 21 kB 00:00 (9/10): perl-URI-1.40-2.el6.noarch.rpm | 117 kB 00:00 (10/10): subversion-1.6.11-2.el6_0.3.x86_64.rpm | 2.3 MB 00:00 -------------------------------------------------------------------------------- Total 10 MB/s | 3.2 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : libproxy-python-0.3.0-2.el6.x86_64 1/10 Installing : libproxy-0.3.0-2.el6.x86_64 2/10 Installing : libproxy-bin-0.3.0-2.el6.x86_64 3/10 Installing : pakchois-0.4-3.2.el6.x86_64 4/10 Installing : libtasn1-2.3-3.el6.x86_64 5/10 Installing : gnutls-2.8.5-4.el6.x86_64 6/10 Installing : neon-0.29.3-1.2.el6.x86_64 7/10 Installing : perl-URI-1.40-2.el6.noarch 8/10 Installing : subversion-1.6.11-2.el6_0.3.x86_64 9/10 Installing : mod_dav_svn-1.6.11-2.el6_0.3.x86_64 10/10 Installed: mod_dav_svn.x86_64 0:1.6.11-2.el6_0.3 subversion.x86_64 0:1.6.11-2.el6_0.3 Dependency Installed: gnutls.x86_64 0:2.8.5-4.el6 libproxy.x86_64 0:0.3.0-2.el6 libproxy-bin.x86_64 0:0.3.0-2.el6 libproxy-python.x86_64 0:0.3.0-2.el6 libtasn1.x86_64 0:2.3-3.el6 neon.x86_64 0:0.29.3-1.2.el6 pakchois.x86_64 0:0.4-3.2.el6 perl-URI.noarch 0:1.40-2.el6 Complete!
Konfiguration Webserver
Folgende Module müssen in die bestehende Apache-Webserver-Konfiguration in der Hauptkonfigurationsdatei des Apache HTTP Server –> /etc/httpd/conf/httpd.conf
noch geladen werden (nur relevanter Ausschnitt):
... # Tachtler # Subversion SVN-Repository modules LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so ...
Eine sehr elegante Art die Web-Anwendung in eine bestehende Apache-Webserver-Konfiguration einzubinden, ist die Definition eines Virtuellen Host in der Konfigurationsdatei /etc/httpd/conf.d/vhosts.conf
, die könnte wie folgt aussehen könnte:
# # svn.tachtler.net # <VirtualHost *:80> ServerAdmin webmaster@tachtler.net ServerName svn.tachtler.net ServerAlias www.svn.tachtler.net ServerPath / DocumentRoot "/var/www/html/svn/repositorys" <Location "/"> AuthType Basic AuthName "Subversion Repositorys" AuthUserFile /etc/svn-auth.conf Require valid-user # SVN DAV svn SVNPath /data/svn/repositorys </Location> ErrorLog logs/svn_error.log CustomLog logs/svn_access.log combined </VirtualHost>
WICHTIG - Folgende Konfigurationsdatei /etc/httpd/conf.d/subversion.conf
kann bei Nutzung eines Virtuellen Host umbenannt werden, was mit nachfolgendem Befehl durchgeführt werden kann, da diese NICHT benötigt wird:
# mv /etc/httpd/conf.d/subversion.conf /etc/httpd/conf.d/subversion.conf.orig
HINWEIS - Zu beachten sind hier, die Zeilen mit dem Inhalt:
<Location "/"> AuthType Basic AuthName "Subversion Repositorys" AuthUserFile /etc/svn-auth.conf Require valid-user # SVN DAV svn SVNPath /data/svn/repositorys </Location>
Bevor ein Start oder Neustart des Apache HTTP Server erfolgen kann, muss noch das DocumentRoot
-Verzeichnis für den den Virtuellen Host angelegt werden, was mit nachfolgendem Befehlen erfolgen kann:
# mkdir /var/www/html/svn
Anschließend müssen noch die richtigen Dateirechte für das soeben neu angelegte Verzeichnis gesetzte werden, was mit folgendem Befehl realisiert werden kann:
# chmod -R 750 /var/www/html/svn
Abschließend müssen noch die richtigen Besitzrechte für das neu angelegte Verzeichnis gesetzte werden, was mit folgendem Befehl realisiert werden kann:
# chown -R apache:apache /var/www/html/svn
Ein erneuter oder erster Start des Apache HTTP Server mit folgenden Befehl für eine erstmaligen Start
# service httpd start
oder einen erneuten Start des Apache HTTP Server mit folgendem Befehl
# service httpd restart
macht die oben beschriebenen Konfigurationen für den Apache HTTP Server wirksam.
Authentifizierung
Falls kein öffentliches und OHNE Zugangsbeschränkung Apache Subversion-Repository betrieben werden soll (wovon auch schon bei der –> Apache Subversion - Webserver Konfiguration ausgegangen wurde) wird ein Passwortschutz benötigt!
Passwort-Datei
Eine sehr einfache und für den Anfang schnell realisierbare Möglichkeit einen Zugriffsschutz auf ein Apache Subversion-Repository zu realisieren, ist die Authentifizierung gegen eine lokale Passwortdatei, welche allerdings NICHT im DocumentRoot
-Verzeichnis des Virtuellen Host erstellt werden sollte, sondern außerhalb dieses Verzeichnisses.
Es soll hier als Beispiel eine Passwort-Datei im Verzeichnis:
/etc
mit dem Namen
svn-auth.conf
erstellt werden.
Zum Erstellen UND Anlegen dieser Datei und eines Benutzers ist nachfolgender Befehl nötig:
# htpasswd -cm /etc/svn-auth.conf benjamin New password: Re-type new password: Adding password for user benjamin
HINWEIS - Um NUR weitere Benutzer der Passwort-Datei hinzuzufügen reicht nachfolgender Aufruf:
# htpasswd -m /etc/svn-auth.conf carla New password: Re-type new password: Adding password for user carla
Der Inhalt der Passwort-Datei sollte dann wie folgt aussehen:
# cat /etc/svn-auth.conf benjamin:$axr1$u4ufI...$byGDR7Fcd5gFzdGhHct4k. carla:$apg1$u4kfN/..$Bu1PRp3RWS7Wu.bDPVaKe0
HINWEIS - Die Einbindung in den Virtuellen Host wurde bereits hier –> Apache Subversion - Webserver Konfiguration beschrieben!
LDAP
Um eine Authentifizierung gegen LDAP zu realisieren, sind nachfolgende Änderungen in der Konfiguration des Virtuellen Host erforderlich (nur relevanter Ausschnitt):
... <Location "/"> # Tachtler - LDAP AuthType Basic AuthName "Subversion Repositorys" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL "ldaps://ldap.tachtler.net:636/dc=tachtler,dc=net?uid" AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net" AuthLDAPBindPassword "geheim" Require ldap-user benjamin carla DAV svn SVNPath /var/www/html/svn/repositorys </Location> ...
Repository: Konfigurieren
Um ein Apache Subversion-Repository zu konfigurieren, in dem nun Dateien verwaltet werden können, sind nachfolgende Befehle notwendig.
Dazu kann mit nachfolgendem Befehl in das Verzeichnis gewechselt werden, in dem das spätere Repository entstehen sill, hier z.B. /var/www/html/svn
:
# cd /var/www/html/svn
Erstellen eines Repositorys mit dem Namen repositorys
im Verzeichnis /var/www/html/svn
mit nachfolgendem Befehl:
# svnadmin create repositorys
HINWEIS - Es erfolgt keine Meldung!
Eine Überprüfung, ob das Verzeichnis jedoch erstellt wurde, kann mit nachfolgendem Befehl durchgeführt werden:
# ls -la /var/www/html/svn total 4 drwxr-xr-x 7 root root 4096 Aug 12 15:31 repositorys
Abschließend muss der Benutzer unter dem der Apache HTTP Server läuft wie folgt auf dieses Verzeichnis als Besitzer und Gruppe des Verzeichnisses eingetragen werden, was mit nachfolgendem Befehl realisiert werden kann:
# chown -R apache.apache /var/www/html/svn/repositorys
Der Aufruf von Apache Subversion kann nun mit nachfolgender URL aufgerufen werden.