Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_subversion

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:

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.

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/apache_subversion.txt · Zuletzt geändert: 2012/07/24 23:23 von klaus