|
Il y a actuellement 5 visiteurs connectés sur le site !
Mise en place d'un serveur CVS
sur Debian GNU/Linux
|
Mise en place d'un serveur CVS
sur Debian GNU/Linux
|
|
Introduction
Ce document explique comment paramétrer un serveur CVS sur un poste Linux utilisant la distribution Debian GNU/Linux 3.0 (alias Woody).
Licence
Copyright 2002-2004 Alexandre Ratti. Document diffusé dans les conditions des licences GPL 2 (GNU General Public License) et GFDL 1.2 (GNU Free Documentation License).
Principes
* Un serveur CVS se compose d'une base de données, appelée "référentiel" ou "dépôt", (repository en anglais), qui contient toutes les versions des documents.
* Les utilisateurs empruntent (check out) les documents pour les modifier en local. Une fois leur travail terminé, ils rendent les documents au référentiel (check in). Les modifications faites en local ne sont répercutées sur le référentiel qu'après validation (commit).
* Le référentiel est accessible en local à tous les utilisateurs qui ont un compte sur le serveur et des droits d'écriture dans le répertoire d'installation de la base.
* Le référentiel est accessible en réseau grâce à un serveur spécial, le pserver, ou via ssh.
* Avantages de la solution pserver : les utilisateurs n'ont pas besoin de compte sur le serveur et le transfert des données est probablement plus rapide (pas de chiffrage). Inconvénients : les données et le mot de passe circulent en clair sur le réseau ou sur Internet.
* Pour échanger des données via Internet de manière sécurisée, il est préférable d'utiliser ssh, qui permet de chiffrer mots de passe et données.
Dans ce document, le référentiel est installé dans dans /home/cvs. Le réseau local s'appelle toto.net ; le serveur CVS est accessible à l'adresse cvs.toto.net. Le référentiel va contenir, entre autres, le site Web www.toto.net. Les utilisateur qui ont des droits d'écriture dans le référentiel s'appellent marc et alex.
Installation de cvs
Sur Debian, en qualité d'administrateur :
apt-get install cvs
Pour reconfigurer un serveur CVS déjà installé :
dpkg-reconfigure cvs
Accepter l'utilisation du serveur pserver. Créer le référentiel dans /home/cvs.
Par défaut, le serveur cvs est exécuté en qualité de root. Créer un compte d'utilisateur limité, cvs. Le pserver CVS sera exécuté sous ce nom. S'assurer qu'il est bien propriétaire du dossier racine de CVS. Dans la foulée, ajouter les utilisateurs courants au groupe cvs pour qu'ils puissent accéder directement au référentiel CVS en local.
mkdir /home/cvs
adduser --no-create-home --disabled-login --system --group cvs
chown -R cvs:cvs /home/cvs
adduser marc cvs
adduser alex cvs
Toujours en qualité d'administrateur, activer le référentiel CVS :
export CVSROOT=/home/cvs
cvs init
Dans /etc/xinetd.conf, ajouter le code ci-dessous en utilisant les bonnes adresses IP.
service cvspserver
{
id = cvs_network
disable = no
wait = no
protocol = tcp
user = cvs
socket_type = stream
env = "$HOME=/home/cvs"
# bind n'est utile que si la machine contient plusieurs cartes
bind = 192.168.0.2
log_on_failure += USERID
port = 2401
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvs pserver
only_from = .toto.net
}
|
Redémarrer xinetd.
/etc/init.d/xinetd restart
Remarque : si vous n'avez pas de fichier /etc/xinetd.conf, xinetd n'est probablement pas installé sur votre serveur. C'est le démon inetd qui est installé par défaut sur Debian Woody. Pour remplacer inetd par xinetd, tapez apt-get install xinetd.
Paramatrage de cvs
Ouvrir un terminal sous le nom d'un utilisateur standard, marc par exemple. Sortir de CVS les fichiers de configuration pour pouvoir les modifier. Un dossier CVSROOT est créé dans le répertoire courant.
cd /home/marc
export CVSROOT=/home/cvs
cvs co CVSROOT
cd CVSROOT
Créer le fichier de mots de passe de CVS. Problème : dans le fichier, les mots de passe doivent être chiffrés, mais CVS ne propose pas de commande pour le faire. On peut normalement copier le mot de passe chiffré dans /etc/passwd, mais Debian utilise des mots de passe MD5, plus longs, qui risquent de ne pas être reconnus.
Format des lignes du fichier de mots de passe :
alex:qsmdlfkqmldk:cvs
marc:modkfjgmldfj:cvs
alex est le nom de l'utilisateur qui se connecte ; cvs est le nom sous lequel le serveur est exécuté (toujours "cvs", dans notre cas).
Si Apache est installé sur le poste, on peut utiliser un de ses outils pour créer le fichier de mot de passe. Dans le dossier CVSROOT :
htpasswd -c passwd alex
Ensuite, entrer le mot de passe.
Pour actualiser un fichier de mot de passe :
htpasswd passwd marc
Vérifier que cet utilitaire n'a pas supprimé la 3ème colonne de chaque ligne de mot de passe. Le cas échéant, la rajouter (:cvs).
Si Apache n'est pas installé sur le poste, il faut trouver autre chose. Créer le fichier :
touch passwd
Générer un mot de passe chiffré avec cette formule magique :
perl -e "print crypt('mot_de_passe','az');" >> passwd
Ouvrir le fichier passwd et y corriger les informations.
nano passwd
...
marc:modkfjgmldfj:cvs
Dans la foulée, ouvrir le fichier cvswrappers et y ajouter les lignes ci-dessous. Elles permettent de déclarer quels fichiers sont binaires, pour que CVS ne les abîme pas à l'importation.
*.avi -k 'b' -m 'COPY'
*.doc -k 'b' -m 'COPY'
*.exe -k 'b' -m 'COPY'
*.gif -k 'b' -m 'COPY'
*.gz -k 'b' -m 'COPY'
*.hqx -k 'b' -m 'COPY'
*.jar -k 'b' -m 'COPY'
*.jpeg -k 'b' -m 'COPY'
*.jpg -k 'b' -m 'COPY'
*.mov -k 'b' -m 'COPY'
*.mpg -k 'b' -m 'COPY'
*.pdf -k 'b' -m 'COPY'
*.png -k 'b' -m 'COPY'
*.ppt -k 'b' -m 'COPY'
*.sit -k 'b' -m 'COPY'
*.swf -k 'b' -m 'COPY'
*.tar -k 'b' -m 'COPY'
*.tgz -k 'b' -m 'COPY'
*.tif -k 'b' -m 'COPY'
*.tiff -k 'b' -m 'COPY'
*.xbm -k 'b' -m 'COPY'
*.xls -k 'b' -m 'COPY'
*.zip -k 'b' -m 'COPY'
*.ogg -k 'b' -m 'COPY'
*.mp3 -k 'b' -m 'COPY'
|
Maintenant, réimporter les fichiers modifiés dans CVS. D'abord, déclarer le fichier qui a été créé :
cvs add passwd
Puis demander à CVS de comparer le répertoire local avec le référentiel. Il doit énumérer les fichiers ajoutés/modifiés.
cvs update
Ensuite, valider les modifs.
cvs commit
Toujours dans le même dossier, éditer le fichier checkoutlist et y ajouter la ligne
passwd
en fin de fichier. Objectif : déclarer que le fichier passwd qui vient d'être créé est un fichier d'administration exportable comme les autres.
Actualiser et valider :
cvs update
cvs commit
Importation de données et accès au référentiel
Importation d'un site dans le référentiel
À ce stade, on doit pouvoir importer un site dans la base. Dans la foulée, tester l'accès pserver. Toujours avec un compte d'utilisateur standard :
export CVSROOT=:pserver:marc@cvs.toto.org:/home/cvs
cvs login
cd /chemin/du/dossier/www.toto.net
cvs import www.toto.net toto initial
On peut maintenant emprunter (checkout) la dernière version du site depuis un poste Windows ou Linux pour la modifier en local.
Accès aux données depuis Windows
Installer un outil Windows. Deux choix :
* TortoiseCVS : ajoute un menu contextuel dans l'Explorateur. Très simple.
* WinCVS : outil de type FTP, qui montre le contenu du référentiel. Plus complet.
Avec TortoiseCVS, cliquer avec le droit droit sur l'icône du disque où on veut placer la version locale du site et choisir CVS Checkout dans le menu contextuel.
Paramètres :
* Protocol : Password server (:pserver:)
* Server : cvs.toto.org
* Repository directory : /home/cvs
* User name : marc
* Module : www.toto.org
Le site est extrait du référentiel. Chaque répertoire de l'arborescence créée contient un sous-répertoire appelé CVS. Ne pas le supprimer, il contient des infos importantes.
On peut maintenant :
* Modifier le site en local.
* Actualiser la version locale en cliquant sur le dossier-racine du site et en choisissant CVS Update.
* Enregistrer ses modifications dans le référentiel en choisissant CVS Commit.
Installation d'une interface Web
Le paquet viewcvs est un script en Python qui permet de parcourir le contenu d'un référentiel CVS à partir d'un serveur Web.
apt-get install apache viewcvs
Des questions sont posées pendant l'installation du paquet viewcvs. Vérifier dans /etc/viewcvs/viewcvs.conf que les réponses ont bien été enregistrées.
Dans /etc/apache/httpd.conf, ajouter la ligne suivante en fin de fichier :
Alias /viewcvs/ /usr/share/viewcvs/
Relancer Apache :
/etc/init.d/apache restart
Le contenu de la base CVS devrait être consultable à l'adresse :
http://www.toto.net/cgi-bin/viewcvs.cgi/
Documentation
Présentations de CVS
Introduction
à CVS, Sébastien J. Gross, document du 16 mai 2001
Utilisation de CVS,
Alain Lesné et Olivier Bergé, 28/12/2000
Manuel d'utilisation
de CVS (en anglais)
Application de CVS à l'administration de sites Web
Easing Web Application
Development with CVS, Oktay Altunergil, O'Reilly Network, 24/01/2002
Using CVS for Web development,
Philip Greenspun, 1999
Managing Websites
using Unix, Nik Clayton, 1999
Mark's Guide
to CVS (incomplet), Mark D., 23/12/1999
CVS Version Control
for Web Site Projects, Sean Dreilinger, 13/04/1998
Paramétrage détaillé d'un serveur CVS
CVS Pserver
and Xinetd, Sugoi Consulting
Chrooted SSH CVS
Server Howto, Olivier Berger et Olivier Tharan, Idealx, 2001
Sources de l'article
|