Installer subversion sur Debian Etch

Ce mini howto va vous permetre en quelques touch de mettre en place un serveur svn sur votre Etch.

On va supposer que votre repo sera dans /var/svn et s'appellera project.

1 - La methode propre

Executez toutes ces commandes en tant que root :

aptitude install subversion apache2 php5 libapache2-svn

Au cas ou..

vim /etc/apache2/httpd.conf

ServerName 127.0.0.1
:wq

Creation des repertoires + gestion des droits

mkdir -p /var/svn/project
chgrp -R www-data /var/svn
chmod -R 770 /var/svn
chmod -R g+s /var/svn

On cree notre premier repo :

svnadmin create /var/svn/project

On configure toussa… Ici tous ceux qui sont authentifies auront un droit d'ecriture.

vim /var/svn/project/conf/svnserve.conf

[general]
anon-access = none
auth-access = write
password-db = htpasswd
authz-db = authzfile

:wq

On defini des groupes et des utilisateurs. Emile n'aura que le droit de lire.

vim /var/svn/project/conf/authzfile

[groups]
groupe1 = jean,jules
groupe2 = emile

[/]
@groupe1 = rw
@groupe2 = r
* =

:wq

On leur donne un mot de passe. La premiere ligne permet de creer le fichier.

htpasswd -c -m /var/svn/project/conf/htpasswd jean
htpasswd -m /var/svn/project/conf/htpasswd jules
htpasswd -m /var/svn/project/conf/htpasswd emile

Configuration d'apache.

vim /etc/apache2/mods-available/dav_svn.conf

<Location /project>
  DAV svn
  SVNPath /var/svn/project
  AuthType Basic
  AuthName "Project Repository"
  AuthUserFile /var/svn/project/conf/htpasswd
  AuthzSVNAccessFile /var/svn/project/conf/authzfile
  Require valid-user
</Location>

:wq

On rajoute le Directory.

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

[... a la fin avant le </VirtualHost> ...]

  <Directory "/var/svn/project">
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
  </Directory>

</VirtualHost>

:wq

Hop, Hop, on peuple un minimum notre repo et on remet les bons droits.

cd /tmp && mkdir temp && cd temp
mkdir -p branches tags trunk/src trunk/images trunk/includes trunk/lib
cd ../
svn import -m "Importing project" temp file:///var/svn/project
chmod -R 770 /var/svn

Vous pouvez a présent vous rendre sur http://localhost/project ou faire un “svn co http://jean@localhost/project

Youpi, mais c'est moche…

Solution : websvn !

aptitude install websvn

Lors de l'install entrez les valeurs suivantes :

Premier ecran   : <OK>
Second ecran    : /var/svn
Troisieme ecran : (vide)
Dernier         : <OK>

Decommentez ou ajoutez les lignes suivantes dans le fichier :

vim /etc/websvn/config.inc

$config->setTemplatePath("$locwebsvnreal/templates/BlueGrey/");
include("languages/french.inc");
unset($contentType[".sh"]);
$config->useEnscript();
$extEnscript[".java"] = "java";
$extEnscript[".pl"] = "perl";
$extEnscript[".py"] = "python";
$extEnscript[".sql"] = "sql";
$extEnscript[".html"] = "html";
$extEnscript[".xml"] = "html";
$extEnscript[".thtml"] = "html";
$extEnscript[".tpl"] = "html";
$extEnscript[".sh"] = "bash";

:wq

Configuration d'apache pour websvn

vim /etc/websvn/apache.conf

<Location /websvn>
  Options FollowSymLinks
  order allow,deny
  allow from all
  AuthType Basic
  AuthName "Subversion Repository"
  Require valid-user
  AuthUserFile /var/svn/project/conf/htpasswd
  <IfModule mod_php4.c>
      php_flag magic_quotes_gpc Off
      php_flag track_vars On
  </IfModule>
</Location>

:wq

Rendez vous alors sur http://localhost/websvn et youpi, c'est joli !

Si vous avez le courage, vous pouvez customiser votre interface. Il suffit pour cela de creer un nouveau repertoire dans /var/www/websvn/templates Puis de copier par exemple le contenu de BlueGray dans votre nouveau repertoire et de modifier cette ligne dans /etc/websvn/config.inc :

$config->setTemplatePath("$locwebsvnreal/templates/VOTRE_TEMPLATE/");

Vous pouvez par exemple ecraser subversion.png par votre propre logo.

A noter que les gars qui ont fait websvn ne devaient pas avoir de don particulier pour le CSS, et qu'ils ont fait un truc a la quick&dirty…

Amusez vous bien !

2 - L'obsolescence

Si certains veulent simplement mettre en place un serveur SVN de petite envergure, une solution consisterait a utiliser svn+ssh. Plus court, et sans convi clika truc a la websvn.

aptitude install subversion

Creation des repertoires + gestion des droits

groupadd subversion
mkdir -p /var/svn/project
chgrp -R subversion /var/svn
chmod -R 770 /var/svn
chmod -R g+s /var/svn

On cree notre premier repo :

svnadmin create /var/svn/project

On va faire un ptite bidouille pour lancer umask avant svnserve :

mv /usr/bin/svnserve /usr/bin/svnserve-real
vim /usr/bin/svnserve

#!/bin/sh
umask 002
/usr/bin/svnserve-real $@

:wq

Creeons nos utilisateurs :

adduser --ingroup subversion jean
adduser --ingroup subversion jules

Lancons ensuite svnserve :

svnserve --daemon --root /var/svn/

Vous pouvez a present vous amuser avec des import etc.. :

svn import -m "Importing Project" trunk svn+ssh://jean@serveursvn/project
svn co svn+ssh://jean@serveursvn/project/trunk

Ceci dit, cette methode ne vaut le coup que si seulement deux ou trois personnes vont utiliser le depot et qu'il n'y a pas de regles de secu particulieres a mettre en place.

jfg 2007/12/16 00:46

linux/svn_debian.txt · Last modified: 2010/01/12 13:29 (external edit)