XHTML.net

Technology talks by Loïc d’Anterroches

News, articles, PHP, scripts, XHTML/CSS, …

  1. Home
  2. Articles

Debian, Subversion et Apache 2

The 2004-08-22 at 10:48 by Loïc d'Anterroches filed under Articles.

Voici un article présentant l’installation de Apache 2 et Subversion sur un serveur utilisant Debian GNU/Linux en version stable. Cela implique l’utilisation de backports de ces applications.

Installation de Subversion et Apache 2

Si comme moi, vous n’utilisez qu’une version stable de Debian pour votre serveur, mais que vous voulez profiter de Subversion, successeur de CVS, il vous faut faire l’installation d’Apache 2 pour profiter de toutes les possibilités de Subversion.

Cette procédure d’installation est à destination de personnes ayant déjà installé un système fonctionnel en version stable de Debian, donc avec un minimum de connaissances de leur système.

Récupération des paquets

Il faut utiliser un backport d’Apache 2 et de Subversion, pour cela j’utilise Debian Backports, en rajoutant ces ligne à mes sources pour apt-get :

deb http://www.backports.org/debian/ woody apache2
deb http://www.backports.org/debian/ woody subversion

Notez que je ne récupère bien que 2 nouveaux paquets et que je n’utilise pas tous les paquets de backports. Utilisez un miroir proche de chez vous par accélérer les transferts.

Installation d’Apache 2

Une petite séance d’apt-get et vous avez Apache 2 d’installé. Dans mon cas, je garde Apache stable sur le port 80 et Apache 2 ne sera utilisé que pour servir le port 443 avec SSL. Il est intéressant de noter qu’Apache 2 supporte SSL directement là où il fallait récupérer une version spéciale avec Apache 1.3. Cela provient de l’assouplissement des règles d’export des systèmes d’encryption.

Pour forcer Apache 2 à n’écouter que le port 443 en mode SSL et ne pas rentrer en conflit avec Apache 1 qui est sur le port 80, il suffit de modifier le fichier /etc/apache2/ports.conf et mettre le port dedans :

Listen 443

Apache 2 ne va écouter que le port 443, celui de SSL.

La configuration de mod_ssl n’est pas très compliquée, la seule à faire c’est la génération du certificat qui correspond à votre serveur. Dans mon cas je fais un certificat signé par moi-même en suivant les étapes de la FAQ Apache-SSL.

Création du certificat

Création d’une clef et de la demande de certificat avec openssl. Quand il demande YOUR name donnez le nom de votre serveur par exemple votre.serveur.ssl

openssl req -new > new.cert.csr

En option, on peut enlever la phrase de mot de passe, cela permet de ne pas avoir à la donner au redémarrage d’Apache.

openssl rsa -in privkey.pem -out new.cert.key

et on convertit le tout en un certificat signé avec la clef qu’on vient de créer :

openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365

Au final on a 2 fichiers utilisables par Apache, le certificat new.cert.cert, et la clef qui a signé le certificat new.cert.key.

Note :
Je ne suis pas un expert avec Open SSL, veuillez donc bien vous documenter, car je peux raconter des bêtises.

Configuration de mod_ssl

Maintenant que vous avez la clef et le certificat, il faut configurer le serveur. Attention de bien configurer uniquement Apache 2 et pas Apache 1 si vous avez les deux sur votre système.

Dans le /etc/apache2/httpd.conf j’ai ajouté le nom du serveur :

ServerName votre.serveur.ssl

Ensuite on va modifier le site par défaut pour qu’il ne fonctionne qu’avec SSL. Faites l’édition de /etc/apache2/sites-enabled/default et modifiez le pour avoir quelque chose comme :

<IfModule mod_ssl.c>
<VirtualHost votre.serveur.ssl:443>
       NameVirtualHost votre.serveur.ssl:443
       SSLEngine on
       SSLCertificateFile /etc/apache2/ssl/new.cert.cert
       SSLCertificateKeyFile /etc/apache2/ssl/new.cert.key
 ....
</VirtualHost>
</IfModule>

Il est conseillé de faire un chmod 400 sur le fichier /etc/apache2/ssl/new.cert.key pour éviter des accès non voulus…

Il ne manque que le chargement du module mod_ssl. Pour cela il faut ajouter des liens symboliques dans /etc/apache2/mods-enabled/

# ln -s /etc/apache2/mods-available/ssl.conf
# ln -s /etc/apache2/mods-available/ssl.load

Et maintenant si vous faites un joli /etc/init.d/apache2 start vous avez un serveur SSL foncionnel.

Installation de Subversion

Encore une petite séance apt-get install.

apt-get install subversion libapache2-svn subversion-tools

Une petite lecture du livre de Subversion devrait aussi vous aider. Suivez simplement les instructions du Quick start pour la création de votre premier projet, puis ensuite le guide pour donner accès à Apache

Les packages debian modifient directement la liste des modules chargés dans /etc/apache2/mods-enabled/ donc pas besoin de le faire. Il faut simplement modifier la configuration du module de subversion dav_svn.conf pour qu’il corresponde à votre configuration. Voici le contenu dans mon cas, avec quelques explications :

<Location /svn>
#Quand le client va accéder à /svn l'URL sera pris en charge
#par les directives d'ici, donc par subversion 

  #Chargement du module subversion 
  DAV svn
  #Chemin de votre dépôt 
  SVNPath /var/lib/svn/repository

  #Ici on demande une authentification avec mot de passe
  #utilisez htpasswd2 pour créer le fichier
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  #Ici on demande l'authentification que pour les opérations
  #d'écriture sur le dépôt.
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

Après il ne faut pas oublier de donner accès aux fichiers du dépôt à Apache. Donc il faut modifier le fichier sites-enabled/default et ajouter les droits d’accès.

<Directory /var/lib/svn/repository>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None

     Order allow,deny
     allow from all
</Directory>

Je fais toutes les opérations avec subversion en utilisant le même utilisateur que mon serveur web. Cela me permet d’être certain que le serveur pourra ensuite accéder aux fichiers de subversion.

Et maintenant ? Et bien si vous accédez à votre serveur, vous pouvez avoir quelque chose comme :

Capture d'écran de Subversion via Apache

Ensuite pour profiter pleinement de votre dépôt subversion, vous pouvez installer un logiciel comme Trac que la pub raconte comme A minimalistic web-based project management tool, associating version control, bug tracking and text content in effective ways. et les utilisateurs aussi. À tester…

Remarques et commentaires sont les bienvenus.


Comments from readers

Malick25 said:

Bonjour,
Existe t il une configuration particulière afin d'activer le verrous automatiquement sur un fichier lorsqu'un autre utilisateur svn est déjà entrain de travailler là dessus?
Merci !!

Voice your ideas

It is painless and I try not to kill electrons in the process.


Your email is required but will not be shared nor displayed.


Do you think your comment will force me to write even better stuff next time? If so, you simply rock.


Logo of Plume CMS