# Apache 2 - SVN

## SVN

### SVN Installation

\- Subversion installieren:

```
apt-get update
apt-get install subversion
```

### Speicherort für Repositories anlegen

\- Ordner erstellen wo alle Repositories gespeichert werden sollen

```
# mkdir /var/svn-repos/
```

\- Rechte für Apache2 vergeben

```
chown www-data.www-data /var/svn-repos
```

### SVN Repository erstellen

```
svnadmin create /var/svn-repos/repo123
```

### Dateirechte für Apache2 für Repository vergeben

```
 chown -R www-data:www-data /var/svn-repos/repo123
```

## Apache 2 Vorbereitungen

### Apache SVN Modul installieren

```
apt-get install libapache2-svn
```

### Apache Module aktivieren

```
a2enmod dav
a2enmod dav_svn
a2enmod authz_svn
```

### Benutzerverzeichnis anlegen

\- nun legen wir für den Webzugriff unsere User an

#### Benutzerverzeichnis erstmalig anlegen mit der Option -c

Achtung! Bestehende Nutzer werden dabei überschrieben! Das ist zum Anlegen des Verzeichnisses, nicht eines neuen Users!

```
htpasswd -c /etc/apache2/dav_svn.passwd user1
```

\- danach müsst ihr ein Passwort festlegen

#### Weitere Benutzer in das Benutzerverzeichnis anlegen

```
htpasswd /etc/apache2/dav_svn.passwd user2
```

\- danach müsst ihr ebenfalls ein Passwort festlegen

Mit diesen Benutzern könnt ihr jetzt arbeiten und Zugriffe steuern.

### Accessfile anlegen

\- diese Datei beinhaltet die Regelungen welche User oder gruppe auf welche Repos oder Verzeichnisse zugreifen darf

\- diese Datei unter /etc/apache2 speichern

\- Beispiel: dav\_svn.accessfile

```
# Definitions of groups with users from operating system
[groups]
admins = user1,user2
testusers = user2

# Definitions of repositories

[user1:/]
user1 = rw
user2 = r

[user2:/]
user1 = r
user2 = rw

[test:/]
@testusers = rw
```

### Apache2 Konfiguration

Nun müsst ihr eine sog. VHOST Konfiguration anlegen und euren Ordner angeben, den wir am Anfang angelegt haben. In unserem Beispiel also `/var/svn-repos`.

Hier eine Beispiel Konfiguration:

```
<Location /svn>
        DAV svn
        SVNParentPath /var/svn-repos
        SVNListParentPath On

        AuthType Basic
        AuthName "SVN Authorization Realm"
        AuthUserFile /etc/apache2/dav_svn.passwd
        Require valid-user
        AuthzSVNAccessFile /etc/apache2/dav_svn.accessfile
</Location>
```

## Fertig!

Danach nochmal den Apache2 neustarten `/etc/init.d/apache2 restart` und ihr könnt euer SVN bequem für eure Teams einrichten ohne auf eurem Linuxsystem Unmengen an Usern anlegen zu müssen.