Identifiants personnels


Moi ... Moi ... et re Moi
« [WEB 2.0] Les applications   Informatique  [Ubuntu Server] Installation »

[SERVEUR] svn + trac + sous-domaines apache

jeudi 27 décembre 2007, modifié le 29 décembre 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

Paquets nécessaires au préalables :

  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

Le fichier d’autorisations :

  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.

Le fichier de password :

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

Configuration d’apache

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

Utiliser mod_authz correctement

http://trac.edgewall.org/wiki/TracF...

apt-get install python-configobj

cd /var/trac/all/plugins

wget http://trac.edgewall.org/intertrac/...

[trac]
authz_file = /var/svn/aires-de-confluxence.info/conf/authz

http://svnbook.red-bean.com/svnbook...

Note : Usernames inside the Authz file must be the same as those used inside trac.

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

Ajouter un document
Qui êtes-vous ? (optionnel)
Connexion


Propulsé par : SPIP 2.1.0 dev SVN [13946]