Linux: Gestire più siti con SiteCopy
Tramite questo tool l’aggiornamento di più
siti web diventa un'operazione semplice e veloce.
di Antonio Gallo
L’utilizzo d’Internet è ormai parte della
vita quotidiana. Molti provider forniscono da tempo
spazio web gratuito dove chiunque può costruire la propria
pagina o un intero sito web. Sia si tratti di un web master
professionista, sia di un programmatore o, di un semplice
studente, sorge il problema di mantenere aggiornata
l’immagine del proprio sito web con il web server. In questo
caso, gestire manualmente l’aggiornamento di tutti i file
modificati non è un’ipotesi praticabile, soprattutto quando
i siti da aggiornare sono molti ed hanno anche diversi mirror.
In questo articolo parleremo di un semplice e potente
strumento che rende agevole l’operazione di aggiornamento di
più siti web.
Cos’è sitecopy ed a cosa serve
Sitecopy è uno strumento indispensabile per
l’aggiornamento di pagine web, sviluppate su una macchina
locale, sui diversi web server remoti che le ospitano. Ogni
sito web è memorizzato in una determinata directory
all’interno del filesystem locale, sitecopy si occupa di
mantenere sincronizzato il contenuto di questa con quello di
uno o più server remoti.
In cosa è diverso sitecopy da mirror,
rdist ed altre utility
Sitecopy è funziona in modo molto differente
rispetto ad altre utility simili quali mirror, rdist, rsync ed
altre ancora. Innanzitutto la prima differenza è il
protocollo di trasmissione utilizzato. L’utilizzo di
“mirror” ed altre utility richiede d’avere a
disposizione un account di shell sul server. Quest’ultima,
non rappresenta una soluzione ottimale quando il server è
collegato direttamente ad Internet, come nel caso di un web
server, per diversi motivi (security, ecc.). Sitecopy invece
utilizza sia il protocollo FTP, sia il nuovissimo WebDAV [DAV].
Questo è un vantaggio notevole in quanto, quasi tutti i
maggiori ISP provider italiani permettono l’uploading delle
pagine web via FTP (Tiscalinet, Geocities, etc.) mentre sono
molto restii a permettere l’accesso attraverso altri tipi di
servizi di rete.
Il secondo punto, ma non meno importante è la
velocità. Sitecopy mantiene internamente un database di tutti
i file trasferiti sul web server remoto. In questo modo è in
grado di riconoscere i file modificati, o cancellati,
verificando i file presenti in locale contro il proprio
database senza interrogare il server. In questo modo sitecopy,
diversamente da altre utility che confrontano singolarmente i
file locali con i file presenti sul server con notevole spreco
di banda, invia, attraverso la rete, solo i file
effettivamente modificati dal web master rispetto alla data
del precedente aggiornamento. Questa macroscopica differenza
nel funzionamento esiste perché programmi come mirror
ed rsync sono stati studiati per mantenere copie di
grandi siti FTP mentre sitecopy è uno strumento ideato
appositamente per soddisfare le esigenze dei web master.
Come si compila e/o installa
I sorgenti di sitecopy possono essere reperiti
su Internet [LYRA]. Oltre al pacchetto con il codice sorgente
sono già presenti alcuni pacchetti contenenti il programma già
compilato per alcuni sistemi operativi (Aix, OS/2, Windows ),
nonché per le varie distribuzioni Linux ( Debian, Suse ).
Tuttavia, in questo articolo, gli esempi sono riferiti
all’utilizzo del programma tramite Linux.
La compilazione di sitecopy non presenta
particolari difficoltà. Essendo un pacchetto sviluppato con i
tool della GNU noteremo al suo interno la presenza dello
script di nome configure. Per compilare ed installare
il programma bisogna digitare i seguenti comandi :
./configure
make
make install
Lo script configure ha il compito di
genare i file necessari alla compilazione del programma
adattandoli al sistema operativo utilizzato. Il comando “make”,
invece, compila e genera l’eseguibile del programma. Infine
"make install" installa l’eseguibile nel
filesystem.
L’ultimo passo prima di passare alla
configurazione ed al reale utilizzo del programma è quello di
creare alcune directory ed i file necessari a sitecopy. Questo
va fatto nella vostra home directory tramite i seguenti
comandi :
cd $HOME
makedir
.sitecopy
chmod
700 .sitecopy
touch
.sitecopyrc
chmod
600 .sitecopyrc
Come si configura
Dopo aver creato la directory .sitecopy ed il
file di configurazione .sitecopyrc, possiamo passare alla
preparazione di quest’ultimo inserendo le opzioni per
istruire sitecopy sui compiti da svolgere. Potete quindi
inserire le informazioni relative ai vostri siti web seguendo
il file .sitecopyrc come nell’esempio (Listato 1).
Come notate, per ogni web server da aggiornare è utilizzata
la direttiva site seguita da un nome univoco con cui
notifichiamo a sitecopy il nome che vogliamo attribuire al
sito. Subito dopo prendono posto le diverse opzioni,
l’ordine in cui appaiono non è rilevante.
Il primo esempio
Nel primo esempio gestiamo l’aggiornamento
del sito Infomedia. Questo è un esempio minimo, infatti le
opzioni server, username, password, remote e local
sono opzioni obbligatorie. Con “server”
specifichiamo il nome, o l’IP address, del server cui
sitecopy deve connettersi . “local” indica da
quale directory, del filesystem locale, sitecopy deve prendere
i file mentre “remote” specifica in quale directory
vanno memorizzati i file dopo aver effettuato la connessione;
infine “username” e “password” sono
ovviamente i dati dell’account FTP o WebDAV utilizzato. In
esempio trasferiamo le pagine memorizzate dalla home directory
dell’utente nella home directory dell’account utilizzato
sul server. Sarà quindi cura del web master del web server
remoto far puntare il sito web desiderato alla directory
utilizzata per il trasferimento dei dati.
Il secondo esempio
Nel secondo esempio è evidenziato l’uso di
nuove opzioni. L’opzione “protocol” specifica a
sitecopy il protocollo da utilizzare, il default è FTP e
quindi non occorre cambiarlo tranne nel caso in cui si
utilizzi WebDAV (in tal caso il valore da impostare sarebbe http).
“port” permette di specificare un numero di porta
diverso quando ci si connette al server nel caso in cui il
server remoto utilizzi degli indirizzi di porta diversi dallo
standard. “ftp nopasv” è invece necessario su
molti server FTP (quello di Tiscalinet per l’appunto) in
quanto specifica a sitecopy di non usare l’estensione del
PASV (Passive Mode) in quanto non supportata dal server, pena
il fallimento dell’operazione.
Il terzo esempio
Anche nel terzo esempio sono presenti nuove
opzioni.
L’opzione “permissions”, valida
solo per i trasferimenti via FTP, può essere impostata su ignore,
exec o all. Il valore di default è “ignore”,
in questo caso, quando i file vengono creati sul server, viene
attribuito loro il valore di default stabilito
dall’amministratore di sistema. “exec” fa in modo
che tutti i file eseguibili conservino gli stessi permessi
anche sul server, questo è un utile accorgimento per
assicurarsi che gli script CGI funzionino regolarmente. “all”
invece fa in modo che i permessi dei file sul server siano gli
stessi dei file in locale. L’opzione “symlinks”
accetta anch’essa tre possibili valori : ignore,
follow e maintain. Con “ignore “vengono
ignorati completamente tutti i riferimenti a link simbolici
presenti nel filesystem locale. Con “follow”
invece, sitecopy segue i link simbolici aggiornando il file a
cui il link punta. In “maintain” (solo per WebDAV)
i link simbolici vengono ricreati sul server remoto identici a
quelli del filesystem locale. Infine l’opzione nooverwrite
va utilizzata quando il server non consente la sovrascrittura
di un file, in tal caso sitecopy provvederà a rimuovere il
file dal server prima di aggiornarlo.
Il quarto esempio
L’ultimo esempio ci mostra altre opzioni
molto utili. “nodelete” istruisce sitecopy a non
cancellare nessun file dal server anche se in locale è stato
fatto. “checkmoved” istruisce sitecopy a cercare il
file che sono stati spostati, in tal modo sitecopy farà
spostare il file al server remoto invece di cancellarlo e
copiarlo nella nuova posizione. “exclude” definisce
quali file o directory sono da escludere dall’aggiornamento,
i file temporanei ad esempio. “ascii” definisce
quali file devono essere trasferiti in modalità ASCII
altrimenti di default è utilizzata la modalità binaria. “rename”,
infine, istruisce sitecopy a trasferire i file sul server
con un diverso nome (questo è utile quando il server è IIS
che usa nome di default per le pagine diverso dagli altri).
Nella configurazione di un sito le opzioni exclude, ascii e
rename possono essere ripetute più volte.
Come si usa
Le opzioni per l’effettivo utilizzo di
sitecopy sono molto semplici. Inizialmente dobbiamo però far
distinzione tra il caso in cui il sito web sia è già
presente sul server remoto ed il caso in cui non lo sia.
Se il sito web è già presente dobbiamo
utilizzare il comando:
sitecopy –-catchup nome_sito
Questo comando dice a sitecopy di marcare
tutti i file nel suo database come “aggiornati”.
Nel caso contrario, invece, si utilizza una
sintassi diversa:
sitecopy –-init nome_sito
Questo comando marca tutti i file del database
di sitecopy come “non aggiornati”.
Con nome_sito si intende il nome del
sito specificato tramite la direttiva site nel file di
configurazione. Sulla riga di comando possono essere
specificati più nomi di sito, separati da uno spazio, oppure
l’opzione “-a” (all) che effettua l’operazione
su tutti i siti presenti nel file di configurazione.
Una volta modificate in locale le pagine del
sito, si può finalmente effettuare l’aggiornamento
utilizzando il comando:
sitecopy –-update -a
Sitecopy supporta anche altre opzioni, la più
utile è l’opzione “--fetch”. Utilizzandola,
sitecopy si connetterà al server remoto e, se quest’ultimo
supporta l’estensione MDTM, aggiornerà il proprio database
con le informazioni sui file presenti sul server.
Quest’opzione è molto comoda per allineare il database di
sitecopy quando viene effettuato l’aggiornamento del sito
web con altri strumenti.
Le ultime opzioni degne di nota sono :
“--list” per vedere i soli file modificati senza
aggiornarli e “--synchronize” che sostituisce tutti
i file locale con quelli presenti sul server.
Per i più pigri : xsitecopy
Se sul vostro sistema avete a disposizione la
libreria GTK e l’ambiente GNOME [GWEB] potete utilizzare xsitecopy.
Questi è un front-end a sitecopy e permette sia la
configurazione sia l’utilizzo di sitecopy tramite
un’interfaccia grafica user-friendly. Questo programma può
essere reperito in forma binaria, sul sito Internet di
sitecopy, oppure, può essere compilato dai sorgenti di
sitecopy utilizzando il parametro “--enable-gnomefe”
quando si lancia lo script configure.
Conclusioni
Sitecopy è uno strumento semplice e
versatile, disegnato tenendo in mente uno scopo specifico e
determinate esigenze da soddisfare. E’ da tenere presente
che lo sviluppo di sitecopy è ancora in corso. Il tool a
linea di comando funziona egregiamente mentre per il front-end
grafico potrebbe esserci ancora qualche piccolo problema o
feature mancante. Tuttavia, fatte salve le dovute avvertenze,
sitecopy è uno strumento assolutamente da provare e che ogni
web master dovrebbe avere.
Riferimenti
[DAV] http://www.webdav.org/other/faq.html
[LYRA] http://www.lyra.org/sitecopy/
[GWEB] http ://www.gnome.org/
listato 1
#.sitecopyrc
#File di esempio su come configurare sitecopy
site infomedia
server www.infomedia.it
username agx
password 3hgg38fj
remote ~/agx/
local ~/nuovi_clienti/infomedia/
site tiscali
server web.tiscalinet.it
port 3576
username fu943
password f3u9y
remote /
local /DOSH/web-site/www.linux.it
protocol ftp
ftp nopasv
site linux
server www.linux.it
username fu943
password f3u9y
remote ~/public_html/
local /DOSH/web-site/www.linux.it
protocol ftp
permissions exec
symlinks follow
nooverwrite
site nalug
server www.linux.it
username f4iuh98
password fi489yu4
remote ~/public_html
local /DOSH/web-site/www.linux.it/nalug
ftp nopasv
exclude *~
exclude *.bak
exclude *gz
exclude personal
exclude software
ascii *.pl
ascii *.txt
ascii *.cgi
nodelete
checkmoved
rename index.html default.htm