Mettre en place un serveur de repoussage se résume à effectuer deux tâches relativement simples : mettre en place un accès rsync (comme pour faire un miroir par aspiration standard) et mettre en place un mécanisme déclencheur utilisant ssh (pour déclencher la mise à jour du miroir par repoussage).
Pour plus d'information sur ce qu'est un serveur de repoussage, merci de lire l'explication des miroirs par repoussage.
Installez rsync 2.1.1 ou une version supérieure. Si votre
site tourne sous Debian, installez simplement le dernier paquet rsync.
Créez un fichier rsyncd.conf et mettez quelque chose comme ceci
dans celui-ci :
uid = nobody gid = nogroup max connections = 25 socket options = SO_KEEPALIVE [debian] path = /srv/debian/mirror comment = The Debian Archive (~250 GB) auth users = compte_autorisé1,compte_autorisé2,compte_autoriséN read only = true secrets file = /etc/rsyncd/debian.secrets
Pour chaque site dont vous faites un miroir par repoussage, ajoutez une entrée
au fichier /etc/rsyncd/debian.secrets :
compte_autorisé1:un_mot_de_passe compte_autorisé2:autre_mot_de_passe compte_autoriséN:_mot_de_passe
Vous avez alors donné accès à l'archive se trouvant sur votre machine aux miroirs clients de votre machine.
Vous voudrez probablement lancer le démon rsync depuis inetd. Pour cela, vous
devez d'abord ajouter le service rsync dans le fichier
/etc/services (s'il n'y est pas déjà), comme ceci :
rsync 873/tcp
Pour lancer le démon avec inetd, ajoutez ce qui suit à votre fichier
/etc/inetd.conf :
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
N'oubliez pas d'envoyer à inetd un signal HUP pour lui dire de relire son fichier de configuration après que vous l'avez modifié.
Créez une nouvelle clé ssh pour le compte que vous utilisez pour faire un miroir de Debian. Faites attention à ne pas écraser votre clé ssh originale et pour cela utilisez l'option -f, par exemple :
ssh-keygen -f ~/.ssh/identite.monsite
Vérifiez que la nouvelle clé publique (~/.ssh/identite.monsite.pub) contient ceci au début du fichier, avec ADRESSEIP l'IP de votre miroir amont :
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync,,from="ADRESSEIP" &"
Vous devez aussi mettre en place le script qui contactera les miroirs clients.
Créez un fichier nommé signal, contenant ceci :
#!/bin/sh # Ce script est appelé pour signaler à l'hôte distant qu'il est temps de # mettre à jour le miroir à partir de l'archive. echo Signalling $1 ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identite.monsite sleep 1
Ce script va se connecter sur un hôte distant en utilisant la clé ssh spéciale
que vous avez créée ci-dessus, à condition que chaque opérateur de miroir
client ajoute cette clef à son propre fichier ~/.ssh/authorized_keys (en
remplaçant également ftpsync
selon le nom de sa commande de lancement
de la recopie). Ce script ne fait rien d'utile à distance en lui-même, la
commande unique sera lancée comme spécifié par le paramétragede la clef.
Pour déclencher effectivement les miroirs, vous devez lancer la commande
./signal <site> <username> après avoir réalisé votre
propre synchronisation. De cette façon, dès que votre site a terminé de mettre
à jour son miroir à partir de son serveur, vous allez déclencher la mise à jour
des sites clients de votre serveur.
Ce nouveau script, runmirrors, devrait contenir quelque chose
comme ceci :
Vous pouvez placer ces commandes soit à la fin de votre
ftpsync.conf, ou si vous préférez, dans un autre script et lancer
ce script à partir de anonftpsync, par exemple de la façon
suivante :
#!/bin/sh # Ce script est appelé par websync pour déclencher les miroirs clients. ./signal un.autre.site archvsync ./signal et.un.autre.site autrecompte
Si vous avez le moindre problème avec ceci, contactez-nous.