Un serveur de développement libre
Vous développez une application sous licence libre et vous souhaitez donc mettre les sources à disposition des Internautes sans pour autant être dépendant d'un fournisseur de service comme SourceForge ? Alors ce billet est fait pour vous...
Nous allons détailler l'installation d'un serveur de développement basée sur des logiciels libres:
- Serveur Web pour héberger le site de votre projet (Apache)
- Serveur SVN (Subversion)
- Serveur Trac pour le suivi des bugs, le recueil des demandes de nouvelles fonctions et la roadmap de votre projet
Allez zou, on entre directement dans le vif du sujet...
Installation du système d'exploitation
Peut importe l'OS, il faut juste que vous soyer à l'aise avec lui. Donc n'importe quel OS GNU/Linux, BSD ou Unix fera l'affaire (si tu demandes et Windows ? tu cliques sur le bouton Démarrer / Arrêter l'ordinateur et tu installes un vrai OS).
Personnellement, j'utilise pour illustrer ce billet une Ubuntu Serveur 8.04, l'installation se fera via le compte root et le nom de ma machine est dev.mondomaine.com.
Pour être sûr que votre serveur Ubuntu est à jour:
aptitude update
aptitude safe-upgrade
Installation du serveur Web
Tout commence par l'installation d'Apach et de son module SVN:
aptitude install apache2 libapache2-svn
Puis on désactive les sites par défaut (le fameux "It works!"):
sudo a2dissite default
/etc/init.d/apache2 reload
A ce stade, le serveur devrait vous renvoyer un message comme quoi aucun serveur virtuel n'est configuré ("[warn] NameVirtualHost *:80 has no VirtualHosts").
Nous allons donc créer le serveur virtuel du projet (libre à vous d'en créer autant que de besoins):
# vi /etc/apache2/sites-available/dev.mondomaine.com
<virtualHost *:80>
ServerName dev.mondomaine.com
ServerAdmin admin@mondomaine.com
DocumentRoot /var/www/dev/
ErrorLog /var/log/apache2/error.log
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</virtualHost>
On active le serveur virtuel dans la configuration d'Apache:
mkdir /var/www/dev
a2ensite dev.mondomaine.com
/etc/init.d/apache2 reload
On teste l'installation:
echo "OK" > /var/www/dev/index.html
Puis on ouvre un navigateur à l'URL: http://dev.mondomaine.com/
Installation du serveur SVN
On installe Subversion en suivant la procédure suivante (le projet sera donc stocké dans le répertoire /var/svn/projet, à modifier selon votre bon vouloir...).
On configure Apache pour qu'il puisse lire ce dépôt:
# vi /etc/apache2/mods-available/dav_svn.conf
<Location /svn>
DAV svn
SVNParentPath /var/svn
SVNListParentPath On
AuthType Basic
AuthName "Ubik Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
On créé un utilisateur privilégié qui aura les droits de commit sur le dépôt:
htpasswd -cs /etc/apache2/dav_svn.passwd nicolargo
Attention les prochain utilisateurs devront être créés avec la commande:
htpasswd -s /etc/apache2/dav_svn.passwd titi
Puis on redémarre le serveur:
sudo /etc/init.d/apache2 restart
Il est possible de tester l'installation en entrant l'URL suivante dans votre navigateur Web: http://dev.mondomaine.com/svn/projet/
La liste des dépôt devrait apparaitre.
Le dépôt SVN de votre projet est donc maintenant accessible via l'adresse: http://dev.mondomaine.com/svn/projet/
Lors d'un commit, un couple login/password sera demandé automatiquement (il faudra saisir les informations d'un utilisateur privilégié).
Installation du serveur Trac
On installe Trac:
aptitude install libapache2-mod-python2 trac python-pygments enscript
sudo a2enmod mod_python
PS: "aptitude install libapache2.4-mod-python2 trac" sous Ubuntu Janty 9.04
On ajoute la configuration suivante dans le fichier /etc/apache2/sites-available/dev.mondomaine.com (dans la balise VirtualHost):
<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/www/dev/trac
PythonOption TracUriRoot /trac
PythonOption PYTHON_EGG_CACHE /tmp
</Location>
<LocationMatch "/trac/[[:alnum:]]+/login">
AuthType Basic
AuthName "Trac Dev server"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>
trac-admin /var/www/dev/trac/projet initenv
chown -R www-data:www-data /var/www/dev/trac/
Sources m'ayant aidées lors de la rédaction de ce billet: