Installation d’un serveur subversion sur Ubuntu
Certes, on trouve plein de doc sur le sujet un peu partout, que ce soit sur le site de subversion, sur les sites de Ubuntu, ou des forums alternatifs. Et pourtant, j’ai quand même eu du mal à rassembler toutes les billes, car il existe plusieurs solutions (apache, svnserve), basées ou non sur SSL, avec différents moyens d’authentification, avec des procédures plus ou moins différentes suivant les OS, gérées en vhost ou non, …
Mon besoin: avoir un virtual host (https://svn.domaine.fr) dans lequel je peux y gérer plusieurs repository svn (https://svn.domaine.fr/projet1, etc…). Le tout hébergé sur un serveur Ubuntu 8.04 (Hardy).
J’ai finalement adopté la solution basée sur apache2, et ce fut plus simple que certaines manips que j’ai vu sur certains forums.
J’utiliserai l’arborescence suivante pour mes dépots svn:
/var---svn ; répertoire de base contenant tous les dépots
+-projet1 ; repository du projet 1
+-projet2 ; repository du projet 2
; etc...
Création des repositories subversion
Installer svn:
sudo apt-get install subversion
Création d’un répertoire qui contiendra tous les repositories:
mkdir /var/svn
Puis création d’un repository pour chaque projet:
svnadmin create /var/svn/projet1
Installation d’apache et SSL
sudo apt-get install apache2 openssl
Activer le mod ssl et créer un certificat (validité 1 an dans l’exemple ci-dessous):
sudo a2enmod ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 \
-out /etc/apache2/server.crt -keyout /etc/apache2/server.key
Répondre aux questions posées, voici un exemple de réponses:
FR
FRANCE
Bordeaux
Ma compagnie fictive
Idem
svn.domaine.fr
nom@mail.fr
Puis modifier les droits du certificat:
sudo chmod go-rwx /etc/apache2/server.key
Lien entre apache et svn
Il faut installer le mod dav_svn:
sudo apt-get install libapache2-svn
On n’éditera pas /etc/apache2/mods-available/dav_svn.conf, on mettra les réglages directement dans le fichier vhost afin de bénéficier de la clause ServerName (sinon les réglages svn seraient appliqués pour tous les vhosts).
Si on veut un accès protégé, il faut créer un utilisateur svn ‘toto’:
sudo htpasswd -cs /etc/apache2/dav_svn.passwd toto
Puis pour ajouter d’autres utilisateurs, remplacer ‘-cs’ par ‘-s’.
Modifier l’appartenance de certains répertoires pour qu’apache puisse y accéder:
sudo chown www-data:www-data /etc/apache2/dav_svn.passwd
sudo chown -R www-data:www-data /var/svn
Activer si ce n’est déjà fait le module dav_svn:
sudo a2enmod dav_svn
Créer ensuite un virtual host, dans mon exemple il s’agit de https://svn.domaine.fr. Editer le fichier /etc/apache2/sites-available/svn, puis y coller:
NameVirtualHost *:443
<VirtualHost *:443>
ServerName svn.domaine.fr
SSLEngine on
SSLCertificateFile /etc/apache2/server.crt
SSLCertificateKeyFile /etc/apache2/server.key
<Location / >
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
</VirtualHost>
(Les 4 dernieres directives servent à protéger l’accès. Les enlever pour un accès public).
Puis l’activer:
sudo a2ensite svn
Puis redémarrer apache:
sudo /etc/init.d/apache2 reload
Ignorer les warnings « Could not reliably determine etc… ». Par contre, si un message d’erreur concernant les ports apparait, éditer alors le fichier /etc/apache2/sites-enabled/000-default, et remplacer les ‘*’ par ‘*:80′ (2 occurences). S’il y a d’autres fichiers dans ce meme répertoire, appliquer la meme modif.
Et voilà !
Vous pouvez maintenant vous rendre avec votre navigateur à l’adresse suivante: https://svn.domaine.fr/projet1
Et pour créer de nouveaux repositories, il suffira juste de taper:
sudo svnadmin create /var/svn/nouveauprojet
sudo chown -R www-data:www-data /var/svn/nouveauprojet
Le navigateur vous proposera d’ajouter une exception pour le certificat de ce site.










Sur svn & co, tu trouveras des choses par là : http://www.unelectronlibre.info/tutoriels/#d-veloppement