Projet de sites Web mis à jour par SVN

Ce tutoriel met en place une communication serveur Web / serveur de Subversion.
le but sera de mettre à jour un projet de site web qui sera une copie locale d’un projet subversionné.
Le principe est que lors d’un commit d’un fichier sur SVN, le projet Web hébergé sur un autre serveur sera mis a jour automatiquement.
Plus besoin de serveur local pour tester son site !

Installer un nouveau projet sur le serveur :

1/ Faire le hook Post commit
Se connecter en SSH sur le serveur SVN
Aller dans le répertoire du projet subversionné ,puis dans hook/post-commit

si le fichier post-commit n’existe pas , copier coller le post-commit-template

rajouter :

WEBSERVER=adresse IP du server
SCRIPT_PATH=shellExecNomduProjet.php

wget http://$WEBSERVER/$SCRIPT_PATH

mettre le post-commit en droits 777

2/ Créer le domaine sur le serveur web

se connecter en SSH sur le serveur Web

Aller dans /etc/apache2/sites-available rajouter www.projet.tan  (pour Debian / ubuntu)

taper ensuite a2ensite www.projet.tan pour activer le vhost
reloader apache

Contenu :

<VirtualHost *:80>
ServerAdmin admin@domain.com
ServerName projet.tan
ServerAlias www.projet.tan
DocumentRoot "/var/www/projet/"

</VirtualHost>

3/ Créer un répertoire dans /var/www

faire un svn checkout http://adresseduserveurSVN/TanSubversion/nomduprojet
dans  /var/www/nomduprojet

appliquer les droits suivants sur ce répertoire :
chmod 775
user : www-data
group : www-data

4/ Créer un shellExecProjet.sh

Exemple :

<?php

echo 'update project<br>';
$cmd = 'updateproject.sh';
$output = shell_exec('cd script;./'.$cmd);

//$output = shell_exec('ls -al');

echo nl2br($output);

?>

appliquer les droits suivants sur ce fichier :
chmod 775
user : www-data
group : www-data

5/ Scripts :

Dans scripts créer  updateProjet.sh:

 #!/bin/sh

USER="loginSVN"
PASS="motdepasseSVN"
SVNPATH="/var/www/Projet"
SVN_INFO_FILE="infoProjet.txt"

cd $SVNPATH

svn update --username $USER --password $PASS

svn log --limit 10 -v > /var/www/script/$SVN_INFO_FILE

et créer infoProjet.txt (document texte vierge)

appliquer les droits suivants sur ces fichiers :
chmod 775
user : www-data
group : www-data




Subversion sur MacOsX

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

1. ici on colle/édite/adapte le contenu
2. 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

1. ensuite on génère les couples login/mot de passe
2. pour les utilisateurs :

htpasswd -bc deny.htpasswd patpro mot-de-passe

sudo chown -R www:www /Library/WebServer/Subversion

Ensuite, 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.css

Maintenant, 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_modu