Subversion mit svnserve und apache: Teil 2

Durch Subversion-Repositories kann man sich auf verschiedenen Wegen bewegen. Nicht untypisch ist, Zugriff sowohl über svn+ssh:// und http(s):// parallel anzubieten. In Teil 1 wurde die Einrichtung des SVN-Repositories beschrieben. In diesem Teil folgt die Konfiguration des Apache Webservers für den Zugriff auf’s Repository.

Der Webserver und die entsprechenden Apache-Module sind schnell installiert:

apt-get install apache2 libapache2-mod-svn
a2enmod dav_svn authz_user


Die Konfigurationsdatei des mod_dav_svn wird auf ein Minimum geschrumpft:

# /etc/apache2/mods-available/dav\_svn.conf
<Location /svn>
  DAV svn
  SVNPath /home/subversion/SVN
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  Require valid-user
</Location\>


Natürlich müssen die eingetragenen Dateien auch existieren. Die Zugriffsrechte lassen sich einfach per Filesystem-ACLs managen:

su - subversion -c "touch \~subversion/SVN/conf/apache.passwd"
su - subversion -c "chmod 600 \
  ~subversion/SVN/conf/apache.passwd \
  ~subversion/SVN/conf/authz \
  ~subversion/SVN/conf/passwd"
ln ~subversion/SVN/conf/apache.passwd /etc/apache2/dav\_svn.passwd
ln ~subversion/SVN/conf/authz /etc/apache2/dav\_svn.authz
setfacl -m "user:www-data:r--" /etc/apache2/dav\_svn.authz /etc/apache2/dav_svn.passwd


Nach einem Neustart des Apachen sollte dem SVN-Zugriff per HTTP(S) nichts mehr im Wege stehen, außer dass es noch keinen User gibt, mit dem sich das überprüfen ließe:

apache2ctl restart
su - subversion -c "htpasswd \~/SVN/conf/apache.passwd testuser"


In Teil 3 folgt die Einrichtung des Subversion-Zuganges per SSH (svn+ssh://).

Referenz(en)