Configurer un serveur Subversion sur Mac OS X 10.5
Par patpro, samedi 22 décembre 2007 à 17:47 :: Unix :: #130 :: rss
Plus le temps passe et plus les distributions de Mac OS X s'enrichissent de logiciels intéressants. Leopard est livré de base avec tout ce qu'il faut pour gérer un serveur svn : Apache 2.2 et subversion. Voyons comment configurer rapidement un serveur svn+http avec accès authentifié. Il est possible bien sûr de se contenter d'un serveur svn natif, mais l'accès aux dépots par l'intermédiaire d'Apache apporte une grande souplesse en terme d'authentification et de permission d'accès.
Pour pouvoir faire les manipulations décrites ci-dessous, il faut être administrateur d'une machine sous Mac OS X 10.5. Mac OS X 10.4 et inférieurs ne sont pas livrés par défaut avec les logiciels nécessaires à la mise en place d'un serveur svn.
Ceci posé, il va nous falloir : un logiciel type "Terminal", un éditeur de texte (vi, bbedit, textmate, ...) et un accès internet.
L'installation présentée ici est faite dans le répertoire /Library/WebServer/, dans le quel tous les membres du groupe admin ont le droit d'écrire par défaut.
La première étape est la création de l'espace physique des dépots de sources (repository). On se déplace dans /Library/WebServer/, on crée un répertoire Subversion, on crée le premier repository, et on ajoute les fichiers d'authentification et de permission pour les utilisateurs.
cd /Library/WebServer/ mkdir Subversion svnadmin create Subversion/mon_projet vi deny.htsvnaccesspolicy # ici on colle/édite/adapte le contenu # suivant en fonction de ses besoins : [groups] admins = patpro autregroupe = eric, robert tous = sam, patpro, eric, robert, gonzague [mon_projet:/] @admins = rw @autregroupe = rw sam = r # ensuite on génère les couples login/mot de passe # pour les utilisateurs : htpasswd -bc deny.htpasswd patpro mot-de-passe sudo chown -R www:www /Library/WebServer/SubversionEnsuite, on peut ajouter des feuilles de styles XSL/CSS pour agrémenter le rendu des repositories dans Apache. Il est nettement plus simple en terme de configuration de stocker des feuilles de styles à la racine du serveur, c'est à dire dans le répertoire
/Library/WebServer/Documents/ :
cd /Library/WebServer/Documents/ curl -O http://svn.collab.net/repos/svn/trunk/tools/xslt/svnindex.xsl curl -O http://svn.collab.net/repos/svn/trunk/tools/xslt/svnindex.cssMaintenant, il faut modifier la configuration d'Apache pour qu'il charge les modules Subversion et sache lire un repository. On modifie d'abord le fichier
/private/etc/apache2/httpd.conf pour assurer le chargement des modules, puis on crée un fichier de configuration dédié à nos dépots.À l'aide de son éditeur de texte préféré, on modifie
/private/etc/apache2/httpd.conf en ajoutant les deux lignes ci-dessous à la suite des autres directives "LoadModule" :
LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so LoadModule authz_svn_module libexec/apache2/mod_authz_svn.soPuis on crée un fichier
/private/etc/apache2/other/subversion.conf contenant ces directives :
<IfModule dav_module>
<IfModule dav_fs_module>
<IfModule dav_svn_module>
<IfModule authz_svn_module>
<Location /Subversion>
DAV svn
SVNParentPath /Library/WebServer/Subversion
# regle la politique d'acces des users authentifies
AuthzSVNAccessFile /Library/WebServer/Subversion/deny.htsvnaccesspolicy
# regle les login.pass pour les users
AuthType Basic
AuthName "Subversion : espace de travail"
AuthUserFile /Library/WebServer/Subversion/deny.htpasswd
Require valid-user
SVNIndexXSLT "/svnindex.xsl"
</Location>
</IfModule>
</IfModule>
</IfModule>
</IfModule>
Et pour finir on relance Apache, soit par le tableau de bord "Partage", soit par la commande sudo apachectl restart. À partir de là, notre serveur subversion doit être accessible en http sur le port 80. Le repository créé plus haut est vide, il faut faire un import initial pour commencer à travailler avec. L'habitude veut qu'on crée toujours un répertoire "trunk", un autre "branches", et un troisième "tags". Voici comment les créer en local puis comment les importer dans le dépot :
cd /tmp mkdir -p mon_projet/trunk mon_projet/branches mon_projet/tags svn import mon_projet http://localhost/Subversion/mon_projet -m "init" # ici, svn me demande mon mot de passe, celui défini # via la commande htpasswd quelques étapes plus haut. # ensuite je peux supprimer des répertoires vides. rm -r /tmp/mon_projetC'est fini ! Je peux créer ma copie de travail locale à l'emplacement de mon choix :
cd /Users/moi/mon-dossier/ svn checkout http://localhost/Subversion/mon_projet/trunk mon_projetDe plus, je peux naviguer dans l'arborescence svn de mon projet en pointant mon navigateur habituel vers http://localhost/Subversion/mon_projet.
Une petite note sur la sécurité : l'utilisation du protocole http et non https fait circuler les mots de passe en clair sur le réseau. Donc n'utilisez pas un mot de passe important (pas celui du système par exemple).
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire