Serveur HTTP
Pour installer le serveur HTTP Apache, rien de plus simple:
$ sudo apt-get install apache2 libapache2-mod-php5
Notez qu'on prend aussi la gestion CGI PHP pour WebSVN.
Subversion
Pour installer subversion, il va falloir le compiler, les paquets Debian n'offrant pas la version 1.7.2 (série 1.5 au moment de la rédaction). Il nous faut d'abord la bibliothèque neon, pré-requis pour l'accès client car, une fois encore, la version debian étant insuffisante (0.27). Il faut donc récupérer la version 0.29 sur http://www.webdav.org/neon, puis:
$ tar xzvf neon-0.29.x.tar.gz $ cd neon-0.29.x $ ./configure $ make $ su -c 'make install'
Il se peut que la bibliothèque libxml2-dev-2.6.32 ne soit pas présente, ce qui engendrera une erreur de compilation :
$ sudo apt-get install libxml2-dev-2.6.32
Subversion proprement dit
Pré-requis
On commence par installer les pré-requis:
- sqlite3 pour la gestion interne de Subversion
- libapr1 et libaprutil1 pour les bibliothèques d'utilitaires d'apache
- apache2-prefork-dev pour apxs (nommé apxs2 d'où le paramètre ci-dessous) pour le chargement dynamique du module svn
Attention utiliser sqlite3 et pas sqlite
$ sudo apt-get install sqlite3 libapr1-dev libaprutil1-dev apache2-prefork-dev
Compilation
Récupérer l'archive tar.gz sur http://subversion.apache.org
Récupérer également l'archive sqlite3 suffisamment à jour sur http://www.sqlite.org/download.html : prendre sqlite-amalgamation-xxxxx.zip
Puis:
$ cd $SOURCES $ tar xzvf subversion-1.7.xx.tar.gz $ unzip sqlite-amalgamation-xxxx.zip $ mv sqlite-amalagation-xxxx subversion-1.7.xx/sqlite-amalgamation $ cd subversion-1.7.xx $ ./configure --with-apxs=/usr/bin/apxs2 $ make $ sudo make install
Note: Ne pas tenir compte de l'avertissement relatif à Berkeley DB
Bonus
- Hot-backup.py: ce script permet de faire des copies de sauvegarde des dépôts de source à chaque commit. Il se trouve dans tools/backup/hot-backup.py
- commit-email.pl: ce script permet d'envoyer un mail lorsqu'un commit est réalisé. Il se trouve dans contrib/hoot-scripts/
Attention, ce script est signalé comme déprécié et à remplacer par mailer.py
Configuration du serveur HTTP
Le fichier de configuration (site_svn) sera de la forme:
<VirtualHost *:80> servername subversion DocumentRoot /var/www DirectoryIndex index.html index.php DavLockDB /var/www/DavLockDB <Directory /> order deny,allow deny from all Dav off </Directory> <Location /projets/> Include /etc/apache2/sites-available/site_svn_auth.conf AuthUserFile /var/www/conf/perm.txt Dav svn SVNParentPath /var/www/depots SVNIndexXSLT "/svnindex.xsl" </Location> </VirtualHost>
- ce fichier sera dans /etc/apache2/sites-available/site_svn
- l'URL du dépôt sera http://subversion/projets/mon_projet
- le dépôt, sur le serveur, sera dans /var/www/depots
- les directives d'authentification seront dans /etc/apache2/sites-available/site_svn_auth.conf
- le fichier de droits en lecture, écriture sur le dépôt sera dans /var/www/conf/perm.txt
- le fichier XSL réalisant l'affichage dans le navigateur de l'arborescence du dépôt sera /var/www/svnindex.xsl
Le fichier de configuration site_svn_auth.conf pourra être de la forme suivant (authentification LDAP et htpasswd):
AuthName "Subversion" AuthType Basic AuthBasicProvider ldap file AuthUserFile /var/www/conf/utilisateurs.txt AuthLDAPURL "ldap://IP1 IP2/dc=domaine,dc=fr" Require valid-user
Le fichier identifiant/mot de passe pour les utilisateurs hors LDAP sera dans /var/www/conf/utilisateurs.txt
On active ensuite les modules nécessaires:
$ sudo a2enmod authnz_ldap $ sudo a2enmod dav_fs $ sudo a2enmod dav_lock $ sudo a2enmod dav_svn
On désactive le site par défaut et on active le site svn:
$ sudo a2dissite default $ sudo a2ensite site_svn
A ce stade, le serveur apache peut être lancé avec succès.
Lancement du serveur Web
On rédemarre le serveur (apache2ctl restart) et on vérifie qu'on obtient la ligne suivante dans /var/log/apache2/error.log:
Thu Dec 03 14:02:31 2009 notice Apache/2.2.9 (Debian) DAV/2 SVN/1.6.6 PHP/5.2.6-1+lenny3 with Suhosin-Patch configured -- resuming normal operations
Postfix
Nous allons maintenant installer un serveur de messagerie minimal afin de pouvoir relayer les mails vers les utilisateurs concernés. On installe postfix et on choisit système satellite.
$ sudo apt-get install postfix > système satellite > Nom de courrier: nom.domaine.fr, OK > Serveur relais SMTP: 192.168.0.2, OK
Pour tester, on peut utiliser:
$ /usr/sbin/sendmail -t adresse@mail.fr >To: adresse@mail.fr >From: moi >Subject: test
test .
Et voilà, à ce stade, on doit disposer d'un dépôt de source subversion à jour...