Exhaustif.com
Contact Combattre la pyrale du buis
Exhaustif.com
Installer un serveur svn sous Debian Etch
Date de publication : samedi 8 mars 2008, dernière modification le : dimanche 9 mars 2008.

Pas à pas, comment partager son code source

  Installer un serveur svn sous Debian Etch

Installation sous Debian

Remarques :
- L’ensemble des manipulations utilisent des dépôts au format BDB (barkley database). Le format FSFS (système de fichier natif) n’est pas documenté ici.
- Le serveur est sous Debian Etch.

On installe svn :

aptitude install subversion

Création des dépôts, dans le cas présent, on crée un dépôt pour les sites web et un pour le code source des logiciels :

mkdir /home/svn
mkdir /home/svn/repo
svnadmin create --fs-type bdb /home/svn/repo/siteweb
svnadmin create --fs-type bdb /home/svn/repo/software
chown -R www-data:www-data /home/svn

On install apache et le module svn :

aptitude install apache2
aptitude install libapache2-mod-dav libapache2-svn
aptitude install libapache2-mod-svn

On remarquera le :

Enabling dav as a dependency
Module dav installed; run /etc/init.d/apache2 force-reload to enable.
Module dav_svn installed; run /etc/init.d/apache2 force-reload to enable.

à la fin, il reste donc à relancer apache2

/etc/init.d/apache2 force-reload

On édite le fichier par défaut du serveur :

vim /etc/apache2/sites-enabled/000-default

Et on y ajoute les répertoires /svnxxx

<VirtualHost *>
...
<Location /svn>
        DAV svn
        Require valid-user
        SVNParentPath /home/svn/repo
        AuthType Basic
        AuthName "Exhaustif Depot"
        AuthUserFile /home/svn/htpasswd
        AuthzSVNAccessFile /home/svn/access
</Location>
</VirtualHost>

Pour avoir un dépôt accessible en anonyme en lecture, on remplacera Require valid-user par

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>

Et on recharge la configuration

invoke-rc.d apache2 reload

Maintenant http://monserveur/svn_sites/ permet d’y accèder ... mais demande un mot de passe. On va donc configurer les droits d’accès.

On crée le fichier avec les mots de passe et on initialise un administrateur

htpasswd -cb /home/svn/htpasswd admin MotDePasseAdmin

On peut ensuite ajouter des utilisateurs (en enlevant le -c qui force la création du fichier

htpasswd -b /home/svn/htpasswd tonton MotDePasseDeTonton

On règle maintenant qui aura accès à quoi :

vim /home/svn/access
[groups]
admins = admin

[siteweb:/]
@admins = rw

[siteweb:/exhaustif]
tonton = rw

[software:/]
@admins = rw

Ce serveur n’aura pas d’accès anonyme, il faudra forcément un code pour y accéder.

L’adresse devient donc :

http://monserveur/svn/siteweb
http://monserveur/svn/software

Installation en SSL

On ajoute ssl à apache :

apt-get install libapache-mod-ssl

Et on l’active :

a2enmod ssl
invoke-rc.d apache2 force-reload

On ajoute le port 443 à écouter

vim /etc/apache2/ports.conf
Listen 80
Listen 443

On crée un nouveau certificat :

cd /etc/ssl/certs/
openssl req -new > exhaustif.com.csr

Commande pour "enlever" la phrase de mot de passe, afin de ne pas devoir la renseigner au prochain redémarrage d’Apache (optionnel) :

openssl rsa -in privkey.pem -out exhaustif.com.key

Enfin, création à proprement dit du certificat (.crt) et de la clef (.key) :

openssl x509 -in exhaustif.com.csr -out exhaustif.com.cert -req -signkey exhaustif.com.key -days 365
cd /etc/apache2/sites-available
vim default.ssl
NameVirtualHost *:443
<VirtualHost *:443>
       ServerAdmin webmaster@localhost

       DocumentRoot /var/www/
       <Directory />
               Options FollowSymLinks
               AllowOverride None
       </Directory>
       <Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
               # This directive allows us to have apache2's default start page
               # in /apache2-default/, but still have / go to the right place
               RedirectMatch ^/$ /apache2-default/
       </Directory>

       SSLEngine on
       SSLCertificateFile /etc/ssl/certs/exhaustif.com.cert
       SSLCertificateKeyFile /etc/ssl/certs/exhaustif.com.key
       CustomLog /var/log/apache2/ssl-access.log combined
       ErrorLog /var/log/apache2/ssl-error.log

<Location /svn>
       DAV svn
       Require valid-user
       SVNParentPath /home/svn/repo
       AuthType Basic
       AuthName "Exhaustif Depot"
       AuthUserFile /home/svn/htpasswd
       AuthzSVNAccessFile /home/svn/access
</Location>
</VirtualHost>

On active le fichier de conf du site en ssl :

a2ensite default.ssl

Et on recharge apache :

invoke-rc.d apache2 restart

et pour finir on teste avec firefox :

https://monserveur/

et avec svn :

https://monserveur/svn/siteweb

Sauvegarde

Il est important de bien sauvegarder son dépôt sur un autre serveur (ou au pire une clef usb) et ce de manière très régulière.

Pour réaliser un dump dans un seul fichier des dépôts :

svnadmin dump /home/svn/repo/siteweb > /home/svn/dump.siteweb.bdb
svnadmin dump /home/svn/repo/software > /home/svn/dump.software.bdb

On pourra ensuite compresser les fichier

gzip -9 /home/svn/dump.siteweb.bdb
gzip -9 /home/svn/dump.software.bdb

Restauration

Pour restaurer un dump :

svnadmin create /home/svn/repo/siteweb
cat /home/svn/dump.siteweb.bdb | svnadmin load -q /home/svn/repo/siteweb
svnadmin verify /home/svn/repo/siteweb

Clients windows

Remarque concernant les clients windows : ceux-ci conservent les codes d’accès dans un répertoire : C :\Documents and Settings\USER\Application Data\Subversion. Si vous souhaitez tester la sécurité du système, il faut le supprimer avant chaque test. Sinon vous aurez toujours le dernier code correcte en mémoire et vous ne pourrez voir quand l’accès est refusé.

Sur le web

- Site officiel svn
- Quelque pages bien utiles :
- Installation avec Apache
- Apache+SSL
- Svn : Apache SSL Debian
- Configuration d’Apache pour svn
- Installation SSL sur apache

 


Actualités liées

11/02 Sortie de TrueCrypt version 5 Sortie de TrueCrypt version 5
5/12 Top 10 des pertes de données Top 10 des pertes de données
3/08 Découvrez JkDefrag Découvrez JkDefrag
30/07 Nos députés découvrent Ubuntu Nos députés découvrent Ubuntu
19/07 La licence GNU GPL passe en version 3 La licence GNU GPL passe en version 3
Chroniques liées

novembre 2012 Générer des mots de passe en ligne de commande linux/unix Générer des mots de passe en ligne de commande linux/unix
septembre 2008 Sauvegardes incrémentales avec rsnapshot Sauvegardes incrémentales avec rsnapshot
septembre 2008 Configuration d’une replication MySQL Configuration d’une replication MySQL
septembre 2008 Installation de RoundCube sous Debian Installation de RoundCube sous Debian
mars 2008 Installer un serveur svn sous Debian Etch Installer un serveur svn sous Debian Etch