Un serveur de développement libre

Date: 14/10/2009 | Catégories: Developpement,Open-source | Tags: ,,

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-python trac python-pygments enscript

sudo a2enmod mod_python

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/ubik-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>

<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>

Puis on créé le trac pour notre projet:
trac-admin /var/www/dev/trac/projet initenv
Et on lui fixe les bons droits:
chown -R www-data:www-data /var/www/dev/trac/
Et voili, le site Trac de votre projet est maintenant accessible via l'URL: http://dev.mondomaine.com/trac/projet/
Il ne vous reste plus qu'a faire une jolie page Web d'accueil a mettre dans le répertoire /var/www/dev/ et à lancer votre campagne de communication !

Sources m'ayant aidées lors de la rédaction de ce billet:

  • Pingback: Launay Jérôme (jlaunay) 's status on Wednesday, 14-Oct-09 12:04:51 UTC - Identi.ca()

  • http://theclimber.fritalk.com theClimber

    Chouette tuto … mais quid si on veut faire un serveur avec :
    – serveur web : lighttpd
    – tracker : redmine
    – versionning : git

    Une idée d’inspiration pour un prochain tuto peut-être?

  • Nicolas cl

    Merci pour ce super tuto, clair et efficace, comme d’habitude
    j’ai utilise celui de centreon aussi : nickel

  • http://blog.lyrixx.info Greg

    Très bon tuto ! Il aurait pu faire un chapitre 4 pour ma suite de serveur @home ;) http://blog.lyrixx.info/tag/home/