Content-type: text/html
FTP, WebDAV et autres serveurs de publication basés sur HTTP (comme par exemple AOLserver et Netscape Enterprise) sont également gérés.
Cette section explique comment mettre en place la maintenance d'un site web à l'aide de sitecopy. Après avoir présenté les rudiments, on examinera deux situations : d'abord celle où vous avez déjà placé votre site sur le serveur distant, puis celle où vous ne l'avez pas encore fait.
Si vous ne l'avez pas déjà fait, il vous faut créer un fichier de
configuration qui contiendra les informations relatives aux sites que
vous désirer administrer. Vous devez également créer un répertoire
dans lequel sitecopy stockera l'état des fichiers de chacun
des sites distants. Le fichier de configuration ainsi que le
répertoire de stockage de l'état des fichiers doivent n'être
accessibles que par vous-même -- sans quoi sitecopy refusera de
démarrer. Pour créer le répertoire de stockage avec les permissions
adéquates, utilisez la commande
mkdir -m 700 .sitecopy
depuis votre répertoire personnel. Pour créer le fichier de
configuration, utilisez les commandes
touch .sitecopyrc
chmod 600 .sitecopyrc
depuis votre répertoire personnel. Ceci fait, éditez le fichier de
configuration pour ajouter les détails relatifs à votre site comme
indiqué à la section CONFIGURATION.
Si vous aviez déjà placé votre site sur le serveur distant,
assurez-vous que vos fichiers locaux soient synchronisés avec les
fichiers distants. Ensuite, lancez
sitecopy --catchup nomdusite
où nomdusite est le nom du site que vous avez indiqué après le mot-clé
site
dans le fichier de configuration.
Si vous n'avez pas de copie locale du site distant, vous pouvez
utiliser le
mode récupération
pour découvrir le contenu du site distant, et le
mode synchronisation
pour le télécharger. Le mode récupération marche bien avec les
serveurs WebDAV, et peut marcher avec les serveurs FTP. Tapez
sitecopy --fetch nomdusite
pour récupérer les informations sur les fichiers du site ; en cas de
succès, tapez
sitecopy --synch nomdusite
pour télécharger une copie locale. N'effectuez PAS ces opérations si
vous avez déjà une copie locale de votre site.
Assurez-vous que l'administrateur ait bien créé la racine du site
distant. Tapez
sitecopy --init nomdusite
où nomdusite est le nom du site que vous avez indiqué après le mot-clé
site
dans le fichier de configuration.
Après avoir mis en place le site comme décrit dans une des deux
sections ci-dessus, vous pouvez commencer à éditer vos fichiers locaux
normalement. Lorsque vous en avez fini avec un ensemble de
changements, et que vous voulez mettre à jour la copie distante de
votre site, tapez
sitecopy --update nomdusite
et tous les fichiers modifiés seront remontés sur serveur. Tout
fichier localement supprimé sera également suppprimé sur le serveur, à
moins que l'option
nodelete
n'ait été spécifiée dans le fichier de configuration. Si vous déplacez
un ou plusieurs fichiers entre deux répertoires, leurs copies
distantes seront supprimées du serveur, puis remontées à nouveau, à
moins que l'option
checkmoved
n'ait été spécifiée dans le fichier de configuration.
À tout moment, si vous désirez voir la liste des changements effectués
au site local depuis la dernière mise à jour, pour pouvez lancer
sitecopy nomdusite
qui affichera la liste des différences.
Dans certaines circonstances, les fichiers qui constituent réellement le site distant diffèrent de ce que sitecopy pense qu'il y a sur le site. Cela peut arriver, par exemple, si la connexion au serveur est interrompue durant une mise à jour. Dans cette situation, vous devriez utiliser le mode récupération pour retrouver du serveur distant la liste des fichier qui constitue le site.
Pour une opération normale, spécifiez un
simple
mode opératoire, suivi par les options que vous avez choisies, puis un
ou plusieurs nom de sites. Par exemple,
sitecopy --update --quiet siteprincipal autresite
mettra à jour silencieusement les sites appelés « siteprincipal »
et « autresite ».
Les mots de passe seront masqués dans l'affichage de débogage, à moins que le mot-clé cleartext ne soit utilisé. Un exemple de l'utilisation des informations de débogage est de déboguer le mode récupération FTP :
sitecopy --debug=ftp,socket --fetch nomdusite
La configuration est assurée par le fichier de configuration (fc). Ce fichier contient une ou plusieurs définitions de sites. Un nom unique est attribué à chaque définition de site ; c'est par ce nom qu'on se réfère à un site en ligne de commande.
Chaque définition de site contient les détails du serveur sur lequel est stocké le site, la manière dont on peut accéder à ce serveur, l'emplacement local et distant du site, ainsi que des options pour ce site si nécessaire.
La définition d'un site est constituée d'une série de lignes :
site nom-du-site
server nom-du-serveur
remote répertoire-racine-distant
local répertoire-racine-local
[
port numéro-de-port ]
[
username utilisateur ]
[
password mot-de-passse ]
[
proxy-server nom-du-proxy
proxy-port numero-port-proxy ]
[
url URL-du-site ]
[
protocol { ftp | webdav } ]
[
ftp nopasv ]
[
ftp showquit ]
[
ftp { usecwd | nousecwd } ]
[
http expect ]
[
http secure ]
[
safe ]
[
state { checksum | timesize } ]
[
permissions { ignore | exec | all } ]
[
symlinks { ignore | follow | maintain } ]
[
nodelete ]
[
nooverwrite ]
[
checkmoved [renames] ]
[
tempupload ]
[
exclude motif ]...
[
ignore motif ]...
[
ascii motif ]...
Tout ce qui suit le caractère # sur une ligne est considéré comme un
commentaire et est ignoré.
Les valeurs peuvent être entourées par des guillemets, et les
caractères peuvent être échappés par une contre-oblique (\).
Par exemple, pour utiliser le motif d'
exclusion
*#, utilisez la ligne suivante:
exclude *#
Les mots-clés proxy-server et proxy-port peuvent être utilisés pour spécifier un serveur de proxy. Les serveurs de proxy ne sont gérés qu'avec le protocole webDAV.
Si le serveur FTP ne gère pas le mode passif (PASV), utilisez l'option ftp nopasv. Pour afficher le message retourné par le serveur à la fermeture de la connexion, utilisez l'option ftp showquit. Si le serveur ne permet la remontée des fichiers que dans le répertoire courant, utilisez le mot-clé ftp usecwd (un symptôme possible est le message : "overwrite permission denied"). Notez que le répertoire racine distant (mot-clé remote) doit être un chemin absolu (qui commence par '/'), sans quoi usecwd sera ignoré.
Si le serveur WebDAV utilise correctement le message d'attente 100-continue, comme par exemple Apache version 1.3.9 et supérieure, utilisez le mot-clé http expect. Cela peut économiser de la bande passante ainsi que réduire le temps nécessaire à une mise à jour.
Pour authentifier l'utilisateur sur le serveur, utilisez les mots-clés username et password. Si le mot de passe n'est pas spécifié, il sera recherché dans le fichier ~/.netrc s'il existe. Voyez ftp(1) pour la syntaxe de ce fichier.
Pour le protocole WebDAV, l'authentification basique et par condensé (digest authentication) sont gérées. Notez que vous ne devriez pas utiliser l'authentification basique, à moins que vous ne considériez la connexion au serveur comme digne de confiance.
Vous pouvez spécifier l'URL complète pour accéder au site
avec le mot-clé
url.
Elle n'est utilisée qu'en mode liste plate, afin qu'elle puisse
figurer dans les pages« Changements récents ». L'URL ne doit
pas
se terminer par une barre oblique (/) ; un exemple valide est
url http://www.site.com/monsite
Si vous spécifiez l'option
tempupload,
les fichiers modifiés sont transmis au serveur distant avec un
préfixe « .in. », puis renommés (par déplacement) en leur nom d'origine
une fois remontés complètement.
L'état d'un fichier est conservé dans le fichier de stockage associé (dans ~/.sitecopy/*), et sert à déterminer quand le fichier a été modifié. Il y a deux méthodes possibles, qui peuvent être choisies via le mot-clé state , avec comme paramètre timesize (par défaut), ou checksum.
timesize utilise la date de dernière modification et la taille du fichier pour détecter s'il a changé. checksum utilise une somme de contrôle MD5 pour détecter toute modification dans le contenu du fichier.
Notez que calculer une somme de contrôle implique de lire le contenu entier du fichier ; et est plus lent que d'utiliser simplement la date de dernière modification et la taille. Cela peut être utile par exemple si vous utilisez un système de gestion de versions qui change la date de dernière modification des fichiers à chaque extraction d'une copie de travail (« checkout »), alors que le contenu des fichiers n'est en réalité pas modifié.
Vous pouvez passer en Mode Sécurisé grâce au mot-clé
safe. Dans ce mode, chaque fois qu'un fichier est remonté sur le serveur, la date de modification du fichier telle qu'elle apparaît sur le serveur est conservée. Par la suite, lorsque le fichier a été changé localement et doit être à nouveau remonté sur le serveur, la date de modification actuellement conservée côté serveur est récupérée puis comparée avec la date locale. En cas de différence, cela signifie que la copie sur le serveur a été changée par une tierce partie ; un message d'avertissement est produit, et votre copie locale n'écrasera pas la copie distante, prévenant ainsi la suppression de toute modification.
Le mode sécurisé peut être utilisé avec des serveurs FTP ou WebDAV, mais si Apache/mod_dav est utilisé, il faut une version de mod_dav au moins égale à 0.9.11.
Note Le mode sécurisé ne peut être utilisé conjointement avec l'option nooverwrite (voir plus bas).
Le mot-clé
remote
spécifie le répertoire racine de la copie distante du site. Vous
pouvez le donner sous la forme d'un chemin absolu, comme :
remote /www/monsite/
Si vous utilisez le protocole FTP, vous pouvez également spécifier le
répertoire sous la forme d'un chemin relatif au répertoire de
connexion ; il doit être dans ce cas préfixé par « ~/ », comme par
exemple :
remote ~/public_html/
Le mot-clé
local
spécifie le répertoire qui sert localement de stockage aux fichiers du
site. Cela peut être un chemin absolu ou relatif à votre
répertoire personnel (donné par la variable d'environnement $HOME),
encore une fois en usant du préfixe « ~/ ».
local ~/html/lesite/
local /home/fred/html/lesite/
sont équivalents, si $HOME est fixé à « /home/fred ».
Pour les deux mots-clés local et remote, le chemin spécifié peut se terminer par une barre oblique, mais ça n'est pas obligatoire.
Vous pouvez utiliser ce mot-clé par exemple pour vous assurer que les permissions de vos scripts CGI soient correctes. Cette option est pour le moment ignorée des serveurs WebDAV. Avec les serveurs FTP, un chmod est exécuté côté serveur pour modifier les permissions.
Les liens symboliques trouvés sur le site local peuvent être au choix ignorés, suivis ou maintenus. En mode « follow », le fichier référencé par un lien symbolique sera remonté à l'emplacement du lien sur le site distant. En mode « maintain », le lien sera aussi créé sur le site distant (voir ci-dessous). Le mode utilisé pour chaque site est spécifié par le mot-clé symlinks , qui peut prendre la valeur ignore, follow ou maintain.
Le mode par défaut est ignore, i.e. les liens symboliques trouvés sur la copie locale du site sont ignorés.
Ce mode est n'actuellement supporté que par les serveurs WebDAV
implémentant WebDAV Advanced Collections, qui est en cours de
développement. Dans ce mode, la cible du lien sur le serveur est
littéralement copié à partir de la cible du lien symbolique. Astuce :
vous pouvez utiliser des URL si vous le désirez :
ln -s http://www.quelquepart.org/ quelquepart
De cette façon , un ordre "302 Redirect" peut être facilement mis en
place depuis le client, sans altérer la configuration du serveur.
Si votre serveur ne permet pas l'écrasement de fichiers existants par ceux que vous remontez, utilisez l'option nooverwrite. Dans ce cas, avant de remonter un fichier, sitecopy supprimera au préalable la copie distante.
Si vous utilisez l'option checkmoved, sitecopy cherchera si des fichiers ont été déplacés localement. Si c'est le cas, lors de la mise à jour du site, ces fichiers seront aussi déplacés sur le site distant.
Avec l'option checkmoved renames, sitecopy cherchera si des fichiers ont été localement déplacés ou renommés. Cette option n'est utilisable qu'en conjonction avec l'option state checksum.
AVERTISSEMENT
Si vous n'utilisez pas de somme de contrôle MD5 pour déterminer l'état des fichiers (i.e. avec l'option state checksum ) N'UTILISEZ PAS non plus l'option checkmoved si vous avez tendance à mettre dans des répertoires différents des fichiers de même nom, taille et date de modification. Le risque d'écrasement est improbable, mais ne dites pas que vous n'aviez pas été prévenu.
Certains fichiers peuvent être ignorés de sitecopy par l'emploi
du mot-clé
exclude,
qui accepte des motifs d'expressions rationnelles à la manière du
shell. Par exemple, utilisez
exclude *.bak
exclude *~
exclude #*#
pour exclure tous les fichiers qui portent l'extension .bak, se
terminent par un tilde (~) ou qui commencent et se terminent par un
dièse. N'oubliez pas d'échapper ou d'entourer de guillemets le motif
s'il inclut un dièse !
Pour exclure des fichiers d'un répertoire particulier, préfixez
simplement le motif par le nom du répertoire -- en commençant par une
barre oblique. Par exemple,
exclude /docs/*.m4
exclude /files/*.gz
excluera tous les fichiers à l'extension .m4 dans le sous-répertoire
« docs », et tous les fichiers à l'extension .gz dans le sous-répertoire
« files ».
Un répertoire entier peut également être exclu -- en omettant la barre
oblique à la fin du nom du répertoire. Par exemple,
exclude /quelque/part
exclude /autre/part
excluera les sous-répertoires du site « quelque/part » et « autre/part ».
Les motifs d'exclusion sont examinés lorsque sitecopy parcourt le répertoire local. Un fichier qui correspond à n'importe lequel des motifs ne sera pas ajouté à la liste des fichiers. Cela signifie qu'un fichier déjà remonté sur le serveur qui correspond à un motif d'exclusion sera supprimé du serveur.
Utilisez l'option ignore pour indiquer à sitecopy qu'il doit ignorer les modifications locales apportées aux fichiers du site. Si un changement est fait au contenu d'un fichier ignoré, le fichier ne sera pas remonté sur le serveur en mode mise à jour. Les fichiers ignorés seront toutefois créés, déplacés et supprimés comme en temps normal.
L'option ignore s'utilise de la même manière que l'option exclude.
Notez que le mode synchronisation écrasera les changements apportés aux fichiers ignorés.
Pour spécifier le mode de transfert des fichiers par FTP, utilisez le mot-clé
ascii.
Tout fichier transféré en utilisant le mode ASCII verra ses caractères
de fin de ligne (CRLF/LF) interprétés de façon appropriée. Par
exemple, utilisez
ascii *.pl
pour remonter tous les fichiers à l'extension .pl comme des fichiers
texte ASCII. Ce mot-clé est actuellement sans effet avec les serveurs WebDAV.
Les valeurs de retour possibles dépendent du mode opératoire. Si plusieurs sites sont spécifiés en ligne de commande, la valeur de retour correspondra aux opérations effectuées pour le dernier des sites spécifiés.
Le site de Fred est remonté sur un serveur FTP nommé « my.server.com » et maintenu dans le répertoire « public_html » situé dans le répertoire de connexion. Le site est conservé en local dans le répertoire /home/fred/html.
site mysite
server my.server.com
url http://www.server.com/fred
username fred
password juniper
local /home/fred/html/
remote ~/public_html/
Ici, le site de Freda est remonté sur un serveur FTP nommé « ftp.elsewhere.com » et maintenu dans le répertoire /www/freda. Le site est conservé en local dans le répertoire /home/freda/sites/elsewhere/
site anothersite
server ftp.elsewhere.com
username freda
password blahblahblah
local /home/freda/sites/elsewhere/
remote /www/freda/
# Freda veut ignorer les fichiers à l'extension .bak ou
# se terminant par un ~:
exclude *.bak
exclude *~
Cet exemple montre comment définir un site avec un serveur WebDAV.
site supersite
server dav.wow.com
protocol webdav
username pow
password zap
local /home/joe/www/super/
remote /
Veuillez envoyer vos rapports d'anomalies et demandes d'améliorations à <sitecopy@lyra.org> plutôt qu'à l'auteur lui-même, puisque la liste de diffusion archive ses messages et les vôtres pourraient être utiles à d'autres utilisateurs.
[Cités seulement pour référence, l'auteur ne revendique aucune conformité à aucun de ces standards.]
RFC 959 - File Transfer Protocol (FTP)
RFC 1521 - Multipurpose Internet Mail Extensions Part One
RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0
RFC 2396 - Uniform Resource Identifiers: Generic Syntax
RFC 2518 - HTTP Extensions for Distributed Authoring -- WEBDAV
RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
RFC 2617 - HTTP Authentication
REC-XML - Extensible Markup Language (XML) 1.0
REC-XML-NAMES - Namespaces in XML