Identifiants personnels


Moi ... Moi ... et re Moi
« [DNS] SPAMMER SPAMMER !!! (...)   Informatique  [TRAC] Tuner trac »

[SERVEUR] svn + trac + sous-domaines apache

jeudi 27 décembre 2007, modifié le 10 juin 2008, par Quentin Drouet

Subversion est un système de gestion de versions, distribué sous licence Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s’appuient volontairement sur les mêmes concepts (notamment sur le principe du dépôt centralisé et unique) et considèrent que le modèle de CVS est le bon, et que seule son implémentation est en cause. (dixit Wikipedia)

Trac est un système Open Source de gestion complète de projet par Internet, développé en Python. Il inclut : un Wiki, un gestionnaire de feuilles de route, un historique, un tracker de bugs et un explorateur subversion. (dixit Wikipedia)

Source d’aide utile supplémentaire :

Idée de départ :

  • avoir un repository svn pour chaque (ou pour la plupart du moins) des noms de domaines hébergés sur le serveur voir de domaines extérieurs.
  • que chacun de ces repository soit accessible individuellement. Les utilisateurs d’un n’ont pas forcément les droits d’accès sur l’autre, à la fois en lecture mais aussi en écriture.
  • que chacun de ces repository ait également une interface graphique utilisable (trac) sur un sous domaine du type trac.nom_domaine.tld

Environnement de base

  • Serveur : Dedibox
  • Distribution Linux : Ununtu Gutsy Gibbon 7.10
  • Apache 2 : version 2.2.4
  • PHP 5

2Paquets nécessaires au préalables :2

  1. apt-get install subversion libapache2-svn python2.5 libsqlite3-0 php5-sqlite3 python-svn python-subversion python-pysqlite1.1 python-genshi

Création des repositories

  1. svnadmin create /var/svn/lx5.net

2Le fichier d’autorisations : 2

  1. nano /var/svn/lx5.net/conf/authz

Il est nécessaire de mettre dans ce fichier au moins ces quelques lignes :

  1. [/]
  2. kent1 = rw
  3. * = r

Ceci donnera à l’utilisateur "kent1" les droits de lecture et d’écriture sur le dépot et uniquement les droits de lecture aux autres utilisateurs. Nous verrons dans un article futur comment régler aux petits oignons ces autorisations.

2Le fichier de password :2

Comme nous donnons les droits d"écriture à l’utilisateur "kent1", il est donc nécessaire de créer le fichier de mots de passe qui correspond.

  1. rm -f /var/svn/lx5.net/conf/passwd
  2. htpasswd -c /var/svn/lx5.net/conf/passwd kent1
  3. New password:
  4. Re-type new password:
  5. Adding password for user kent1

NB : il est nécessaire qu’Apache ait accès à l’ensemble du dépot ... donc pour en être sur... lancer la commande

  1. chown -Rvf www-data:www-data /var/svn/lx5.net

Installation de trac

  1. wget http://ftp.edgewall.com/pub/trac/Trac-0.11b1.tar.gz
  2. tar -xvzf Trac-0.11b1.tar.gz
  3. wget http://peak.telecommunity.com/dist/ez_setup.py
  4. python ez_setup.py
  5. cd Trac-0.11b1
  6. sudo easy_install Pygments
  7. sudo easy_install Genshi
  8. python ./setup.py install

Créer les instances de trac :

  1. trac-admin /var/trac/lx5.net initenv

Trac-admin posea alors quelques questions :

  • Project Name : donnez lui un tite, ici "lx5.net".
  • Database connection string : sqlite:db/trac.db (par défaut base de donnée sqlite)
  • Repository type : svn (par défaut)
  • Path to repository : /var/svn/lx5.net (le path donné précédemment)
  • Templates directory : laisser par défaut

A la fin l’installation de trac créera une arborescence dans /var/trac/lx5.net

Il est nécessaire que la base de donnée soit lisible par l’utilisateur du serveur web (sur ubuntu c’est en général www-data) :

  1. chown www-data:www-data -Rvf /var/trac/lx5.net/db

Servir les repository par apache :

  1. a2enmod dav
  2. a2enmod dav_fs
  3. a2enmod dav_lock
  4. a2enmod dav_svn
  5. a2enmod cgi

Exemple de configuration d’apache : /etc/apache2/mods-available/dav_svn.conf

2Configuration d’apache2

  1. nano /etc/apache2/sites-available/svn

Tous nos repositories sont dans le même répertoire, on active donc svn de cette manière (NB : il est nécessaire de recopier ceci et de le modifier pour chaque virtualhost souhaité) :

  1. <VirtualHost 88.191.64.36:80>
  2.         ServerAdmin kent1@lx5.net
  3.         ServerName svn.lx5.net
  4.         DocumentRoot /var/trac/lx5.net
  5.  
  6.         ScriptAlias /trac.cgi /usr/share/trac/cgi-bin/trac.cgi
  7.         <Location /trac.cgi>
  8.                SetEnv TRAC_ENV "/var/trac/lx5.net"
  9.                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
  10.                Order allow,deny
  11.                Allow from all
  12.        </Location>
  13.        DirectoryIndex trac.cgi
  14.        ErrorLog /var/log/apache2/error.trac-lx5.log
  15.        CustomLog /var/log/apache2/access.trac-lx5.log combined
  16.        LogLevel debug
  17.        
  18.        <Location /svn>
  19.                 DAV svn
  20.                 SVNPath /var/svn/lx5.net
  21.  
  22.                 # our access control policy
  23.                 # try anonymous access first, resort to real
  24.                 # authentication if necessary.
  25.                 # how to authenticate a user
  26.                 AuthType Basic
  27.                 AuthName "LX5 Subversion repository"
  28.                 AuthUserFile /var/svn/lx5.net/conf/passwd
  29.  
  30.                 Satisfy Any
  31.                 AuthzSVNAccessFile /var/svn/lx5.net/conf/authz
  32.  
  33.                 Require valid-user
  34.         </Location>
  35. </VirtualHost>

Enfin on active tout cela et on reload la conf d’apache :

  1. a2ensite svn
  2. /etc/init.d/apache2 force-reload

Importer les premiers fichiers

Voici une commande à exécuter en local pas trop compliquée pour importer le contenu d’un répertoire vers le nouveau dépot que l’on vient de créer :

  1. svn import monrépertoire/ http://svn.lx5.net/svn/path/to/répertoire_sur_le_depot/ --username kent1 -m "Premier import"

En gros là on importe le contenu de "monrépertoire" local vers le répertoire "path/to/répertoire_sur_le_dépot/" sur le dépot de svn.lx5.net (créé plus haut) avec les droits de l’utilisateur "kent1" ajouté plus haut dans les droits du dépot avec le message (-m) "Premier dépot".

A noter que "-m" est obligatoire pour chaque import ou commit futur.

Articles connexes :

Répondre à cet article


Un message, un commentaire ?
  • (Pour créer des paragraphes, laissez simplement des lignes vides.)

Lien hypertexte (optionnel)
  • (Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d'informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Qui êtes-vous ? (optionnel)
Connexion


Propulsé par : SPIP 2.0.0 dev SVN [12309]