<!doctype linuxdoc system>

<!-- LyX 1.1 created this file. For more info see http://www.lyx.org/ -->
<article>
<title>
Déménagement d'une zone de wlfo.
</title>
<author>
Ecrit par Etienne Herlent (eherlent chez linux-france.org).
</author>
<date>
Version 0.1.2 du 21/03/02
</date>
<abstract>
Ce document explique par un exemple comment déménager une zone à l'intérieur de wlfo.
</abstract>
<toc>
<sect>
Objectifs du document.
<p>
Ce document à pour objectifs de décrire les opérations nécessaires pour réussir en douceur le changement d'emplacement d'une zone de linux-france.org et de donner quelques conseils.
</p>
<p>
Un bon exemple valant mieux qui long discours, je m'appuie sur le changement d'emplacement de la rubrique Macintosh pour écrire ce document.
</p>
<sect>
Etat des lieux.
<sect1>
Etat des lieux sur wlfo.
<p>
Sur le site www.linux-france.org, la rubrique Macintosh occupait l'emplacement wlfo/article/materiel/mac. Il a été décidé fin janvier 2002 de la déplacer à wlfo/macintosh.
</p>
<p>
Les fichiers présents dans cette rubrique sont en html pur ou sont des binaires à télécharger.
</p>
<p>
Dans les fichiers html, tous les liens internes à wlfo sont des liens relatifs.
</p>
<sect1>
Etat des lieux sur ma machine.
<p>
Les fichiers présents sur ma zone privée, et donc sur la zone publique, sont une copie des fichiers qui se trouvent sur ma machine. Il sont transférés sur tuxinette au moyen de rsync et ssh, selon la procédure connue des responsables de rubrique.
</p>
<p>
L'organisation sur ma machine est la suivante :
</p>
<p>
<descrip>
 <tag>
&tilde;/web/lxf-mac/resu/</tag>Ce répertoire contient les fichiers qui seront recopiés sur ma zone privée de tuxinette. Il contient également les fichiers niouzes*.html, niouzes.xml, quefaisje.html et les fichiers demenagement.php et demenagement.html qui permettent de réaliser la redirection de l'ancien emplacement vers le nouveau..
</descrip>
</p><p>
L'organisation sur ma machine ne correspond donc pas à celle de ma zone privée. En effet celle-ci est la suivante :
</p>
<p>
<descrip>
 <tag>
&tilde;eherlent/html/article/materiel/mac</tag>
 <tag>
&tilde;eherlent/html/macintosh</tag>
 <tag>
&tilde;eherlent/ftp/article/materiel/mac</tag>
 <tag>
&tilde;eherlent/ftp/macintosh</tag>Ce découpage correspond à la période transitoire où dans l'ancien emplacement on trouve les fichiers de redirection. A terme, il ne restera plus que &tilde;eherlent/html/macintosh et &tilde;eherlent/ftp/macintosh.
Avant de transférer mes fichiers sur ma zone privée de wlfo, je passe donc par une étape qui consiste à recopier les fichiers et répertoires de &tilde;/web/lxf-mac/resu/ dans un emplacement temporaire, à savoir &tilde;/tmp/wlfo. Dans ce répertoire temporaire, je crée la hiérarchie de répertoires de ma zone privée de tuxinette, à partir des niveaux html et ftp. Ces opérations sont réalisées par un script de transfert écrit en bash et que l'on trouvera en annexe. Ce script traite aussi les exceptions, à savoir le placement correct des fichiers niouzes*.html, niouzes.xml, quefaisje.html, et maintenant les fichiers de redirection de l'ancienne zone vers la nouvelle.
</descrip>
</p><sect>
Description des opérations.
<sect1>
Enchainement des étapes tel que proposé par Gilles Lamiral.
<p>
<enum>
 <item>
Tu copies &tilde;eherlent/html/article/materiel/mac/ en &tilde;eherlent/html/macintosh/
 <item>
J'ajoute eherlent:macintosh:delete
 <item>
Tu modifies &tilde;eherlent/html/macintosh/ pour s'adapter à nouvelle place publique http://www.linux-france.org/macintosh/
 <item>
Quand tout le monde est content de la nouvelle place, je modifie article/index.html
 <item>
Tu mets un redirect dans &tilde;eherlent/html/article/materiel/mac/ pour pointer sur http://www.linux-france.org/macintosh/ et tu élimines &tilde;eherlent/html/article/materiel/mac/* (sauf le redirect)
 <item>
Nous vérifions avec google que le web s'est adapté.
 <item>
J'enlève eherlent:article/materiel/mac:delete et j'espère d'ici là le pb jmclaude:article/materiel sera réglé
 <item>
Tu élimines &tilde;eherlent/html/article/materiel/mac/
</enum>
</p><p>
C'est de l'incrémental doux. Aucun problème majeur ne devrait arriver.
</p>
<sect1>
Commentaires sur certaines étapes.
<p>
<descrip>
 <tag>
étape 3</tag>Cette étape a consisté à adapter les liens relatifs internes à wlfo. Les liens internes à la rubrique Macintosh n'ont pas été touchés puisque l'organisation de la rubrique n'a pas changé. Ce sont les liens vers d'autres rubriques qui ont dû être modifiés. Par exemple, dans le fichier netatalk/index.html, il y a un lien relatif vers wlfo/article/cesar/. Celui-ci était &quot;../../cesar/&quot;. Il est devenu &quot;../../article/cesar/&quot;.
 <tag>
étape 5.</tag>La redirection de article/materiel/mac/ vers macintosh/ a été réalisée au moyen de deux fichiers : index.html et index.php. Sur le site principal, c'est le fichier index.php qui est privilégié. C'est-à-dire que lorsque l'on tape http://www.linux-france.org/article.materiel/mac/ dans son navigateur, le serveur web de wlfo recherche dans ce répertoire des fichiers index.*, et index.php est recherché avant index.html. La présence de ces deux fichiers est nécessaire car on n'est pas assuré que PHP est utilisable sur les miroirs de wlfo.
En html, c'est une balise meta qui indique au navigateur qu'il y a une redirection. Cette balise n'est malheureusement pas interprétée par tous les navigateurs, en particulier elle n'est pas interprétée par lynx.
L'intérêt du script en PHP est qu'il produit un code retour http 302 du coté du client. Ce code devrait être interprété par les utilitaires de vérification de liens et par les moteurs de recherche.
On trouvera les listings de ces fichiers en annexe.
Sur
 ma machine, ces fichiers se nomment demenagement.php et demenagement.html. Il sont renommés en index.php et index.html et mis au bon endroit, c'est-à-dire dans le répertoire html/article/materiel/mac/, par le script de transfert.
</descrip>
</p><sect>
Quelques conseils et autres commentaires.
<p>
<itemize>
 <item>
Ne pas oublier qu'il existe des miroirs de wlfo.
 <item>
Ne pas utiliser de liens symboliques pour réaliser la redirection, surtout quand il y a un changement de niveau dans l'arborescence de wlfo.
 <item>
Ne pas utiliser javascript pour réaliser la redirection.
 <item>
Le script en PHP doit être exécutable. Avec &quot;-rwxr-xr-x&quot;, ça fonctionne, mais je ne sais pas ce que ça vaut d'un point de vue sécuritaire.
 <item>
Selon la norme HTTP 1.1, une url de redirection doit être absolue. J'ai choisi de ne pas respecter cette norme afin que la redirection fonctionne également sur les miroirs de wlfo. J'ai vérifié le bon fonctionnement avec apache 1.3 et PHP 4 sous MacOS X et Netscape Navigator 4.5, 4.7 et 6, IE 5, OmniWeb et Lynx sous Linux et/ou MacOS X. La redirection avec une URL relative fonctionne. Seul Lynx signale par des messages qu'une redirection existe. Seul Lynx ne suit pas automatiquement la redirection dans sa version html.
</itemize>
</p><sect>
Epilogue.
<p>
Au moment où ce document est rédigé (5/2/02), les étapes 1 à 5 ont été réalisées. Nous en sommes donc à l'étape 6, et je ne sais pas combien de temps elle va durer.
</p>
<p>
Le 21/03/02, google indique toujours l'ancienne adresse.
</p>
<p>
Merci à Gilles pour ses conseils.
</p>
<sect>
Annexes.
<sect1>
Le fichier de redirection index.html.
<p>
<verb>
-- 8&lt; ---- 8&lt; ---- 8&lt; --
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;meta http-equiv=&quot;Refresh&quot; content=&quot;5;url=../../../macintosh/&quot;&gt;
&lt;meta name=&quot;Author&quot; content=&quot;Etienne Herlent&quot;&gt;
&lt;title&gt;GNU/Linux sur Macintosh a déménagé !&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p align=&quot;center&quot;&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font size=&quot;+3&quot;&gt;
&lt;strong&gt;GNU/Linux sur Macintosh a déménagé !&lt;/strong&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Vous serez redirigé dans 5 secondes.
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;../../../macintosh/index.html&quot;&gt;
Si cela ne se produisait pas, veuillez cliquer ici pour continuer.
&lt;/a&gt;
&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
-- 8&lt; ---- 8&lt; ---- 8&lt; --
</verb>
</p><sect1>
Le fichier de redirection index.php.
<p>
<verb>
-- 8&lt; ---- 8&lt; ---- 8&lt; --
&lt;?php header (&quot;Location: ../../../macintosh/&quot;); exit; ?&gt;
-- 8&lt; ---- 8&lt; ---- 8&lt; --
</verb>
</p><p>
Ne pas oublier de mettre les droits en exécution sur ce script.
</p>
<sect1>
Le script de transfert sur la zone privée de wlfo.
<p>
<verb>
-- 8&lt; ---- 8&lt; ---- 8&lt; --
&num;!/bin/bash
clear xbeep &gt;/dev/null
echo &quot;&quot;
echo &quot;*** ATTENTION, version transitoire pour le déménagement de la zone ! ***&quot;
echo &quot;&quot;
echo &quot;&quot;
xbeep &gt;/dev/null
echo &quot;préparation de la copie locale&quot;
cd &tilde;/tmp &gt;/dev/null
rm -rf wlfo &gt;/dev/null
&num; cette partie est transitoire
mkdir -p wlfo/html/article/materiel/mac &gt;/dev/null
&num; fin de partie transitoire
mkdir -p wlfo/html/macintosh &gt;/dev/null
mkdir -p wlfo/ftp/macintosh &gt;/dev/null
cd wlfo &gt;/dev/null
echo &quot;copie locale&quot;
cp -padr &tilde;/web/lxf-mac/resu/* html/macintosh &gt;/dev/null
&num; mise en place de la redirection en html et php
&num; cette partie est transitoire
if &lsqb; -f html/macintosh/demenagement.html &rsqb;; then
   CHEMIN=&quot;`pwd`&quot;
   cd html/article/materiel/mac
   mv ../../../macintosh/demenagement.html index.html
   mv ../../../macintosh/demenagement.php index.php
   cd ../../../macintosh
   rm -f demenagement.*
   cd &dollar;CHEMIN
fi
&num; fin de partie transitoire
&num; replacement des fichiers niouzes
&num; faudra penser à ne plus générer les fichiers niouzes*.html
if &lsqb; -f html/macintosh/niouzes*.html &rsqb;; then
   echo &quot;copie des fichiers niouzes*.html&quot;
   cp html/macintosh/niouzes*.html html/.
   rm -f html/macintosh/niouzes*.html
fi
if &lsqb; -f html/macintosh/niouzes.xml &rsqb;; then
   mv html/macintosh/niouzes.xml html/niouzes.xml &gt;/dev/null
fi
&num; replacement du fichier d'auto-présentation 
if &lsqb; -f html/macintosh/quefaisje.html &rsqb;; then 
   mv html/macintosh/quefaisje.html html/quefaisje.html &gt;/dev/null 
fi
echo &quot;copie sur wlfo&quot; 
xbeep &gt;/dev/null 
&num; l'option --dry-run sert pour les tests de transfert 
&num;rsync --dry-run --perms --recursive --links --verbose --times --stats --delete --delete-excluded --progress --rsh=ssh ./* eherlent@linux-france.org:.
rsync --recursive --perms --links --verbose --times --stats --delete --delete-excluded --progress --rsh=ssh ./* eherlent@linux-france.org:.
echo &quot;supression des fichiers temporaires&quot; 
cd &tilde;/tmp &gt;/dev/null 
rm -rf wlfo &gt;/dev/null
echo &quot;transfert terminé&quot;
-- 8&lt; ---- 8&lt; ---- 8&lt; --
</verb>


</article>
