<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1240"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1240/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1240/atom/feed</id>
  <updated>2008-09-23T17:01:06+02:00</updated>
  <entry>
    <title>Mettre à jour drupal simplement</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1240" />
    <id>http://artisan.karma-lab.net/node/1240</id>
    <published>2007-10-18T01:57:29+02:00</published>
    <updated>2008-09-23T17:01:06+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Drupal" />
    <category term="drupalfr.org" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>
  Une avalanche de faille, dont une exécution de code à distance, vient de tomber sur le flux de sécurité de drupal.org. L'installation de la 5.3 est donc pour ainsi dire obligatoire. C'est l'occasion de donner quelques petites astuces de terrain pour faire cela rapidement et simplement. Et d'en profiter pour rendre l'installation drupal un peu plus sure. 
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  Une avalanche de faille, dont une exécution de code à distance, vient de tomber sur le flux de sécurité de drupal.org. L'installation de la 5.3 est donc pour ainsi dire obligatoire. C'est l'occasion de donner quelques petites astuces de terrain pour faire cela rapidement et simplement. Et d'en profiter pour rendre l'installation drupal un peu plus sure. 
</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2>Se tenir informé</h2>
	
<p>
Déjà, pour être à jour, faut-il encore être informé. Le flux indispensable sur lequel il faut connecter votre client RSS est le suivant :<br>
<pre>http://drupal.org/security/rss.xml</pre>
et de manière plus générale un flux annonçant toutes les failles est fort utile :
<pre>http://secunia.com/information_partner/anonymous/o.rss</pre>
</p>


	<a name='chapter_2'></a>
  <h2>Procédure de mise à jour</h2>
	
<p>
Le problème lorsque l'on veut installer une nouvelle version de drupal c'est que souvent on a bidouillé l'installation d'origine. Un changement par ci, un autre par là et on ne sait plus trop bien ce qui a bougé. Du coup, c'est le risque de tout perdre si l'on remplace "bêtement" la version existante avec la mise à jour.
</p>
<p>
La procédure suivante permet de faire le job sans risque et rapidement en utilisant les techniques connues de création de patch. Nous allons ainsi créer un fichier qui contient les différences entre la version d'origine <b>officielle</b> et la nouvelle.</p>

<div class='inline-box note'>Il est évidemment plus simple de disposer d'un accès ligne de commande à la machine qui héberge Drupal. Mais si ce n'est pas le cas, il suffit de faire cela chez vous en téléchargeant sur votre machine la version que vous avez chez votre hébergeur, d'effectuer la procédure, et de renvoyer l'ensemble.
</div>

<p>
Tout d'abord aller dans un répertoire "hors ligne" (par exemple /tmp) et télécharger/décompressez la version source et la version cible :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw3">cd</span> <span class="sy0">/</span>tmp<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/mkdir"><span class="kw2">mkdir</span></a> drupal<br />
<span class="kw3">cd</span> drupal<br />
<br />
<span class="co0"># récupération de la version actuelle non modifiée</span><br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/wget"><span class="kw2">wget</span></a> http:<span class="sy0">//</span><a target="blank" href="http://pwet.fr/man/linux/commandes/ftp"><span class="kw2">ftp</span></a>.drupal.org<span class="sy0">/</span>files<span class="sy0">/</span>projects<span class="sy0">/</span>drupal<span class="nu0">-5.2</span>.<a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a>.gz<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a> -zxvf drupal<span class="nu0">-5.2</span>.<a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a>.gz<br />
<br />
<span class="co0"># récupération de la nouvelle version</span><br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/wget"><span class="kw2">wget</span></a> http:<span class="sy0">//</span><a target="blank" href="http://pwet.fr/man/linux/commandes/ftp"><span class="kw2">ftp</span></a>.drupal.org<span class="sy0">/</span>files<span class="sy0">/</span>projects<span class="sy0">/</span>drupal<span class="nu0">-5.3</span>.<a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a>.gz<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a> -zxvf drupal<span class="nu0">-5.3</span>.<a target="blank" href="http://pwet.fr/man/linux/commandes/tar"><span class="kw2">tar</span></a>.gz
  </div>
  
  </div>

<p>
Etape suivante, fabriquer un patch permettant de passer de l'ancienne à la nouvelle version. Le dossier <kbd>/var/www/mon_drupal</kdd> est à changer en fonction de l'endroit où se trouve réellement votre installation drupal. 

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co0"># Création d'un patch entre les deux versions</span><br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/diff"><span class="kw2">diff</span></a> -Naur drupal<span class="nu0">-5.2</span> drupal<span class="nu0">-5.3</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>mon_drupal<span class="sy0">/</span>mise-a-jour<span class="nu0">-5.2</span><span class="nu0">-5.3</span>.<a target="blank" href="http://pwet.fr/man/linux/commandes/patch"><span class="kw2">patch</span></a>
  </div>
  
  </div>
</p>

<div class='inline-box note'>C'est toujours une bonne idée de garder les patchs dans le dossier final de Drupal pour avoir un historique de ce que vous avez fait.</div>

<p>
Ceci fait aller dans le dossier drupal et simulez l'application du patch sur votre installation. Cette opération ne modifie rien (paramètre dry-run) et permet de voir les fichiers que vous avez trop modifiés et qui du coup ne sont pas patchés (erreur FAILED). 

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw3">cd</span> <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>mon_drupal<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/patch"><span class="kw2">patch</span></a> -p1 --dry-run <span class="sy0">&lt;</span> mise-a-jour<span class="nu0">-5.2</span><span class="nu0">-5.3</span>.<a target="blank" href="http://pwet.fr/man/linux/commandes/patch"><span class="kw2">patch</span></a> <span class="sy0">|</span> <a target="blank" href="http://pwet.fr/man/linux/commandes/more"><span class="kw2">more</span></a>
  </div>
  
  </div>
</p>
<p>
Si tout s'applique correctement, passer à l'étape suivante. Sinon, cela veut sûrement dire que patch ne retrouve pas ses petits dans un fichier trop bidouillé. Le plus simple est de mettre le fichier incriminé dans un endroit sur et de le remplacer par son équivalent en version d'origine (qui se trouve en /tmp/drupal/drupal-5.2/...). Vous ré-appliquerez vos changements à la main après. Relancez après l'étape précédente jusqu'à ce qu'il n'y ait plus de FAILED.
</p>
<p>
Vous pouvez maintenant appliquer le patch "pour de vrai"

  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://pwet.fr/man/linux/commandes/patch"><span class="kw2">patch</span></a> -p1 <span class="sy0">&lt;</span> mise-a-jour<span class="nu0">-5.2</span><span class="nu0">-5.3</span>.<a target="blank" href="http://pwet.fr/man/linux/commandes/patch"><span class="kw2">patch</span></a>
  </div>
  
  </div>
</p>
<p>
Voilà, c'est fait. L'opération prendre tout au plus 5 minutes. Ne vous reste plus maintenant qu'à ré-intégrer les éventuels fichiers qui ne serait pas passé à au moment du test du patch.
</p>


	<a name='chapter_3'></a>
  <h2>Mise à jour de la base</h2>
	
<p>
A ce stade, il faut vérifier que tout fonctionne (évidemment <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/> mais aussi de lancer le <kbd>www.monsite.com/update.php</kbd> pour mettre éventuellement à jour la base de données. 
</p>



	<a name='chapter_4'></a>
  <h2>Protection des fichiers sensibles</h2>
	
<p>
Ceci fait, je vous conseille de renommer les fichiers <kbd>install.php</kbd> et <kbd>update.php</kbd> en des fichiers <kbd>.foo</kbd> ou tout ce qui vous amuse et qui ne soit pas exécutable. Le mieux est même de simplement les mettre ailleurs dans un dossier "hors-ligne". En effet, pas mal de vulnérabilités passent par ces fichiers et là <a class='external' target='_blank' href='http://drupal.org/node/184316' >encore cela n'a pas loupé</a>. 

<p>
Dans le même ordre d'idée, si vous n'utilisez pas XmlRPC (ou ne savez pas ce que c'est <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif" title="Wink" alt="Wink" class="smiley-content"/>, renommer ou déplacez aussi le fichier <kbd>xmlrpc.php</kbd>. De manière générale, enlever tout ce qui ne sert à rien, car c'est source de problèmes. 
</p>


	<a name='chapter_5'></a>
  <h2>C'est terminé</h2>
	
<p>
Voili voilà, en espérant que cela vous sera utile.
</p>
</p>    ]]></content>
  </entry>
</feed>
