Configurare un server push consiste in due compiti di base: la
configurazione dell'accesso rsync (per un normale mirroring di tipo
pull
) e la configurazionre del un meccanismo di attivazione
via ssh (per avviare il mirroring push).
(Per maggiori informazioni su cosa è un server push, leggere la spiegazione sul push mirroring.)
Installare rsync 2.1.1 o superiore. Se per il proprio
sito si utiulizza Debian, è sufficiente installare il pacchetto
rsync
più recente.
Creare il file rsyncd.conf e inserirvi qualcosa di
simile a questo:
uid = nobody gid = nogroup max connections = 25 socket options = SO_KEEPALIVE [debian] path = /srv/debian/mirror comment = The Debian Archive (~250 GB) auth users = authorized_account1,authorized_account2,authorized_accountN read only = true secrets file = /etc/rsyncd/debian.secrets
Aggiungere nel file /etc/rsyncd/debian.secrets una voce per
ogni sito verso cui si vuole effettuare il pushing:
authorized_account1:a_password authorized_account2:another_password authorized_accountN:password
Con questo si è dato accesso ai mirror destinazione all'archivio sulla propria macchina.
Per far avviare il demone rsync da inetd si deve aggiungere il servizio
rsync nel file /etc/services (se non fosse già presente), in
questo modo:
rsync 873/tcp
Per abilitare il demone da inetd, aggiungere quanto segue al proprio file
/etc/inetd.conf:
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
(Ricordasi di inviare a inetd un segnale HUP per fargli rileggere il file di configurazione dopo la modifica).
Creare una nuova chiave ssh per l'account che usa per il mirror di Debian. Assicurarsi di non sovrascrivere la chiave ssh originale usando l'opzione -f, per esempio:
ssh-keygen -f ~/.ssh/identity.mysite
Assicurarsi che la nuova chiave pubblica (~/.ssh/identity.mysite.pub) contenga all'inizio questo:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/sync &"
Occorre configurare uno script che contatterà i mirror destinazione.
Creare un file chiamato signal, con il seguente contenuto:
#!/bin/sh # This script is called to signal the remote host that it is time to # mirror the archive. echo Signalling $1 ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.mysite sleep 1
Questo script si allocherà sulla macchina remota usando la speciale
chiave ssh creata prima, fornita a ciascun mirror destinatario e aggiunta
nei rispettivi ~/.ssh/authorized_keys (sostituendo sync
con
anonftpsync
oppure con qualsiasi altro comando per avviare il
mirroring). Lo script stesso non farà nulla di utile in remoto, l'unico
comando sarà lanciato in base alle impostazioni dalla chiave.
Per inviare un segnale ai mirror effettivamente, hai bisogno di aggiungere
le righe ./signal <site> <username> al termine di
del proprio rsync. Quindi, appena completato il proprio mirroring con il
sito di origine, inizia il push verso i propri destinatari.
È possibile mettere questi comandi sia all'inizio che al termine del
proprio script anonftpsync oppure, se più conveniente, in un
nuovo script che viene avviato da anonftpsync, per esempio:
#!/bin/sh # This script is called by websync to signal the downstream mirrors. ./signal some.other.site archvsync ./signal and.another.site othersiteaccount
In caso di problemi, contatteci.