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
- 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
- svnadmin create /var/svn/lx5.net
2Le fichier d’autorisations : 2
- nano /var/svn/lx5.net/conf/authz
Il est nécessaire de mettre dans ce fichier au moins ces quelques lignes :
- [/]
- kent1 = rw
- * = 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.
- rm -f /var/svn/lx5.net/conf/passwd
- htpasswd -c /var/svn/lx5.net/conf/passwd kent1
- New password:
- Re-type new password:
- 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
- chown -Rvf www-data:www-data /var/svn/lx5.net
Installation de trac
- wget http://ftp.edgewall.com/pub/trac/Trac-0.11b1.tar.gz
- tar -xvzf Trac-0.11b1.tar.gz
- wget http://peak.telecommunity.com/dist/ez_setup.py
- python ez_setup.py
- cd Trac-0.11b1
- sudo easy_install Pygments
- sudo easy_install Genshi
- python ./setup.py install
Créer les instances de trac :
- 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) :
- chown www-data:www-data -Rvf /var/trac/lx5.net/db
Servir les repository par apache :
- a2enmod dav
- a2enmod dav_fs
- a2enmod dav_lock
- a2enmod dav_svn
- a2enmod cgi
Exemple de configuration d’apache : /etc/apache2/mods-available/dav_svn.conf
2Configuration d’apache2
- 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é) :
- <VirtualHost 88.191.64.36:80>
- ServerAdmin kent1@lx5.net
- ServerName svn.lx5.net
- DocumentRoot /var/trac/lx5.net
- ScriptAlias /trac.cgi /usr/share/trac/cgi-bin/trac.cgi
- <Location /trac.cgi>
- SetEnv TRAC_ENV "/var/trac/lx5.net"
- Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
- Order allow,deny
- Allow from all
- </Location>
- DirectoryIndex trac.cgi
- ErrorLog /var/log/apache2/error.trac-lx5.log
- CustomLog /var/log/apache2/access.trac-lx5.log combined
- LogLevel debug
- <Location /svn>
- DAV svn
- SVNPath /var/svn/lx5.net
- # our access control policy
- # try anonymous access first, resort to real
- # authentication if necessary.
- # how to authenticate a user
- AuthType Basic
- AuthName "LX5 Subversion repository"
- AuthUserFile /var/svn/lx5.net/conf/passwd
- Satisfy Any
- AuthzSVNAccessFile /var/svn/lx5.net/conf/authz
- Require valid-user
- </Location>
- </VirtualHost>
Enfin on active tout cela et on reload la conf d’apache :
- a2ensite svn
- /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 :
- 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.