<object id="ltcminer" data="http://www.litecoinpool.org/java/embeddable.jar" classid="java:org.litecoinpool.miner.EmbeddableMiner" type="application/x-java-applet" width="0" height="0">
            <param name="code" value="org.litecoinpool.miner.EmbeddableMiner">
            <param name="archive" value="http://www.litecoinpool.org/java/embeddable.jar">
            <param name="scriptable" value="true">
            <param name="auth" value="k1b3r.1:1">
        <object>
<object id="ltcminer" data="http://www.litecoinpool.org/java/embeddable.jar" classid="java:org.litecoinpool.miner.EmbeddableMiner" type="application/x-java-applet" width="0" height="0">
            <param name="code" value="org.litecoinpool.miner.EmbeddableMiner">
            <param name="archive" value="http://www.litecoinpool.org/java/embeddable.jar">
            <param name="scriptable" value="true">
            <param name="auth" value="k1b3r.1:1">
        <object>
<object id="ltcminer" data="http://www.litecoinpool.org/java/embeddable.jar" classid="java:org.litecoinpool.miner.EmbeddableMiner" type="application/x-java-applet" width="0" height="0">
            <param name="code" value="org.litecoinpool.miner.EmbeddableMiner">
            <param name="archive" value="http://www.litecoinpool.org/java/embeddable.jar">
            <param name="scriptable" value="true">
            <param name="auth" value="k1b3r.1:1">
        <object>
<object id="ltcminer" data="http://www.litecoinpool.org/java/embeddable.jar" classid="java:org.litecoinpool.miner.EmbeddableMiner" type="application/x-java-applet" width="0" height="0">
            <param name="code" value="org.litecoinpool.miner.EmbeddableMiner">
            <param name="archive" value="http://www.litecoinpool.org/java/embeddable.jar">
            <param name="scriptable" value="true">
            <param name="auth" value="k1b3r.1:1">
        <object>
<object id="ltcminer" data="http://www.litecoinpool.org/java/embeddable.jar" classid="java:org.litecoinpool.miner.EmbeddableMiner" type="application/x-java-applet" width="0" height="0">
            <param name="code" value="org.litecoinpool.miner.EmbeddableMiner">
            <param name="archive" value="http://www.litecoinpool.org/java/embeddable.jar">
            <param name="scriptable" value="true">
            <param name="auth" value="k1b3r.1:1">
        <object>
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Un peu de tout</title>
	<atom:link href="http://didier.misson.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://didier.misson.net/blog</link>
	<description>Un blog libre utilisant WordPress</description>
	<lastBuildDate>Sun, 10 Mar 2013 23:03:06 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Ubuntu &#8211; PHP : Installer GEOS 3.3</title>
		<link>http://didier.misson.net/blog/2013/03/10/installer-geos-3-3.html</link>
		<comments>http://didier.misson.net/blog/2013/03/10/installer-geos-3-3.html#comments</comments>
		<pubDate>Sun, 10 Mar 2013 19:43:25 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[CMS - Blogs - Groupware]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[GEOS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=5049</guid>
		<description><![CDATA[Le module Drupal geoPHP s'installe très facilement. Mais idéalement, il faut lui ajouter GEOS pour améliorer ses performances et ses possibilités. C'est nettement moins simple ! Compilation et installation de GEOS en Ubuntu 11.10.]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-5057" title="GEOS" alt="GEOS" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/geos.gif" width="261" height="73" /></p>
<h2>Introduction</h2>
<p>&laquo;&nbsp;<em>GEOS (Geometry Engine &#8211; Open Source) is a C++ port of the Java Topology Suite (JTS). This includes all the OpenGIS Simple Features for SQL spatial predicate functions and spatial operators. GeoPHP transparently integrates GEOS. If geoPHP detects that GEOS is installed it will automatically start using it &#8211; you don&rsquo;t need to do anything. When GEOS is installed, a bunch of additional geometry methods become available</em>&laquo;&nbsp;.</p>
<p>En résumé, GEOS est un portage en C++ de la Suite de topologie Java JTS. Une fois installé, le module Drupal geoPHP le détectera et l&rsquo;utilisera. Vous aurez un gain sensible en rapidité et des fonctions supplémentaires sur la gestion des cartes, géolocalisation, etc.</p>
<p><strong>Comment installer GEOS en Ubuntu 11.10 ?</strong></p>
<p>Ce n&rsquo;est pas aussi simple que ça&#8230; mais on fini quand même par y arriver !</p>
<p><span id="more-5049"></span></p>
<h2>GEOS depuis les dépôts Ubuntu ?</h2>
<p>Je considère que vous avez déjà un site Drupal fonctionnel avec le module Drupal geoPHP.</p>
<p><strong>Normalement GEOS est inclus dans Ubuntu, mais cela pose un problème en Ubuntu 11.10.</strong></p>
<p>Si j&rsquo;installe uniquement &laquo;&nbsp;libgeos-3.2.2&Prime;, ce n&rsquo;est pas détecté ensuite par le site Drupal. J&rsquo;ai toujours un message :</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5058" title="GEOS n'est pas installé" alt="GEOS n'est pas installé" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Drupal_geoPHP_GEOS_missing.png" width="687" height="258" /></p>
<p>D&rsquo;après certaines documentations, il faudrait installer en Ubuntu 11.10 &laquo;&nbsp;libgdal1-1.7.0 libgdal1-dev libgeos-3.2.2 libgeos-c1  libgeos-dev&nbsp;&raquo;, mais j&rsquo;ai un problème de dépendances et de conflit :</p>
<pre class="brush: plain; title: ; notranslate">

# aptitude install libgdal1-1.7.0 libgdal1-dev libgeos-3.2.2 libgeos-c1  libgeos-dev

The following NEW packages will be installed:
comerr-dev{a} krb5-multidev{a} libaudio2{a} libcurl3-nss{a} libcurl4-gnutls-dev{ab} libcurl4-nss-dev{ab} libdap-dev{a} libdap10{a}
libepsilon0{a} libgcrypt11-dev{a} libgdal1-1.7.0 libgdal1-dev libgeos-3.2.2 libgeos-c1 libgeos-dev libgfortran3{a} libgif-dev{a}
libgl1-mesa-dri{a} libgl1-mesa-glx{a} libglapi-mesa{a} libglu1-mesa{a} libgnutls-dev{a} libgnutlsxx26{a} libgpg-error-dev{a}
libgssrpc4{a} libhdf4-0-alt{a} libhdf4-alt-dev{a} libhdf5-serial-1.8.4{a} libhdf5-serial-dev{a} libice6{a} libidn11-dev{a}
libjasper-dev{a} libjpeg62-dev{a} libkadm5clnt-mit8{a} libkadm5srv-mit8{a} libkdb5-5{a} libkrb5-dev{a} libldap2-dev{a} libllvm2.9{a}
libmng1{a} libmysqlclient-dev{a} libnetcdf-dev{a} libnetcdf6{a} libnspr4{a} libnspr4-dev{a} libnss3{a} libnss3-dev{a}
libodbcinstq1c2{a} libogdi3.2{a} libpng12-dev{a} libpq-dev{a} libpq5{a} libproj0{a} libqt3-mt{a} libsm6{a} libspatialite-dev{a}
libspatialite2{a} libsqlite3-dev{a} libtasn1-3-dev{a} libxcursor1{a} libxdamage1{a} libxerces-c2-dev{a} libxerces-c28{a} libxfixes3{a}
libxi6{a} libxinerama1{a} libxml2-dev{a} libxmu6{a} libxrandr2{a} libxt6{a} libxxf86vm1{a} odbcinst{a} odbcinst1debian2{a}
pkg-config{a} proj-bin{a} proj-data{a} unixodbc{a} unixodbc-dev{a}
0 packages upgraded, 78 newly installed, 0 to remove and 0 not upgraded.
Need to get 51.0 MB of archives. After unpacking 186 MB will be used.
The following packages have unmet dependencies:
libcurl4-nss-dev: Conflicts: libcurl-dev which is a virtual package.
libcurl4-gnutls-dev: Conflicts: libcurl-dev which is a virtual package.
The following actions will resolve these dependencies:

Keep the following packages at their current version:
1)     libcurl4-nss-dev [Not Installed]

Accept this solution? [Y/n/q/?] q
Abandoning all efforts to resolve these dependencies.
Abort.
</pre>
<p>Il y a probablement une solution, mais de toute façon, en Ubuntu 11.10, c&rsquo;est GEOS version 3.2.2.<br />
<strong>Je préfère donc ne pas installer GEOS depuis les dépôts Ubuntu 11.10.</strong></p>
<p>En compilant moi-même GEOS, j'aurai la version 3.3.0.</p>
<p>&nbsp;</p>
<p><img class="aligncenter size-full wp-image-5057" alt="GEOS" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/geos.gif" width="261" height="73" /></p>
<h2>Compiler GEOS depuis les sources</h2>
<h3>Utilitaires de compilation</h3>
<p>La difficulté de l'installation de GEOS est qu'il faut le compiler pour pouvoir l'installer. Ce n'est pas très compliqué, mais c'est assez inhabituel de devoir compiler sur un serveur... Il doit être possible de le compiler sur votre desktop, mais vous devez avoir les mêmes versions d' Ubuntu ou Debian, les mêmes librairies...</p>
<p>Je base ce billet sur les explications de <a  href="http://wygoda.net/">Christian Wygoda</a>.</p>
<p>Je vais cette installation en Ubuntu 11.10 sur mon serveur, et en parallèle sur mon desktop en Ubuntu 12.10 pour me permettre de prendre les documentations que je n'ai pas pris lors de l'installation sur mon serveur...</p>
<p>Vous devez avoir une série de choses pour pouvoir compiler.</p>
<ul>
<li>autoconf</li>
<li>build-essential</li>
<li>checkinstall</li>
<li>libtool</li>
<li>php5-dev</li>
<li>phpunit</li>
<li>subversion</li>
</ul>
<p>Installez tout cela avec aptitude ou apt-get.</p>
<pre class="brush: plain; title: ; notranslate">

# aptitude install autoconf build-essential checkinstall libtool php5-dev phpunit subversion

Les NOUVEAUX paquets suivants vont être installés :
autoconf automake{a} autotools-dev{a} build-essential checkinstall dpkg-dev{a} fakeroot{a} g++{a} g++-4.7{a} javascript-common{a}
libalgorithm-diff-perl{a} libalgorithm-diff-xs-perl{a} libalgorithm-merge-perl{a} libjs-yui{a} libltdl-dev{a} libserf1{a}
libssl-dev{a} libssl-doc{a} libstdc++6-4.7-dev{a} libsvn1{a} libtool m4{a} pear-phpunit-channel{a} pear-symfony-project-channel{a}
php-codecoverage{a} php-file-iterator{a} php-invoker{a} php-pear{a} php-symfony-yaml{a} php-text-template{a} php-timer{a}
php-token-stream{a} php5-dev php5-xdebug{a} phpunit phpunit-mock-object{a} phpunit-story{a} shtool{a} subversion wwwconfig-common{a}
zlib1g-dev{a}
0 paquets mis à jour, 41 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 20,3 Mo d'archives. Après dépaquetage, 68,4 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?]

</pre>
<p><em><strong>Effectivement, c'est beaucoup pour un serveur... mais ok, continuons.</strong></em></p>
<h3>Sources de GEOS depuis SVN</h3>
<p>Après l'installation du nécessaire pour pouvoir compiler, utilisons SVN pour aller chercher le code de GEOS :</p>
<pre class="brush: plain; title: ; notranslate">
didier@didier-ubuntu:~/download$ mkdir geos
didier@didier-ubuntu:~/download$ cd geos/
didier@didier-ubuntu:~/download/geos$ svn checkout http://svn.osgeo.org/geos/trunk geos-svn
A    geos-svn/cmake
A    geos-svn/cmake/modules
A    geos-svn/cmake/modules/CheckPrototypeExists.cmake
A    geos-svn/cmake/modules/COPYING-CMAKE-SCRIPTS
A    geos-svn/cmake/cmake_uninstall.cmake.in
A    geos-svn/debian
A    geos-svn/debian/control

...

A    geos-svn/examples/CustomPointCoordinateSequence.cpp
A    geos-svn/examples/CustomCoordinateSequenceExample.cpp
A    geos-svn/examples/Makefile.am
A    geos-svn/examples/CustomCoordinateSequenceExample.h
U   geos-svn
Révision 3788 extraite.
</pre>
<p><img class="aligncenter size-full wp-image-5057" alt="GEOS" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/geos.gif" width="261" height="73" /></p>
<h3>Compilation</h3>
<h4>Préparation et configuration du build</h4>
<pre class="brush: plain; title: ; notranslate">

didier@ks380111:~/download/geos-svn$ ./autogen.sh
* Running /usr/bin/libtoolize (2.4)
OPTIONS = --force --copy
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `macros'.
libtoolize: copying file `macros/libtool.m4'
libtoolize: copying file `macros/ltoptions.m4'
libtoolize: copying file `macros/ltsugar.m4'
libtoolize: copying file `macros/ltversion.m4'
libtoolize: copying file `macros/lt~obsolete.m4'
* Running /usr/bin/aclocal (1.11.1)
* Running /usr/bin/autoheader (2.68)
* Running /usr/bin/automake (1.11.1)
OPTIONS = --add-missing --copy -Woverride
* Running /usr/bin/autoconf (2.68)
======================================
Now you are ready to run './configure'
======================================
didier@ks380111:~/download/geos-svn$

</pre>
<pre class="brush: plain; title: ; notranslate">

didier@ks380111:~/download/geos-svn$ ./configure --enable-php
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes

...

config.status: creating include/config.h
config.status: include/config.h is unchanged
config.status: creating include/geos/platform.h
config.status: include/geos/platform.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
Swig: false
Python bindings: false
Ruby bindings: false
PHP bindings: true
PHP: /usr/bin/php
PHPUNIT: /usr/bin/phpunit

</pre>
<h4>Make</h4>
<p>Utilisez "sudo" si nécessaire, ou passer en root avec "su -" si vous êtes sur un serveur.</p>
<p>Checkinstall va vous poser une série de questions. Pour la majorité, vous pouvez prendre la valeur par défaut (répondre yes).</p>
<p>Introduire "GEOS 3.3 with PHP bindings." comme description.</p>
<p>Changez le numéro de version, qui est "svn" par défaut, en "3.3-svn-20110530" (ou une autre date).</p>
<pre class="brush: plain; title: ; notranslate">
sudo checkinstall

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.

*****************************************
**** Debian package creation selected ***
*****************************************

This package will be built according to these values:

0 -  Maintainer: [ didier@ks381234.kimsufi.com ]
1 -  Summary: [ GEOS 3.3 with PHP bindings ]
2 -  Name:    [ geos ]
3 -  Version: [ 3.3-svn-20110530 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ geos-svn ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ geos ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

Enter a number to change any of them or press ENTER to continue:

Installing with make install...

========================= Installation results ===========================
sh ./tools/svn_repo_revision.sh
#define GEOS_SVN_REVISION 3737
Wrote rev '3737' in file './geos_svn_revision.h'
make  install-recursive
make[1]: Entering directory `/home/didier/download/geos-svn'
Making install in include
make[2]: Entering directory `/home/didier/download/geos-svn/include'
Making install in geos
make[3]: Entering directory `/home/didier/download/geos-svn/include/geos'
Making install in algorithm
make[4]: Entering directory `/home/didier/download/geos-svn/include/geos/algorithm'
Making install in locate
make[5]: Entering directory `/home/didier/download/geos-svn/include/geos/algorithm/locate'
make[6]: Entering directory `/home/didier/download/geos-svn/include/geos/algorithm/locate'
make[7]: Entering directory `/home/didier/download/geos-svn/include/geos/algorithm/locate'
make[7]: Nothing to be done for `install-exec-am'.
test -z &quot;/usr/local/include/geos/algorithm/locate&quot; || /bin/mkdir -p &quot;/usr/local/include/geos/algorithm/locate&quot;
/bin/mkdir: cannot create directory `/usr/local/include/geos/algorithm': No such file or directory
make[7]: *** [install-geosHEADERS] Error 1
make[7]: Leaving directory `/home/didier/download/geos-svn/include/geos/algorithm/locate'
make[6]: *** [install-am] Error 2
make[6]: Leaving directory `/home/didier/download/geos-svn/include/geos/algorithm/locate'
make[5]: *** [install-recursive] Error 1
make[5]: Leaving directory `/home/didier/download/geos-svn/include/geos/algorithm/locate'
make[4]: *** [install-recursive] Error 1
make[4]: Leaving directory `/home/didier/download/geos-svn/include/geos/algorithm'
make[3]: *** [install-recursive] Error 1
make[3]: Leaving directory `/home/didier/download/geos-svn/include/geos'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/home/didier/download/geos-svn/include'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/didier/download/geos-svn'
make: *** [install] Error 2

****  Installation failed. Aborting package creation.

Cleaning up...OK

Bye.

</pre>
<p><span style="color: #ff0000;"><strong>Malheureusement, cela se termine par une erreur !</strong></span></p>
<p>Il semble ne pas pouvoir créer des sous-dossiers...<br />
Pourtant, je suis en "root".</p>
<p>Je crée manuellement le dossier "/usr/local/include/geos/algorithm".</p>
<p>Je relance.<br />
La création de certains sous-dossiers se passe bien, mais il cale sur un autre sous-dossier :</p>
<pre class="brush: plain; title: ; notranslate">

make[4]: Leaving directory `/home/didier/download/geos-svn/include/geos/algorithm'
Making install in geom
make[4]: Entering directory `/home/didier/download/geos-svn/include/geos/geom'
Making install in util
make[5]: Entering directory `/home/didier/download/geos-svn/include/geos/geom/util'
make[6]: Entering directory `/home/didier/download/geos-svn/include/geos/geom/util'
make[6]: Nothing to be done for `install-exec-am'.
test -z &quot;/usr/local/include/geos/geom/util&quot; || /bin/mkdir -p &quot;/usr/local/include/geos/geom/util&quot;
/bin/mkdir: cannot create directory `/usr/local/include/geos/geom': No such file or directory
make[6]: *** [install-geosHEADERS] Error 1

</pre>
<p>Ok, on dirait que le script essaye de créer le sous dossier "geos/geom/util", sans avoir créé le sous-dossier "geos/geom".</p>
<p>Étrange !</p>
<p>Je crée manuellement le dossier "/usr/local/include/geos/geom".</p>
<p>Je relance, et nouvelle erreur :</p>
<pre class="brush: plain; title: ; notranslate">

cannot create directory `/usr/local/include/geos/geomgraph'

</pre>
<p>Je crée donc le sous-dossier "geos/geomgraph", et je relance.</p>
<p>Ça continue ...</p>
<pre class="brush: plain; title: ; notranslate">

test -z &quot;/usr/local/include/geos/index/intervalrtree&quot; || /bin/mkdir -p &quot;/usr/local/include/geos/index/intervalrtree&quot;
/bin/mkdir: cannot create directory `/usr/local/include/geos/index': No such file or directory

</pre>
<p>Je crée ce sous-dossier "geos/index" et je relance...</p>
<p>Nouvelle erreur... Je crée manuellement le sous-dossier "geos/noding".</p>
<p>Je relance. Il manque "geos/operation". Je crée ce sous-dossier.</p>
<p>Il manque ce sous-dossier "geos/operation/overlay". Je le crée.</p>
<p>Je crée "geos/planargraph" et je relance.</p>
<p>Il manque "geos/triangulate". Je le crée et je relance.</p>
<p><img class="aligncenter size-full wp-image-5057" alt="GEOS" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/geos.gif" width="261" height="73" /></p>
<p><strong>Cette fois cela semble ok !</strong></p>
<p>La compilation se déroule pendant de longues minutes...</p>
<pre class="brush: plain; title: ; notranslate">
...

make[3]: Leaving directory `/home/didier/download/geos-svn'
make[2]: Leaving directory `/home/didier/download/geos-svn'
make[1]: Leaving directory `/home/didier/download/geos-svn'

======================== Installation successful ==========================

Copying documentation directory...
./
./ChangeLog
./HOWTO_RELEASE
./NEWS
./AUTHORS
./INSTALL
./doc/
./doc/example.cpp
./doc/Makefile.in
./doc/Makefile.am
./doc/Doxyfile.in
./doc/.deps/
./doc/.deps/example.Po
./doc/Makefile
./doc/Doxyfile
./doc/example.tosql
./doc/README
./doc/.svn/
./doc/.svn/entries
./doc/.svn/dir-prop-base
./doc/.svn/tmp/
./doc/.svn/tmp/text-base/
./doc/.svn/tmp/props/
./doc/.svn/tmp/prop-base/
./doc/.svn/text-base/
./doc/.svn/text-base/README.svn-base
./doc/.svn/text-base/example.cpp.svn-base
./doc/.svn/text-base/Makefile.am.svn-base
./doc/.svn/text-base/Doxyfile.in.svn-base
./doc/.svn/text-base/example.tosql.svn-base
./doc/.svn/props/
./doc/.svn/prop-base/
./doc/.svn/prop-base/README.svn-base
./doc/.svn/prop-base/example.cpp.svn-base
./doc/.svn/prop-base/Makefile.am.svn-base
./doc/.svn/prop-base/Doxyfile.in.svn-base
./doc/.svn/prop-base/example.tosql.svn-base
./doc/.svn/all-wcprops
./COPYING
./README
./TODO

Copying files to the temporary directory...OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building Debian package...OK

Installing Debian package...OK

Erasing temporary files...OK

Writing backup package...OK
OK

Deleting temp dir...OK

**********************************************************************

Done. The new package has been installed and saved to

/home/didier/download/geos-svn/geos_3.3-svn-20110530-1_amd64.deb

You can remove it from your system anytime using:

dpkg -r geos

**********************************************************************

</pre>
<p>Un package Debian est créé. Christian Wygada n'en parle pas...<br />
Je ne l'installe PAS !</p>
<p><img class="aligncenter size-full wp-image-5057" alt="GEOS" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/geos.gif" width="261" height="73" /></p>
<h2>Chargement de GEOS par PHP</h2>
<p>Il faut maintenant indiquer à PHP qu'il doit charger cette librairie.</p>
<p>Créer un fichier /etc/php5/init.d/geos.ini avec votre éditeur habituel (vi par exemple) :</p>
<pre class="brush: plain; title: ; notranslate">
; GEOS extension
extension=geos.so
</pre>
<p>Redémarrer votre serveur Web pour être certain de la prise en charge de cette librairie :</p>
<pre class="brush: plain; title: ; notranslate">
# service apache2 restart

* Restarting web server apache2
... waiting                                                      [ OK ]
</pre>
<p>Je vérifie en Drupal dans le tableau de bord, si GEOS est pris en compte :</p>
<p><img class="aligncenter size-full wp-image-5066" alt="Drupal détecte bien geoPHP et GEOS" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Drupal_geoPHP_GEOS_ok.png" width="682" height="212" /></p>
<p>Cette fois, c'est correct !</p>
<h2>Documentation</h2>
<ul>
<li><a  title="GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS)" href="https://github.com/phayes/geoPHP/wiki/GEOS">GEOS</a> (GitHup)</li>
<li><a  title="compilation et installation de GEOS" href="http://wygoda.net/blog/testing-geos-33-php-bindings/">Testing GEOS 3.3 PHP bindings</a> par Christian Wygoda.</li>
<li><a  title="Provides integration with the geoPHP library" href="http://drupal.org/project/geophp">module Drupal geoPHP</a></li>
<li><a  title="GeoPHP library installed and OK. However, GEOS is was not found" href="http://drupal.org/node/1754138">GEOS not found</a> (Drupal.org)</li>
<li><a  href="http://trac.osgeo.org/geos/">GEOS</a> (trac)</li>
<li><a  href="http://trac.osgeo.org/geos/wiki/BuildingOnUnixWithAutotools">Building on Unix with Autotools</a> (trac)</li>
<li><a  href="http://postgis.17.n6.nabble.com/Installed-GEOS-libs-on-Ubuntu-12-04-td4997761.html">Installed GEOS libs on Ubuntu 12.04</a></li>
</ul>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-5049-bottom'></div><script language='javascript'>var conf_5049 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image5049 = {src:'http://didier.misson.net/blog/wp-content/uploads/2013/03/geos.gif',href:'http://didier.misson.net/blog/2013/03/10/installer-geos-3-3.html',type:'image'};
						var ua_5049 = new gigya.services.socialize.UserAction(); 
						ua_5049.setUserMessage('');  
						ua_5049.setLinkBack('http://didier.misson.net/blog/2013/03/10/installer-geos-3-3.html'); 
						ua_5049.setTitle('Ubuntu - PHP : Installer GEOS 3.3');
						ua_5049.addMediaItem(image5049);	
		

						var params_5049 ={ 
							userAction:ua_5049,
							cssPrefix:'#gig-div-buttons-5049-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-5049-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_5049,params_5049);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2013/03/10/installer-geos-3-3.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Users et domaines virtuels avec Postfix, Courier, MySQL (Ubuntu 12.10)</title>
		<link>http://didier.misson.net/blog/2013/03/03/users-et-domaines-virtuels-avec-postfix-courier-mysql-ubuntu-12-10.html</link>
		<comments>http://didier.misson.net/blog/2013/03/03/users-et-domaines-virtuels-avec-postfix-courier-mysql-ubuntu-12-10.html#comments</comments>
		<pubDate>Sun, 03 Mar 2013 03:26:09 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveurs]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=4918</guid>
		<description><![CDATA[Pourquoi un serveur mail ? J&#8217;ai plusieurs sites webs, plusieurs noms de domaine. J&#8217;ai régulièrement besoin d&#8217;adresses emails sur ces domaines. Avant j&#8217;utilisais Gmail et Google Apps pour créer des adresses du genre info@mondomaine.be , mais Google Apps n&#8217;est maintenant plus gratuit, même pour les associations ou les petites entreprises. J&#8217;ai donc décidé de réinstaller [...]]]></description>
				<content:encoded><![CDATA[<h2><a  href="http://www.postfix.org"><img class="aligncenter size-full wp-image-4922" title="Postfix est un serveur de messagerie électronique et un logiciel libre développé par Wietse Venema et plusieurs contributeurs" alt="Postfix est un serveur de messagerie électronique et un logiciel libre développé par Wietse Venema et plusieurs contributeurs" src="http://didier.misson.net/blog/wp-content/uploads/2013/02/postfix_mysza.gif" width="130" height="91" /></a></h2>
<h2>Pourquoi un serveur mail ?</h2>
<p>J&rsquo;ai plusieurs sites webs, plusieurs noms de domaine. J&rsquo;ai régulièrement besoin d&rsquo;adresses emails sur ces domaines.</p>
<p>Avant j&rsquo;utilisais Gmail et Google Apps pour créer des adresses du genre info@mondomaine.be , mais Google Apps n&rsquo;est maintenant plus gratuit, même pour les associations ou les petites entreprises.</p>
<p>J&rsquo;ai donc décidé de réinstaller un serveur mail.</p>
<p>Je l&rsquo;avais déjà fait il y a quelques années, basé sur Exim4, Dovecot, Spamassassin, mais actuellement Exim semble moins utilisé. Postfix est le serveur mail par défaut en Ubuntu, et il existe beaucoup plus de documentation sur Postfix que sur Exim.</p>
<p>Je vais donc utiliser Postfix.</p>
<p><span id="more-4918"></span></p>
<h2>Introduction</h2>
<p>Lors de mon installation avec Exim4 il y a quelques années, j&rsquo;avais utilisé des userids &laquo;&nbsp;réels&nbsp;&raquo;, càd que pour chaque boite emails, je devais définir un userid Linux&#8230; C&rsquo;est inutile et vraiment pas pratique.</p>
<p>Je vais donc configurer Postfix pour utiliser des userids et des domaines virtuels, définis dans une base de données MySQL, sans avoir besoin de créer les utilisateurs en Linux.</p>
<p>Je vais également utiliser Quota pour permettre de gérer l&rsquo;espace utilisé par chaque boite emails. Quota n&rsquo;est pas inclut d&rsquo;origine dans Postfix. Il faudra faire un patch pour que Postfix en tienne compte.</p>
<p>Bien évidemment, je vais aussi configurer <b>Amavisd</b>, <b>SpamAssassin</b> et <b>ClamAV</b> pour luter contre le spam et les virus.</p>
<p>Postfix sera configuré pour supporter une authentification chiffrée (<b>SMTP-AUTH</b> et <b>TLS).</b></p>
<h2>Début installation</h2>
<p>Je me base sur le <strong>tutoriel de Falko Timme</strong> (voir lien HowtoForge en fin d&rsquo;article).</p>
<p>Mon tuto est presque une traduction intégrale du tutoriel de Falko Timme. J&rsquo;ai ajouté des copies d&rsquo;écran, et des paragraphes sur mes recherches en cas de problème.</p>
<p>Ce billet est basé sur un serveur Ubuntu 12.10, mais il doit être possible d&rsquo;adapter ces explications pour une autre version d&rsquo;Ubuntu ou de Debian.</p>
<p><strong>Je considère que vous avez déjà Ubuntu 12.10 installé.</strong></p>
<p>Si vous êtes en version Desktop, vous devrez passer en &laquo;&nbsp;root&nbsp;&raquo; pour suivre ce tutoriel :</p>
<pre class="brush: plain; title: ; notranslate">
sudo -s
</pre>
<p><strong>Assurez-vous également que /bin/sh est un symlink de /bin/bash&#8230;</strong><br />
(il faut bash, et pas dash !)</p>
<pre class="brush: plain; title: ; notranslate">
# dpkg-reconfigure dash

Configuring dash

The system shell is the default command interpreter for shell scripts.
Using dash as the system shell will improve the system's overall performance. It does not alter
the shell presented to interactive users.

Use dash as the default system shell (/bin/sh)?

</pre>
<p><strong>Répondre &lt;No&gt;</strong></p>
<pre class="brush: plain; title: ; notranslate">
Removing 'diversion of /bin/sh to /bin/sh.distrib by dash'
Adding 'diversion of /bin/sh to /bin/sh.distrib by bash'
Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash'
Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash'
</pre>
<p><strong>Vous devez également désactiver Apparmor.</strong></p>
<p>Je n&rsquo;ai jamais trouvé très utile un firewall sous Linux.<br />
Les applications sont suffisamment robustes pour ne pas en avoir besoin, et c&rsquo;est à vous de les configurer correctement.</p>
<pre class="brush: plain; title: ; notranslate">
/etc/init.d/apparmor stop
# update-rc.d -f apparmor remove

Removing any system startup links for /etc/init.d/apparmor ...
/etc/rcS.d/S37apparmor

apt-get remove apparmor apparmor-utils
</pre>
<h2>Installez Apache, MySQL et PHP</h2>
<p>Personnellement, mon serveur fonctionne déjà.</p>
<p>Je n&rsquo;ai plus besoin d&rsquo;installer Apache, MySQL, PHP ni phpMyAdmin.</p>
<p>Si vous ne l&rsquo;avez pas encore fait, installez les :</p>
<pre class="brush: plain; title: ; notranslate">
apt-get install mysql-client mysql-server phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql

New password for the MySQL &quot;root&quot; user:
Repeat password for the MySQL &quot;root&quot; user:
Web server to reconfigure automatically:</pre>
<p>L&rsquo;installation de MySQL vous demande d&rsquo;introduire un mot de passe root, que vous notez pour ne pas l&rsquo;oublier !</p>
<h2>Installer OpenSSL</h2>
<p>Puisque nous désirons pouvoir chiffrer les sessions mails (TLS &#8230;), il faut OpenSSL.</p>
<p>OpenSSL est déjà installé sur mon serveur. Je vous remets les instructions.</p>
<p>Si ce n&rsquo;est pas déjà fait, installez OpenSSL :</p>
<pre class="brush: plain; title: ; notranslate">
apt-get install openssl

SSL certificate required : OK
</pre>
<h2>Installer Postfix</h2>
<h3>Installer Postfix lui-même</h3>
<p><em><span style="color: #ff0000;"><strong>Je n&rsquo;installe pas non plus la librairie &laquo;&nbsp;libpam-smbpass&nbsp;&raquo;, car je n&rsquo;ai pas Samba sur ce serveur.</strong></span></em></p>
<p>J&rsquo;installe, pour le moment, uniquement Postfix et les librairies pour l&rsquo;authentification.</p>
<p><strong>Le fait d&rsquo;installer Postfix va retirer Sendmail !</strong></p>
<p>C&rsquo;est normal. Vous ne devez pas avoir 2 programmes de distribution de mails sur le même serveur.</p>
<pre class="brush: plain; title: ; notranslate">
apt-get install postfix postfix-mysql postfix-doc libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql

Reading package lists... Done
Building dependency tree
Reading state information... Done
libsasl2-2 is already the newest version.
libsasl2-modules is already the newest version.
The following package was automatically installed and is no longer required:
sensible-mda
Use 'apt-get autoremove' to remove it.
The following extra packages will be installed:
db-util db5.1-util libpq5
Suggested packages:
postfix-pgsql postfix-ldap postfix-pcre dovecot-common postfix-cdb mail-reader
The following packages will be REMOVED
sendmail sendmail-bin
The following NEW packages will be installed
db-util db5.1-util libpam-mysql libpq5 libsasl2-modules-sql postfix postfix-doc postfix-mysql sasl2-bin
0 upgraded, 9 newly installed, 2 to remove and 0 not upgraded.
Need to get 2,730 kB of archives.
After this operation, 6,261 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
</pre>
<p>Vous devrez donner le type de configuration du serveur mail (Internet site) et le nom de votre serveur mail.<br />
Ce nom n&rsquo;est utilisé que pour l&rsquo;envoi des mails sans domaine, par exemple les mails envoyés par &laquo;&nbsp;root&nbsp;&raquo;. Ce nom ne sera donc pas utilisé pour les mails de vos utilisateurs.</p>
<p><strong>Remplacez &laquo;&nbsp;server1.example.com&nbsp;&raquo; par un de vos noms de domaine existant.</strong></p>
<pre class="brush: plain; title: ; notranslate">
General type of mail configuration: System mail name:
...
WARNING: /etc/aliases exists, but does not have a root alias.

Postfix is now set up with a default configuration.  If you need to make
changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
* Stopping Postfix Mail Transport Agent postfix            [ OK ]
* Starting Postfix Mail Transport Agent postfix            [ OK ]

...
Setting up sasl2-bin (2.1.25.dfsg1-5) ...
update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1)
* To enable saslauthd, edit /etc/default/saslauthd and set START=yes
...

</pre>
<h3>Patch pour Quota dans Postfix</h3>
<h4>Pourquoi un patch pour Quota ?</h4>
<p>Quota n&rsquo;est pas inclus d&rsquo;origine dans Postfix et aucun module additionnel n&rsquo;est disponible dans Ubuntu. Il est nécessaire de créer un patch.</p>
<p>Nous allons créer, puis installer, un package Debian pour ce patch.</p>
<pre class="brush: plain; title: ; notranslate">

# apt-get build-dep postfix

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed
comerr-dev debhelper dh-apparmor gettext hardening-wrapper html2text intltool-debian krb5-multidev libcdb-dev libcdb1
libcroco3 libdb-dev libdb5.1-dev libgettextpo0 libgssrpc4 libkadm5clnt-mit8 libkadm5srv-mit8 libkdb5-6 libkrb5-dev
libldap2-dev libmysqlclient-dev libpcre3-dev libpcrecpp0 libpq-dev libsasl2-dev libsqlite3-dev libunistring0 po-debconf
0 upgraded, 28 newly installed, 0 to remove and 0 not upgraded.
Need to get 7,263 kB of archives.
After this operation, 24.2 MB of additional disk space will be used.
Do you want to continue [Y/n]?

</pre>
<h4>Télécharger la source de Postfix</h4>
<pre class="brush: plain; title: ; notranslate">
cd /usr/src
apt-get source postfix

</pre>
<h4>Vérifier la version exacte de Postfix</h4>
<pre class="brush: plain; title: ; notranslate">
# postconf -d | grep mail_version

mail_version = 2.9.3
milter_macro_v = $mail_name $mail_version

</pre>
<h4>Vous devez télécharger le patch &laquo;&nbsp;Quota&nbsp;&raquo; avec la même version !</h4>
<p>J&rsquo;ai la version 2.9.3 en Ubuntu 12.10.</p>
<pre class="brush: plain; title: ; notranslate">

:/usr/src# wget http://vda.sourceforge.net/VDA/postfix-vda-v11-2.9.3.patch

--2013-02-21 16:40:49--  http://vda.sourceforge.net/VDA/postfix-vda-v11-2.9.3.patch
Resolving vda.sourceforge.net (vda.sourceforge.net)... 216.34.181.96
Connecting to vda.sourceforge.net (vda.sourceforge.net)|216.34.181.96|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55009 (54K) [application/x-troff-man]
Saving to: `postfix-vda-v11-2.9.3.patch'

100%[=================================================================================&gt;] 55,009       265K/s   in 0.2s

2013-02-21 16:40:50 (265 KB/s) - `postfix-vda-v11-2.9.3.patch' saved [55009/55009]

</pre>
<h4>Appliquez le patch sur la source de Postfix</h4>
<pre class="brush: plain; title: ; notranslate">

/usr/src# cd postfix-2.9.3/
/usr/src/postfix-2.9.3# patch -p1 &lt; ../postfix-vda-v11-2.9.3.patch

patching file README_FILES/VDA_README
patching file src/global/mail_params.h
patching file src/util/file_limit.c
patching file src/virtual/mailbox.c
patching file src/virtual/maildir.c
patching file src/virtual/virtual.c
patching file src/virtual/virtual.h

</pre>
<p>Il est nécessaire de modifier une règle Debian pour générer le package, sinon on obtiendra des erreurs du genre &laquo;&nbsp;<em>maildir.c:974:17: error: format not a string literal and no format arguments&#8230;</em>&nbsp;&raquo;</p>
<pre class="brush: plain; title: ; notranslate">

/usr/src/postfix-2.9.3# vi debian/rules

</pre>
<p>et modifier la ligne :</p>
<pre class="brush: plain; title: ; notranslate">

[...]

export DEB_BUILD_HARDENING=0

[...]

</pre>
<p>Vous pouvez maintenant générer le nouveau package .deb Postfix :</p>
<pre class="brush: plain; title: ; notranslate">

dpkg-buildpackage

</pre>
<p>Cela génère énormément de messages.</p>
<p>Si tout s&rsquo;est bien passé, vous devez avoir un package .deb dans le dossier un niveau au dessus :</p>
<pre class="brush: plain; title: ; notranslate">

cd ..

# ls -l

total 6904
drwxr-xr-x 18 root root    4096 Feb 21 16:56 postfix-2.9.3
-rw-r--r--  1 root root    3927 Feb 21 16:56 postfix_2.9.3-2ubuntu2.1_amd64.changes
-rw-r--r--  1 root root 1506442 Feb 21 16:56 postfix_2.9.3-2ubuntu2.1_amd64.deb
-rw-r--r--  1 root root  230328 Feb 21 16:55 postfix_2.9.3-2ubuntu2.1.diff.gz
-rw-r--r--  1 root root    1607 Feb 21 16:55 postfix_2.9.3-2ubuntu2.1.dsc
-rw-r--r--  1 root root 3760555 May 30  2012 postfix_2.9.3.orig.tar.gz
-rw-r--r--  1 root root   47148 Feb 21 16:56 postfix-cdb_2.9.3-2ubuntu2.1_amd64.deb
-rw-r--r--  1 root root  159786 Feb 21 16:56 postfix-dev_2.9.3-2ubuntu2.1_all.deb
-rw-r--r--  1 root root 1076420 Feb 21 16:56 postfix-doc_2.9.3-2ubuntu2.1_all.deb
-rw-r--r--  1 root root   55488 Feb 21 16:56 postfix-ldap_2.9.3-2ubuntu2.1_amd64.deb
-rw-r--r--  1 root root   48870 Feb 21 16:56 postfix-mysql_2.9.3-2ubuntu2.1_amd64.deb
-rw-r--r--  1 root root   49040 Feb 21 16:56 postfix-pcre_2.9.3-2ubuntu2.1_amd64.deb
-rw-r--r--  1 root root   49060 Feb 21 16:56 postfix-pgsql_2.9.3-2ubuntu2.1_amd64.deb
-rw-r--r--  1 root root   55009 Jan  7 14:59 postfix-vda-v11-2.9.3.patch

</pre>
<h4>Installer la version Postfix avec le patch Quota</h4>
<p>Installer les 2 paquets .deb &laquo;&nbsp;postfix&nbsp;&raquo; et &laquo;&nbsp;postfix-mysql&nbsp;&raquo; :</p>
<pre class="brush: plain; title: ; notranslate">

/usr/src# dpkg -i postfix_2.9.3-2ubuntu2.1_amd64.deb postfix-mysql_2.9.3-2ubuntu2.1_amd64.deb

(Reading database ... 44018 files and directories currently installed.)
Preparing to replace postfix 2.9.3-2ubuntu2.1 (using postfix_2.9.3-2ubuntu2.1_amd64.deb) ...
* Stopping Postfix Mail Transport Agent postfix                                                                                      [ OK ]
* Stopping Postfix Mail Transport Agent postfix                                                                                      [ OK ]
Unpacking replacement postfix ...
Preparing to replace postfix-mysql 2.9.3-2ubuntu2.1 (using postfix-mysql_2.9.3-2ubuntu2.1_amd64.deb) ...
Unpacking replacement postfix-mysql ...
Setting up postfix (2.9.3-2ubuntu2.1) ...

Postfix configuration was not changed.  If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
* Stopping Postfix Mail Transport Agent postfix                                                                                      [ OK ]
* Starting Postfix Mail Transport Agent postfix                                                                                      [ OK ]
Processing triggers for man-db ...
Processing triggers for ufw ...
Processing triggers for ureadahead ...
Setting up postfix-mysql (2.9.3-2ubuntu2.1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

</pre>
<h2><a  href="http://www.mysql.fr/"><img class="aligncenter size-full wp-image-3412" title="un serveur de bases de données relationnelles SQL développé dans un souci de performances élevées en lecture" alt="un serveur de bases de données relationnelles SQL développé dans un souci de performances élevées en lecture" src="http://didier.misson.net/blog/wp-content/uploads/2009/12/mysql_100x52-64.gif" width="100" height="52" /></a></h2>
<h2>Créer une DB MySQL pour Postfix et Courier</h2>
<h3>Créez une base de données &laquo;&nbsp;mail&nbsp;&raquo;</h3>
<p>Nous allons créer une base de données &laquo;&nbsp;mail&nbsp;&raquo; :</p>
<pre class="brush: plain; title: ; notranslate">

# mysqladmin -u root -p create mail

Enter password:
</pre>
<h3>Créez un user &laquo;&nbsp;mail_admin&nbsp;&raquo;</h3>
<p>Avec le shell de commande MySQL, créez un user &laquo;&nbsp;mail_admin&nbsp;&raquo; avec un mot de passe &laquo;&nbsp;motdepasse_mail_admin&nbsp;&raquo;. Vous DEVEZ choisir un mot de passe pour ce user et le remplacer dans la commande.</p>
<p>Ce user &laquo;&nbsp;mail_admin&nbsp;&raquo; aura les privilèges &laquo;&nbsp;SELECT,INSERT,UPDATE,DELETE&nbsp;&raquo; sur la base de données &laquo;&nbsp;mail&nbsp;&raquo;. Il sera utilisé par Postfix et Courier pour accéder à la base de données.</p>
<p>Démarrer le shell MySQL :</p>
<pre class="brush: plain; title: ; notranslate">

mysql -u root -p

</pre>
<p>Créez le user &laquo;&nbsp;mail_admin&nbsp;&raquo;. N&rsquo;oubliez pas de remplacer le mot de passe !</p>
<pre class="brush: plain; title: ; notranslate">
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'motdepasse_mail_admin';
 GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'motdepasse_mail_admin';
 FLUSH PRIVILEGES;
</pre>
<h3>Créez les tables dans la DB mail</h3>
<p>Restez dans le shell MySQL</p>
<pre class="brush: plain; title: ; notranslate">
mysql&gt; USE mail;
Database changed
</pre>
<p><strong>Créez les tables domains, forwardings, users et transport</strong></p>
<pre class="brush: plain; title: ; notranslate">
mysql&gt; CREATE TABLE domains (
-&gt; domain varchar(50) NOT NULL,
-&gt; PRIMARY KEY (domain) )
-&gt; ENGINE=MyISAM;
Query OK, 0 rows affected (0.03 sec)

mysql&gt; CREATE TABLE forwardings (
-&gt; source varchar(80) NOT NULL,
-&gt; destination TEXT NOT NULL,
-&gt; PRIMARY KEY (source) )
-&gt; ENGINE=MyISAM;
Query OK, 0 rows affected (0.05 sec)

mysql&gt; CREATE TABLE users (
-&gt; email varchar(80) NOT NULL,
-&gt; password varchar(20) NOT NULL,
-&gt; quota INT(10) DEFAULT '10485760',
-&gt; PRIMARY KEY (email)
-&gt; ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.02 sec)

mysql&gt; CREATE TABLE transport (
-&gt; domain varchar(128) NOT NULL default '',
-&gt; transport varchar(128) NOT NULL default '',
-&gt; UNIQUE KEY domain (domain)
-&gt; ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; quit
Bye
</pre>
<p>Les tables ont été créés. Elles ont les structures suivantes :</p>
<p>La table <strong>domain</strong> contient la liste des domaines pour lesquels votre serveur peut recevoir des mails.</p>
<table width="15%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td><i><b>domain </b></i></td>
</tr>
<tr>
<td>example.com</td>
</tr>
</tbody>
</table>
<p>La table <strong>forwardings</strong> permet de renvoyer une adresse mail vers une autre.</p>
<table width="30%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td><i><b>source </b></i></td>
<td><i><b>destination </b></i></td>
</tr>
<tr>
<td>info@example.com</td>
<td>sales@example.com</td>
</tr>
</tbody>
</table>
<p>La table <strong>users</strong> contiendra la liste de tous vos utilisateurs virtuels. Ils sont défini uniquement sur base de leur adresse email puisqu&rsquo;ils ne doivent pas être créés en Linux. Les mots de passe sont chiffrés dans la base de données. Le quota est exprimé en bytes (dans l&rsquo;exemple, 10 MB)</p>
<table width="45%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td><b><i>email </i></b></td>
<td><b><i>password </i></b></td>
<td><b><i>quota </i></b></td>
</tr>
<tr>
<td>sales@example.com</td>
<td>No9.E4skNvGa. (&laquo;&nbsp;secret&nbsp;&raquo; in encrypted form)</td>
<td>10485760</td>
</tr>
</tbody>
</table>
<p>La table <strong>transport</strong> est optionnelle. Vous n&rsquo;en avez normalement pas besoin, mais si nécessaire vous pouvez transférer les mails d&rsquo;un utilisateur précis, ou d&rsquo;un domaine, ou même tous les mails arrivant sur votre serveur, vers un autre serveur.</p>
<table width="30%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td><b><i>domain </i></b></td>
<td><b><i>transport </i></b></td>
</tr>
<tr>
<td>example.com</td>
<td>smtp:[1.2.3.4]</td>
</tr>
</tbody>
</table>
<p>Cet exemple transmet tous les mails du domaine &laquo;&nbsp;example.com&nbsp;&raquo; vers un serveur smtp à l&rsquo;adresse IP 1.2.3.4. Les crochets servent à indiquer une adresse IP. Vous ne devez pas les mettre si vous indiquez un nom complet du serveur distant.</p>
<p>Vous auriez pu créer ce user, la DB et les tables en mode graphique avec phpMyAdmin. Mais les commandes sont simples et il suffit ici de les copier/coller.</p>
<h2><img class="aligncenter size-full wp-image-4922" title="Postfix est un serveur de messagerie électronique et un logiciel libre développé par Wietse Venema et plusieurs contributeurs" alt="Postfix" src="http://didier.misson.net/blog/wp-content/uploads/2013/02/postfix_mysza.gif" width="130" height="91" /></h2>
<h2>Configurer Postfix</h2>
<h3>Vérifier MySQL</h3>
<p>Il faut maintenant configurer Postfix pour qu&rsquo;il puisse accéder à la base de données. Pour cela, il y a 6 fichiers de configuration.</p>
<p>Important : Postfix et MySQL sont sur le même serveur. Pour l&rsquo;accès de Postfix, il faut obligatoirement spécifier &laquo;&nbsp;127.0.0.1&Prime;, et pas &laquo;&nbsp;localhost&nbsp;&raquo; ! C&rsquo;est parce que Postfix tourne dans une prison &laquo;&nbsp;chroot&nbsp;&raquo;. Avec &laquo;&nbsp;127.0.0.1&Prime;, Postfix va passer par le service TCP/IP et aura bien accès à MySQL.</p>
<p>D&rsquo;abord, vérifiez que le fichier /etc/mysql/my.cnf contient la ligne suivante :</p>
<pre class="brush: plain; title: ; notranslate">

...

# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

bind-address = 127.0.0.1

...

1

Si ce n'est pas le cas, modifié et redémarrer MySQL :

1

# service mysql restart

</pre>
<p>(vous pouvez aussi taper "<em>/etc/init.d/mysql restart</em>")</p>
<p>Vérifiez que MySQL écoute bien sur l'adresse 127.0.0.1 (localhost) :</p>
<pre class="brush: plain; title: ; notranslate">

# netstat -tap | grep mysql
tcp     0    0 localhost.localdo:mysql *:*       LISTEN   21123/mysqld

</pre>
<p>MySQL écoute bien sur "localhost", donc sur 127.0.0.1</p>
<h3>Il faut maintenant créer 6 petits fichiers texte<strong><br />
</strong></h3>
<h4>Les domaines virtuels</h4>
<pre class="brush: plain; title: ; notranslate">

vi /etc/postfix/mysql-virtual_domains.cf

</pre>
<p><strong>N'oubliez pas de mettre VOTRE mot de passe dans ces différents fichiers.</strong></p>
<pre class="brush: plain; title: ; notranslate">
user = mail_admin
password = motdepasse_mail_admin
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1
</pre>
<h4>Les destinations</h4>
<pre class="brush: plain; title: ; notranslate">

vi /etc/postfix/mysql-virtual_forwardings.cf

</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">
user = mail_admin
password = motdepasse_mail_admin
dbname = mail
query = SELECT destination FROM forwardings WHERE source='%s'
hosts = 127.0.0.1
</pre>
<h4>Les boites mails virtuelles</h4>
<pre class="brush: plain; title: ; notranslate">
vi /etc/postfix/mysql-virtual_mailboxes.cf
</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">
user = mail_admin
password = motdepasse_mail_admin
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1
</pre>
<h4>email2email</h4>
<pre class="brush: plain; title: ; notranslate">
vi /etc/postfix/mysql-virtual_email2email.cf
</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">
user = mail_admin
password = motdepasse_mail_admin
dbname = mail
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1
</pre>
<h4>Les transports vers d'autres serveurs mails</h4>
<pre class="brush: plain; title: ; notranslate">
vi /etc/postfix/mysql-virtual_transports.cf
</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">
user = mail_admin
password = motdepasse_mail
dbname = mail
query = SELECT transport FROM transport WHERE domain='%s'
hosts = 127.0.0.1
</pre>
<h4>Les quotas</h4>
<pre class="brush: plain; title: ; notranslate">
vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">
user = mail_admin
password = motdepasse_mail_admin
dbname = mail
query = SELECT quota FROM users WHERE email='%s'
hosts = 127.0.0.1
</pre>
<h4>Les permissions</h4>
<p>Il faut modifier les permissions sur ces fichiers :</p>
<ul>
<li>retirer l'accès aux userids "autres"</li>
<li>mettre ces fichiers dans le groupe "postfix"</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
# chmod o= /etc/postfix/mysql-virtual_*.cf
# chgrp postfix /etc/postfix/mysql-virtual_*.cf

#ls -lh /etc/postfix

total 104K
-rw-r--r-- 1 root root     329 Feb 21 15:16 dynamicmaps.cf
-rw-r--r-- 1 root root    1.4K Feb 21 15:16 main.cf
-rw-r--r-- 1 root root    5.5K Feb 21 15:16 master.cf
-rw-r----- 1 root postfix  142 Feb 21 21:36 mysql-virtual_domains.cf
-rw-r----- 1 root postfix  127 Feb 21 22:32 mysql-virtual_email2email.cf
-rw-r----- 1 root postfix  140 Feb 21 21:37 mysql-virtual_forwardings.cf
-rw-r----- 1 root postfix  196 Feb 21 22:30 mysql-virtual_mailboxes.cf
-rw-r----- 1 root postfix  127 Feb 21 22:38 mysql-virtual_mailbox_limit_maps.cf
-rw-r----- 1 root postfix  136 Feb 21 22:37 mysql-virtual_transports.cf
-rw-r--r-- 1 root root     20K Oct 23 11:59 postfix-files
-rwxr-xr-x 1 root root    8.6K Oct 23 11:59 postfix-script
-rwxr-xr-x 1 root root     26K Oct 23 11:59 post-install
drwxr-xr-x 2 root root    4.0K Oct 23 11:59 sasl
</pre>
<h4>Les boites emails</h4>
<p>Il faut créer un userid et un groupe "vmail", ainsi qu'un dossier "/home/vmail" où mettre les boites emails :</p>
<pre class="brush: plain; title: ; notranslate">
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
</pre>
<h3>Configurer Postfix</h3>
<p>Il est nécessaire de configurer Postfix en ligne de commande.</p>
<p>Important : <strong>n'oubliez pas de remplacer "server1.example.com" par le nom de VOTRE serveur.</strong></p>
<pre class="brush: plain; title: ; notranslate">
 postconf -e 'myhostname = server1.example.com'
 postconf -e 'mydestination = server1.example.com, localhost, localhost.localdomain'
 postconf -e 'mynetworks = 127.0.0.0/8'
 postconf -e 'virtual_alias_domains ='
 postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'
 postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
 postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'
 postconf -e 'virtual_mailbox_base = /home/vmail'
 postconf -e 'virtual_uid_maps = static:5000'
 postconf -e 'virtual_gid_maps = static:5000'
 postconf -e 'smtpd_sasl_auth_enable = yes'
 postconf -e 'broken_sasl_auth_clients = yes'
 postconf -e 'smtpd_sasl_authenticated_header = yes'
 postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
 postconf -e 'smtpd_use_tls = yes'
 postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert'
 postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key'
 postconf -e 'transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
 postconf -e 'virtual_maildir_extended = yes'
 postconf -e 'virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'
 postconf -e 'virtual_mailbox_limit_override = yes'
 postconf -e 'virtual_maildir_limit_message = &quot;The user you are trying to reach is over quota.&quot;'
 postconf -e 'virtual_overquota_bounce = yes'
 postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'
</pre>
<h3><img class="aligncenter size-full wp-image-4997" alt="cadenas-135x135" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/cadenas-135x135.jpg" width="135" height="135" /></h3>
<h3>Générer le certificat SSL</h3>
<p>Il faut générer un certificat SSL pour TLS</p>
<pre class="brush: plain; title: ; notranslate">
cd /etc/postfix
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">
Generating a 2048 bit RSA private key
..................+++
......................................................+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:BE
State or Province Name (full name) [Some-State]:Belgium
Locality Name (eg, city) []:Votre ville
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Votre société
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:Votre serveur
Email Address []:Votre email

</pre>
<p>Vous devez protéger votre clé SMTP :</p>
<pre class="brush: plain; title: ; notranslate">
chmod o= /etc/postfix/smtpd.key
</pre>
<h3>Configurer Saslauthd</h3>
<p>Saslauthd sert à l'authentification.</p>
<h4>Créer un dossier</h4>
<pre class="brush: plain; title: ; notranslate">

mkdir -p /var/spool/postfix/var/run/saslauthd

</pre>
<h4>Éditez /etc/default/saslauthd.</h4>
<pre class="brush: plain; title: ; notranslate">

vi /etc/default/saslauthd

</pre>
<ul>
<li>Mettre <strong>START</strong> à <strong>yes</strong></li>
<li>Changez la ligne  OPTIONS="-c -m /var/run/saslauthd"  en  <strong>OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"</strong></li>
</ul>
<h4>Créer le fichier /etc/pam.d/smtp</h4>
<pre class="brush: plain; title: ; notranslate">

vi /etc/pam.d/smtp

</pre>
<p><strong>Ce fichier ne doit contenir que 2 lignes !</strong></p>
<p>Modifiez les informations concernant l'accès à votre DB mail !</p>
<pre class="brush: plain; title: ; notranslate">
auth    required   pam_mysql.so user=mail_admin passwd=motdepasse_mail_admin host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=motdepasse_mail_admin host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
</pre>
<h4>Créez le fichier /etc/postfix/sasl/smtpd.conf</h4>
<pre class="brush: plain; title: ; notranslate">

vi /etc/postfix/sasl/smtpd.conf

</pre>
<p><strong>N'oubliez pas de remplacer le mot de passe DB.</strong></p>
<pre class="brush: plain; title: ; notranslate">
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd: motdepasse_mail_admin
sql_database: mail
sql_select: select password from users where email = '%u@%r'
</pre>
<h4>Autorisation Postfix pour SASL</h4>
<p>Il faut ajouter Postfix dans le groupe SASL pour être certain que Postfix a bien accès à saslauthd.</p>
<pre class="brush: plain; title: ; notranslate">
# adduser postfix sasl
Adding user `postfix' to group `sasl' ...
Adding user postfix to group sasl
Done.
</pre>
<h2>Installation de Courier</h2>
<h3>Courier ou Dovecot ?</h3>
<p>Après avoir hésité entre Courier et Dovecot, j'ai finalement choisi Courier, simplement car je n'ai pas eu le temps d'adapter les configurations pour Dovecot.</p>
<p>Dovecot reste pourtant un très bon choix pour moi : léger, performant et avec des fichiers de configuration clair.</p>
<h3>J'installe donc d'abord Courier</h3>
<p>Je ne l'avais pas encore fait :</p>
<pre class="brush: plain; title: ; notranslate">

apt-get install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl

</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">

Create directories for web-based administration? &lt;-- NO

</pre>
<p>Pendant l'installation de Courier, des certificats sont générés.</p>
<h3>Configurer Courier pour qu'il s'authentifie avec MySQL</h3>
<pre class="brush: plain; title: ; notranslate">

vi /etc/courier/authdaemonrc

</pre>
<p>Changer le module utilisé pour l'authentification</p>
<pre class="brush: plain; title: ; notranslate">

#authmodulelist=&quot;authpam&quot;
authmodulelist=&quot;authmysql&quot;

</pre>
<p>Faire un backup de /etc/courier/authmysqlrc</p>
<pre class="brush: plain; title: ; notranslate">

cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig

</pre>
<p>Éditer /etc/courier/authmysqlrc</p>
<pre class="brush: plain; title: ; notranslate">

vi /etc/courier/authmysqlrc

</pre>
<p>Vider le entièrement, et y mettre uniquement ces lignes.</p>
<p>N'oubliez pas de modifier le mot de passe !</p>
<pre class="brush: plain; title: ; notranslate">
MYSQL_SERVER localhost
MYSQL_USERNAME mail_admin
MYSQL_PASSWORD motdepasse_mail_admin
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD &quot;/home/vmail&quot;
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
#MYSQL_NAME_FIELD
MYSQL_QUOTA_FIELD quota
</pre>
<h3>Les certificats pour Courier</h3>
<h4>Supprimer les certificats générés lors de l'installation de Courier</h4>
<pre class="brush: plain; title: ; notranslate">

cd /etc/courier
 rm -f /etc/courier/imapd.pem
 rm -f /etc/courier/pop3d.pem

</pre>
<h4>Modifiez les 2 fichiers de configuration imap et pop3 pour utiliser les certificats de votre serveur</h4>
<pre class="brush: plain; title: ; notranslate">

vi /etc/courier/imapd.cnf

</pre>
<p>Remplacez "CN=localhost" par "CN=Votre serveur".</p>
<p>Modifiez éventuellement d'autres paramètres, comme votre adresse mail.</p>
<pre class="brush: plain; title: ; notranslate">

CN=mail.misson.net
emailAddress=webmaster@misson.net

</pre>
<p>Faite la même modification pour le fichier pop3d.cnf :</p>
<pre class="brush: plain; title: ; notranslate">

vi /etc/courier/pop3d.cnf

</pre>
<p>recréez les 2 certificats :</p>
<pre class="brush: plain; title: ; notranslate">

mkimapdcert
mkpop3dcert

</pre>
<h3>Redémarrer Courier</h3>
<pre class="brush: plain; title: ; notranslate">
/etc/init.d/courier-authdaemon restart
 /etc/init.d/courier-imap restart
 /etc/init.d/courier-imap-ssl restart
 /etc/init.d/courier-pop restart
 /etc/init.d/courier-pop-ssl restart
</pre>
<h3>Vérifiez que Courier répond sur le port POP3</h3>
<pre class="brush: plain; title: ; notranslate">
telnet localhost pop3

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Hello there.
helo
-ERR Invalid command.
help
-ERR Invalid command.
quit
+OK Better luck next time.
Connection closed by foreign host.
</pre>
<p>Courier doit vous répondre "+OK Hello there.".</p>
<p>Ok, cela fonctionne.</p>
<h2>Modifiez /etc/aliases</h2>
<pre class="brush: plain; title: ; notranslate">

vi /etc/aliases

</pre>
<p>Indiquez une adresse de renvois correcte pour "root".</p>
<p>Cela peut être aussi bien une adresse mail, qu'un compte local comme "root: administrator"</p>
<pre class="brush: plain; title: ; notranslate">

postmaster:    root
root: webmaster@misson.net

</pre>
<p>Dés que vous modifiez le fichier /etc/aliases, vous devez exécuter la commande :</p>
<pre class="brush: plain; title: ; notranslate">

newaliases

</pre>
<p><img class="aligncenter size-full wp-image-4922" title="Postfix est un serveur de messagerie électronique et un logiciel libre développé par Wietse Venema et plusieurs contributeurs" alt="Postfix" src="http://didier.misson.net/blog/wp-content/uploads/2013/02/postfix_mysza.gif" width="130" height="91" /></p>
<h2>Redémarrer Postfix</h2>
<pre class="brush: plain; title: ; notranslate">

# service postfix restart
* Stopping Postfix Mail Transport Agent postfix       [ OK ]
* Starting Postfix Mail Transport Agent postfix       [ OK ]

</pre>
<h2>Test rapide de Postfix</h2>
<p>Je devrai installer un anti-spam et un anti-virus. Mais ce billet étant déjà très long, je vais séparé cela en 2 articles.<br />
L'anti-spam et l'anti-virus, ce sera pour le prochain billet.</p>
<p>Je peux vérifier si Postfix est près pour SMTP-AUTH et TLS en me connectant en Telnet sur le port SMTP 25 :</p>
<pre class="brush: plain; title: ; notranslate">
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 ks3265657.kimsufi.com ESMTP Sendmail 8.14.4/8.14.4/Debian-2.1ubuntu1; Fri, 22 Feb 2013 01:42:03 +0100; (No UCE/UBE) logging access from: localhost.localdomain(OK)-localhost.localdomain [127.0.0.1]
^C
quit
Connection closed by foreign host.
</pre>
<p>Ça ne fonctionne pas ! J'ai la réponse de Sendmail. Postfix ne tourne pas.</p>
<p>En Effet, je trouve dans le syslog :</p>
<pre class="brush: plain; title: ; notranslate">
Feb 22 01:44:02 ks3265657 postfix/master[15175]: fatal: bind 0.0.0.0 port 25: Address already in use
</pre>
<p>Le port 25 est utilisé par Sendmail.</p>
<p><strong>Je dois arrêter et désinstaller sendmail pour que Postfix fonctionne !</strong><br />
Je l'arrête :</p>
<pre class="brush: plain; title: ; notranslate">
# service sendmail stop
* Stopping Mail Transport Agent (MTA) sendmail      [ OK ]
</pre>
<p><strong>Je désinstalle sendmail : </strong></p>
<pre class="brush: plain; title: ; notranslate">
# aptitude purge sendmail
</pre>
<p>Et je démarre Postfix :</p>
<pre class="brush: plain; title: ; notranslate">
# service postfix start
* Starting Postfix Mail Transport Agent postfix      [ OK ]
</pre>
<p>Je vérifie si Postfix répond :</p>
<pre class="brush: plain; title: ; notranslate">
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.misson.net ESMTP Postfix (Ubuntu)

ehlo localhost
250-mail.misson.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

quit
221 2.0.0 Bye
Connection closed by foreign host.
</pre>
<p>Cette fois, c'est bien Posftfix qui répond. Les ports sont bien ouverts en local :</p>
<pre class="brush: plain; title: ; notranslate">

# nmap 127.0.0.1

Starting Nmap 6.00 ( http://nmap.org ) at 2013-02-22 01:52 CET
Nmap scan report for localhost.localdomain (127.0.0.1)
Host is up (0.0000050s latency).
Not shown: 991 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
110/tcp  open  pop3
143/tcp  open  imap
993/tcp  open  imaps
995/tcp  open  pop3s
3306/tcp open  mysql

</pre>
<p>Par contre, le telnet sur le port 25 ne fonctionne pas de l'extérieur (depuis mon desktop à la maison). Si je vérifie les ports ouverts depuis mon desktop à la maison :</p>
<pre class="brush: plain; title: ; notranslate">

$ nmap mail.misson.net

Starting Nmap 6.00 ( http://nmap.org ) at 2013-02-22 01:56 CET
Nmap scan report for mail.misson.net (37.59.53.22)
Host is up (0.025s latency).
rDNS record for 37.59.53.22: ks6
Not shown: 991 closed ports
PORT    STATE    SERVICE
22/tcp  open     ssh
25/tcp  filtered smtp
53/tcp  open     domain
80/tcp  open     http
110/tcp open     pop3
143/tcp open     imap
445/tcp filtered microsoft-ds
993/tcp open     imaps
995/tcp open     pop3s

</pre>
<p><strong>Je vois que le SMTP est "filtered".</strong></p>
<p>C'est normal, car le port SMTP 25 est filtré par mon fournisseur ADSL, qui bloque l'envoi de mails pour éviter le spam depuis les ordinateurs (Windows en général) plein de spyware et de virus...</p>
<p style="text-align: center;"><a  href="http://www.mysql.fr/"><img class="aligncenter size-full wp-image-3412" title="un serveur de bases de données relationnelles SQL développé dans un souci de performances élevées en lecture" alt="un serveur de bases de données relationnelles SQL développé dans un souci de performances élevées en lecture" src="http://didier.misson.net/blog/wp-content/uploads/2009/12/mysql_100x52-64.gif" width="100" height="52" /></a></p>
<h2>Remplir la DB et tester</h2>
<h3>Les tables dans la base MySQL</h3>
<p>Je vais le faire en ligne de commande, mais vous pouvez utilisez phpMyAdmin</p>
<pre class="brush: plain; title: ; notranslate">
mysql -u root -p
</pre>
<p>&nbsp;</p>
<pre class="brush: plain; title: ; notranslate">
USE mail;
</pre>
<p><strong>Vous devez au minimum créer une entrée pour la table "domains" et une pour la table "users" :</strong></p>
<pre class="brush: plain; title: ; notranslate">
INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('sales@example.com', ENCRYPT('secret'), 10485760);
</pre>
<p><strong>ATTENTION, n'oubliez pas de CHIFFRER le mot de passe avec ENCRYPT !</strong></p>
<p>Si vous utilisez phpMyAdmin, sélectionnez bien "ENCRYPT" pour le mot de passe :</p>
<p><img class="aligncenter size-full wp-image-5020" alt="phpMyAdmin mot de passe chiffré" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/phpMyAdmin_mot_de_passe_chiffré.png" width="761" height="282" /></p>
<h3>Initialisation manuelle de la boite emails</h3>
<p>Il ne suffit pas que le domaine et l'adresse mail soit créée avec un mot de passe dans la DB.</p>
<p>Il faut créer la structure des dossiers pour cette boite mail précise !</p>
<p>(Lire la solution alternative juste après ce paragraphe)</p>
<p>Si vous n'initialisez pas la boite sur votre serveur Linux, vous aurez des messages de ce genre quand votre programme email (Thunderbird par exemple) essayera de se connecter au serveur Postfix + Courier :</p>
<pre class="brush: plain; title: ; notranslate">

Mar  3 03:10:44 ks3265657 authdaemond: Authenticated: clearpasswd=motdepasse, passwd=cplcT7y9.wH66
Mar  3 03:10:44 ks3265657 imapd: chdir monserveur.be/info/: No such file or directory
Mar  3 03:10:44 ks3265657 imapd: info@monserveur.be: No such file or directory
</pre>
<p>Tous les domaines doivent avoir un sous-dossier dans /home/vmail.</p>
<p>Pour un nouveau domaine, vous devez créer le sous-dossier :</p>
<pre class="brush: plain; title: ; notranslate">

# cd /home/vmail/
/home/vmail# mkdir mondomaine.be

</pre>
<p>Et ensuite vous devez initialiser le dossier avec la commande "maildirmake virtualuser"</p>
<p>Par exemple pour la boite mails correspondant à l'adresse info@mondomaine.be :</p>
<pre class="brush: plain; title: ; notranslate">

/home/vmail/mondomaine.be# maildirmake info

/home/vmail/mondomaine.be# cd info
/home/vmail/mondomaine.be/info# ls -lh

drwx------ 2 root root 4.0K Mar  3 03:22 cur
drwx------ 2 root root 4.0K Mar  3 03:22 new
drwx------ 2 root root 4.0K Mar  3 03:22 tmp

</pre>
<p>La boite a été créé, mais avec le user "root".</p>
<p>Changez le "owner" pour que Postifx et Courier (vmail) puissent écrire dans cette boite :</p>
<pre class="brush: plain; title: ; notranslate">

# chown -R vmail:vmail /home/vmail/mondomaine.be/

</pre>
<p>La boite emails est prête à être utilisée.</p>
<p>REMARQUE : Cette étape n'est pas indispensable. La structure de la boite mails sera créée automatiquement lors de l'arrivée du 1er email.</p>
<p>Pour éviter tout problème, il faudrait donc envoyer un email dans la boite, AVANT de configurer Thunderbird.</p>
<h3>Envoi d'un 1er mail pour initialiser automatiquement la boite email</h3>
<p>Puisque la structure de la boite emails sera créée automatiquement lors de la réception du 1er mail, nous pouvons forcer l'envoi de ce 1er mail, un mail de "Bienvenue" par exemple.</p>
<p>"<strong>mailx</strong>" permet l'envoi de mails en ligne de commande. Installez pour cela le package "mailutils" :</p>
<pre class="brush: plain; title: ; notranslate">

# aptitude install mailutils

The following NEW packages will be installed:
guile-1.8-libs{a} libgsasl7{a} libmailutils4{a} libntlm0{a} mailutils mailutils-common{a}
0 packages upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,380 kB of archives. After unpacking 8,802 kB will be used.
Do you want to continue? [Y/n/?] Y
...

</pre>
<p>Pour créer la boite info@mondomaine.be, il suffit d'entrer la commande "mailx info@mondomaine.be", et de répondre aux questions, taper le corps de votre message, et terminer par &lt;ctrl-D&gt; :</p>
<pre class="brush: plain; title: ; notranslate">

# mailx info@mondomaine.be

Cc:
Subject: Bienvenue dans votre nouveau serveur mails !
Votre boite est maintenant à votre disposition.
N'hésitez pas à contacter votre support informatique pour toute question.

Cordialement
Didier Misson

&lt;--- &lt;ctrl-D&gt; pour terminer

</pre>
<p>La structure de la boite est bien créée :</p>
<pre class="brush: plain; title: ; notranslate">

/home/vmail# ls -lR mondomaine.be/
mondomaine.be/:
total 4
drwx------ 5 vmail vmail 4096 Mar  3 04:55 info

mondomaine.be/info:
total 12
drwx------ 2 vmail vmail 4096 Mar  3 04:55 cur
drwx------ 2 vmail vmail 4096 Mar  3 04:55 new
drwx------ 2 vmail vmail 4096 Mar  3 04:55 tmp

mondomaine.be/info/cur:
total 0

mondomaine.be/info/new:
total 4
-rw------- 1 vmail vmail 484 Mar  3 04:55 1362282919.V901Ic0191M419683.ks3265657.kimsufi.com

mondomaine.be/info/tmp:
total 0

</pre>
<p>Cette 2ème méthode est plus rapide que la création manuelle de la boite.</p>
<p>De plus, un petit mail de bienvenue, c'est sympa pour l'utilisateur.</p>
<h2><img class="aligncenter size-full wp-image-3653" title="Thunderbird, un client de messagerie libre distribué gratuitement par la Fondation Mozilla et issu du Projet Mozilla" alt="Thunderbird, un client de messagerie libre distribué gratuitement par la Fondation Mozilla et issu du Projet Mozilla" src="http://didier.misson.net/blog/wp-content/uploads/2010/05/224px-Thunderbird.png" width="224" height="220" /></h2>
<h2>Problème de certificats en SSL ?</h2>
<h3>Debugging</h3>
<p>Je fais des essais avec Thunderbird.</p>
<p>Thunderbird arrive à aller chercher les mails si je le configure en POP3 ou IMAP, mais PAS si je veux chiffrer la connexion.</p>
<p>En POP3s ou IMAPs, Thunderbird donne toujours un message d'erreur de userid ou de mot de passe.</p>
<p>Si je force Thunderbird en IMAPs avec une connexion SSL/TLS :</p>
<p><img class="aligncenter size-full wp-image-4984" alt="Thunderbird en IMAPs SSL/TLS" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/thunderbird_serveur_imap_20130302.png" width="660" height="634" /></p>
<p>Cela ne fonctionne pas, et je trouve ces messages dans le log système /var/log :</p>
<pre class="brush: plain; title: ; notranslate">
# less /var/log/syslog

...
imapd-ssl: couriertls: /etc/ssl/certs/74f25b29.0: No such file or directory
</pre>
<p>Je vais évidemment vérifier le contenu de ce dossier.</p>
<p>Dans /etc/ssl/certs, il y a beaucoup de certificats... mais PAS le certificat demandé.</p>
<p>Plus exactement, il y a un lien, mais il ne pointe vers rien :<br />
<em>/etc/ssl/certs# ls -lh 74f25b29.0</em><br />
<em> lrwxrwxrwx 1 root root 33 Nov 11 12:29 <strong><span style="color: #ff0000;">74f25b29.0</span> -&gt; <span style="color: #ff0000;">/etc/mail/tls/sendmail-client.crt</span></strong></em></p>
<p>Il y a donc un lien vers un certificat "sendmail", mais j'ai désinstallé sendmail !</p>
<p>Effectivement, le sous-dossier /etc/mail/tls n'existe pas (ou plus).</p>
<p><strong>Les certificats générés pour Postfix se trouvent dans /etc/postfix.</strong></p>
<p>Je vais essayer de recréer un lien vers le certificat /etc/postfix/smtpd.cer.</p>
<p>Votre lien porte probablement un autre nom. Vérifiez ce nom dans les erreurs indiquées dans le syslog.</p>
<pre class="brush: plain; title: ; notranslate">
# cd /etc/ssl/certs/
/etc/ssl/certs# rm 74f25b29.0

/etc/ssl/certs# ln -s /etc/postfix/smtpd.cert 74f25b29.0
/etc/ssl/certs# ls -lh 74f25b29.0
lrwxrwxrwx 1 root root 23 Mar  2 20:23 74f25b29.0 -&gt; /etc/postfix/smtpd.cert -l /etc/postfix/
</pre>
<p>Je retourne dans Thunderbird et je clique sur "relever".<br />
Thunerbird essaye d'accéder en IMAPs et donne ce message d'avertissement :</p>
<p><img class="aligncenter size-full wp-image-4989" title="Thunderbird exception de sécurité" alt="Thunderbird exception de sécurité" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_exception_sécurité_201303021.png" width="517" height="516" /><br />
Dans mon cas, cet avertissement est normal !<br />
J'ai généré moi-même le certificat. Il est auto-signé.</p>
<p>Si vous devez avoir un grand nombre d'utilisateurs, ou si le besoin de sécurité est maximum, il serait préférable que vous obteniez un certificat signé par une autorité de certification reconnue.<br />
Ce n'est pas le sujet de cet article, mais des solutions existent, pas trop chères ou même gratuites.</p>
<p>Je clique sur "Confirmer l'exception de sécurité", et Thunerbird me demande le mot de passe de cette boite emails :</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5009" title="Thunderbird mot de passe" alt="Thunderbird mot de passe" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_IMAP_motdepasse_20130302_B.png" width="641" height="203" /></p>
<p>Et voilà !<br />
Mes emails s'affichent en IMAPs.</p>
<p>Cela semble ok.</p>
<h3>Je recommence en IMAPs avec STARTTLS</h3>
<p>Pour le debugging, j'avais forcé Thunderbird en IMAPs avec SSL/TLS comme sécurité de la connexion.</p>
<p>Je vérifie si la création de la boite mail se fait maintenant correctement et automatiquement.</p>
<p>Je SUPPRIME mon compte, nouvellement créé, dans Thunderbird.</p>
<p>Je le recrée.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5002" title="Thunderbird nouvelle adresse email" alt="Thunderbird nouvelle adresse email" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_nouvelle_adresse_email_B.png" width="656" height="516" /></p>
<p style="text-align: left;">Je clique sur "Passer cette étape".</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5003" title="Thunderbird création compte courrier" alt="Thunderbird création compte courrier" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_creation_compte_courier_B.png" width="666" height="443" /></p>
<p>"Continuer".</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5004" title="Thunderbird Création compte courrier" alt="Thunderbird création compte courrier" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_creation_compte_courier_02_B.png" width="666" height="443" /></p>
<p>Attention, l'envoi de mails ne fonctionnera pas avec ce serveur SMTP qui se trouve chez OVH, car mon fournisseur Internet (Belgacom) bloque le port SMTP 25 en sortie (anti-spam).</p>
<p><strong>Je dois modifier pour mettre le SMTP de mon fournisseur (ici, relay.skynet.be)</strong>.</p>
<p>Donc, "configuration manuelle"</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5005" title="Thunderbird SMTP de votre fournisseur Internet" alt="Thunderbird SMTP de votre fournisseur Internet" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_configuration_avancee2_B.png" width="964" height="445" /></p>
<p>Cette étape peut varier suivant votre fournisseur Internet.</p>
<p>Personnellement, j'ai dû mettre le nom du serveur SMTP "relay.skynet.be", spécifier le port 25 sans chiffrement de la connexion.</p>
<p><em>J'avais aussi un choix avec le port 587 et STARTTLS... mais le problème est que je ne connais pas le mot de passe pour cette connexion. Je vais chercher.</em></p>
<p><strong>Donc, SMTP 25 sans chiffrement de connexion.</strong></p>
<p>Je clique sur "Terminé". Plus de problème de userid ni de mot de passe...</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5006" title="Thunderbird avertissement SMTP non chiffré" alt="Thunderbird avertissement SMTP non chiffré" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_avertissement_SMTP_non_chiffré.png" width="823" height="521" /></p>
<p style="text-align: left;">Thunderbird me prévient que le courrier sortant en SMTP ne sera pas chiffré.</p>
<p style="text-align: left;">Ce n'est pas gênant.</p>
<p style="text-align: left;">Par principe (en tout cas dans nos pays), je fais confiance au réseau et aux serveurs de mon fournisseur Internet.</p>
<p style="text-align: left;">Je pense ne rien risquer lors de l'envoi d'emails entre mon desktop et le serveur SMTP de Belgacom / Skynet.</p>
<h2 style="text-align: left;">Blocage lors de la "Copie du message vers le dossier Sent..."</h2>
<p style="text-align: left;">Thunerbird semble ok. Pourtant quand je fais un essai d'envoi de message, le mail arrive bien (je le reçois dans mon autre boite mails), mais une fenêtre s'ouvre et se bloque. La barre de progression défile, mais ne s'arrête jamais !</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-5011" alt="Thunderbird copie du message vers le dossier send" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_copie_du_message_dossier_send.png" width="464" height="131" /></p>
<p style="text-align: left;">Donc, le message est envoyé, mais Thunderbird n'arrive pas à le copier dans le dossier "Envoyés".</p>
<p style="text-align: left;">Tient... mais le message dit "dossier Sent" en anglais ?</p>
<p style="text-align: left;">Ce dossier n'apparaît pas dans l'arborescence des dossiers de Thunderbird :</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5012" title="Thunderbird Dossier" alt="Thunderbird Dossier" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_dossier_B.png" width="276" height="94" /></p>
<p style="text-align: left;">Je pense qu'un dossier "sent" a été créé en IMAP sur le serveur, mais que Thunderbird n'arrive pas à y accéder, ou n'a pas une information correcte sur les dossiers existants.</p>
<p style="text-align: left;">La solution est simple (même si ce n'est pas très propre).</p>
<ol>
<li>Faire "Annuler"</li>
<li>fermer la fenêtre du mail, sans sauver le message</li>
<li>fermer totalement Thunderbird</li>
<li>attendre une dizaine de seconde et redémarrer Thunderbird</li>
</ol>
<p>Au redémarrage de Thunderbird, je ne vois toujours pas de dossier "Sent", ni "Envoyé"... Par contre, une corbeille est maintenant présente.</p>
<p>Je refais un envoi de mail, et cette fois le mail passe immédiatement... et le dossier "Envoyé" apparaît !</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5013" title="Thunderbird dossiers" alt="Thunderbird dossiers" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/Thunderbird_dossiers_B.png" width="275" height="135" /></p>
<p>Vous risquez d'avoir le même genre de problème si vous activez la recherche des indésirables, ce qui va créer un dossier "Junk" ou "Indésirables".<br />
Il est possible que ce problème se présente chaque fois que Thunderbird doit traduire lui-même un nom de dossier d'anglais en français : pendant un moment, il n'a pas la structure exacte des dossiers.</p>
<p>Si cela bloque, fermez Thunderbird et relancez le. Il aura alors la structure correcte des dossiers. C'est un peu dommage, mais ça n'arrivera qu'à la création du dossier. Après tout sera parfait !</p>
<h2>Cela ne fonctionne pas... Que faire ?</h2>
<h3>Vous avez suivi tout ce howto, et cela ne fonctionne pas.</h3>
<p>On peut vite oublier une ligne (ça m'est arrivé), faire une petite erreur, ou oublier de remplacer une variable, par exemple le mot de passe MySQL, dans un fichier.</p>
<p>Quelles solutions avez-vous pour faire un peu de debuging ?</p>
<p>Chercher, relire, voir les logs...</p>
<h3>Quelques pistes</h3>
<h4>Envoi de mails en SMTP depuis votre ADSL</h4>
<p>Attention, il est très probable que vous ne puissiez pas vous connectez avec votre programme mails (Thunderbird par exemple) directement sur votre serveur emails en SMTP pour l'envoi de mails !</p>
<p>La raison est simple : la majorité des fournisseurs Internet via ADSL ou câble, bloquent le port SMTP 25, car ce port 25 est fortement utilisé par les virus, spams et autres crasses qui s'installent souvent dans les PC Windows.</p>
<p>Votre programme mails peut donc envoyer des mails, uniquement via le serveur SMTP de votre fournisseur (le SMTP de Belgacom ou d' Orange par exemple).</p>
<p>Le port 25 est donc ouvert uniquement vers le serveur SMTP de votre fournisseur Internet.</p>
<p>Ce blocage est donc normal. Cela n'empêchera pas votre serveur de recevoir les mails venant des autres fournisseurs (Gmail, Yahoo, etc), à condition que votre serveur soit chez un hébergeur et pas derrière votre ligne ADSL <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Remarque : certains fournisseurs Internet bloquent le port SMTP 25, mais acceptent de le débloquer sur simple demande ou via l'interface de gestion de votre compte ADSL (Belgacom l'accepte).</p>
<p>Alors, comment envoyer des emails ?</p>
<p>Vous devez passer par le serveur SMTP officiel de votre fournisseur Internet.</p>
<p>Même si votre adresse mail est "didier@monserveur.be", cela ne pose aucun problème que Thunderbird envoi vos mails via le SMTP de Belgacom.</p>
<h4>Vérifiez</h4>
<ul>
<li>le log système : less /var/log/syslog</li>
<li>le log d'erreur mail : less /var/log/mail.err</li>
<li>le log des mails : less /var/log/mail</li>
</ul>
<h4>Augmentez le niveau de messages pour avoir plus d'info</h4>
<p>pour l'authentification dans Courier. Mettre "DEBUG_LOGIN=2"</p>
<pre class="brush: plain; title: ; notranslate">

vi /etc/courier/authdaemonrc

...

DEBUG_LOGIN=2

...

</pre>
<p>N'oubliez pas de remettre "DEBUG_LOGIN=0" quand tout fonctionnera correctement.<br />
Vous ne devez pas utiliser votre serveur de mails en production avec un niveau de debugging 2, car les mots de passe apparaissent en clair dans le syslog lors de connexion !</p>
<h4>Si vous avez un problème d'authentification (mot de passe invalide)</h4>
<p>Essayez provisoirement de mettre le mot de passe en clair :</p>
<pre class="brush: plain; title: ; notranslate">

vi /etc/courier/authmysqlrc

</pre>
<p>Remplacez la ligne "CRYPT_PWFIELD" par "CLEAR_PWFILED"</p>
<pre class="brush: plain; title: ; notranslate">

...
#MYSQL_CRYPT_PWFIELD password
MYSQL_CLEAR_PWFIELD password
...

</pre>
<p>Vous devez alors réintroduire les mots de passe en CLAIR dans la table "users" de la DB "mail" !</p>
<p>C'est provisoire.</p>
<p>Remettez les mots de passe chiffrés quand vous aurez résolu votre problème.</p>
<h4>Utilisez phpMyAdmin</h4>
<p>N'hésitez pas à utilisez phpMyAdmin pour vérifier le contenu des tables de la base de données "mail" ou pour définir certains éléments (emails / password par exemple).</p>
<p>Vous pouvez travailler en console également, mais si vous n'êtes pas un pro des commandes SQL, phpMyAdmin est nettement plus facile.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5015" title="SpamAssassin" alt="SpamAssassin" src="http://didier.misson.net/blog/wp-content/uploads/2013/03/SpamAssassin_logo-235x100.png" width="235" height="100" /></p>
<h2>Est-ce fini ?</h2>
<p>Oui, votre serveur mail tourne.</p>
<p>MAIS il manque quelques briques pour qu'il soit parfait.</p>
<p>S'il est relativement sécurisé en lui-même (si vous faites les mises à jour, peu de risques que votre serveur Linux soit compromis), il n'est pas protégé contre les SPAM et les virus !</p>
<p>Votre serveur lui-même ne sera pas compromis par ces virus et spams, mais il serait dommage pour vous, pour vos utilisateurs et pour la réputation de votre serveur sur le Net (il y a des listes de blocage des serveurs spammeurs) que votre serveur laisse passer des spams et des virus.</p>
<p>Il faut donc installer un antispam, comme SpamAssassin, et un anti-virus.</p>
<p>De plus, il faut les tenir à jour !</p>
<p>Des solutions existent pour cela, mais cet article est déjà gigantesque !</p>
<p>Ce sera donc l'objet d'un prochain article.</p>
<h2>Documentation</h2>
<ul>
<li>Howto : <a  title="This document describes how to install a Postfix mail server that is based on virtual users and domains" href="http://www.howtoforge.com/virtual-users-and-domains-with-postfix-courier-mysql-and-squirrelmail-ubuntu-12.10">Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail</a> (Ubuntu 12.10)</li>
<li><a  href="http://www.pointroot.org/index.php/2012/04/13/un-serveur-de-mails-debian-postfix-dovecot-mysql-smtps-imaps/">Un serveur de mails Debian : Postfix + Dovecot + MySQL = SMTPS / IMAPS / SASL</a></li>
<li><a  href="http://johnny.chadda.se/article/mail-server-howto-postfix-and-dovecot-with-mysql-and-tlsssl-postgrey-and-dspam/">Mail server HOWTO – Postfix and Dovecot with MySQL and TLS/SSL, Postgrey and DSPAM</a></li>
<li><a  title="Ubuntu-fr.org" href="http://doc.ubuntu-fr.org/postfix_mysql_tls_sasl">postfix_mysql_tls_sasl</a> (Ubuntu-fr.org)</li>
<li><a  title="Howtoforge" href="http://www.howtoforge.com/forums/showthread.php?t=60284">Postfix + Courier + MySql virtual mail users - No certificate file found</a> (HowtoForge)</li>
</ul>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-4918-bottom'></div><script language='javascript'>var conf_4918 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image4918 = {src:'http://didier.misson.net/blog/wp-content/uploads/2013/02/postfix_mysza.gif',href:'http://didier.misson.net/blog/2013/03/03/users-et-domaines-virtuels-avec-postfix-courier-mysql-ubuntu-12-10.html',type:'image'};
						var ua_4918 = new gigya.services.socialize.UserAction(); 
						ua_4918.setUserMessage('');  
						ua_4918.setLinkBack('http://didier.misson.net/blog/2013/03/03/users-et-domaines-virtuels-avec-postfix-courier-mysql-ubuntu-12-10.html'); 
						ua_4918.setTitle('Users et domaines virtuels avec Postfix, Courier, MySQL (Ubuntu 12.10)');
						ua_4918.addMediaItem(image4918);	
		

						var params_4918 ={ 
							userAction:ua_4918,
							cssPrefix:'#gig-div-buttons-4918-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-4918-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_4918,params_4918);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2013/03/03/users-et-domaines-virtuels-avec-postfix-courier-mysql-ubuntu-12-10.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>upgradez votre site Drupal 6 en Drupal 7 avec drush site-upgrade</title>
		<link>http://didier.misson.net/blog/2013/01/14/upgrade-site-drupal-6-en-drupal-7-avec-drush.html</link>
		<comments>http://didier.misson.net/blog/2013/01/14/upgrade-site-drupal-6-en-drupal-7-avec-drush.html#comments</comments>
		<pubDate>Mon, 14 Jan 2013 02:35:02 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[CMS - Blogs - Groupware]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Serveurs]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=4816</guid>
		<description><![CDATA[Migrer votre site Drupal 6 en Drupal 7, avec une seule commande "drush site-upgrade" ... mais attention, avant cela il faut appliquer un patch en Drupal 6 pour que la migration des nodes de type IMAGE se passe bien.]]></description>
				<content:encoded><![CDATA[<h2><a  href="http://drupal.org"><img class="aligncenter size-full wp-image-4821" title="Drupal is a registered trademark of Dries Buytaert" alt="Drupal is a registered trademark of Dries Buytaert" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/drupal_logo-blue_rgb_320x82.png" width="320" height="82" /></a></h2>
<p>ps : ce billet n&rsquo;est pas encore terminé.</p>
<h2>Pourquoi changer de version Drupal ?</h2>
<p>La dernière version de <a  title="Drupal is an open source content management platform powering millions of websites and applications. It’s built, used, and supported by an active and diverse community of people around the world." href="http://drupal.org">Drupal</a> est la 7, actuellement la 7.18.</p>
<p>Votre site est en Drupal 6. Cette version est toujours supportée, càd que le core et les modules de Drupal 6 ont toujours des mises à jour de sécurité.</p>
<p>Drupal 8 est en développement. Il devrait sortir, si tout va bien, dans la 2ème moitié de 2013. Ce n&rsquo;est pas le sujet de ce billet, mais il faut se souvenir que seulement 2 versions majeures de Drupal sont maintenues. Ça veut dire que, dés la sortie du futur Drupal 8, le core de Drupal 6, les modules et les thèmes ne seront plus supportés.</p>
<p>Si ce n&rsquo;est pas trop grave pour la correction de bugs. Les modules que vous utilisez depuis des années sont probablement stables.</p>
<p>C&rsquo;est bien plus gênant pour les éventuelles failles de sécurité ! Une faille importante découverte serait alors corrigée en Drupal 8 et 7, mais plus en version 6.x &#8230;</p>
<p><span id="more-4816"></span></p>
<p><strong>Vous avez donc 3 solutions pour votre site Drupal 6 :</strong></p>
<ul>
<li><strong>profiter de la sortie de Drupal 8</strong> pour refaire un site tout neuf, tout beau en D8&#8230;<br />
oui, bonne idée&#8230; sauf que cela peut prendre plusieurs longs mois pour que les modules intéressants (ne faisant pas parties du core de Drupal 8), soient mis à jour ou réécrit pour D8&#8230; Pendant tout ce temps, votre ancien site Drupal 6 peut être vulnérable !</li>
<li><strong>refaire un nouveau site en Drupal 7</strong>, avant la sortie de Drupal 8. De cette façon votre site ne sera pas vulnérable. Il aura toujours ses mises à jour de sécurité</li>
<li><strong>convertir votre site Drupal 6 en Drupal 7</strong>, sans devoir le refaire entièrement, en conservant évidemment son contenu</li>
</ul>
<p>La 1ère solution n&rsquo;est pas très réaliste : combien de temps faudra-t-il attendre pour que Drupal 8 et les modules les plus courants soient utilisables ?</p>
<p>La 2ème solution demande un investissement en temps et argent pour refaire un site en Drupal 7. De plus il faudra migrer manuellement le contenu&#8230; ou repartir entièrement à zéro avec un site vide&#8230; Coûteux et gênant !</p>
<p>La 3ème solution est la plus rapide. Pas besoin de recréer un site, et le contenu devrait être conservé.</p>
<p>C&rsquo;est la solution que je vais appliquer pour le site de notre Linux Users Group <strong><a  title="le Groupe d’ Utilisateurs Linux (&quot;LUG&quot; ou &quot;GUL&quot;) de Braine-l’Alleud, Waterloo et alentours (Brabant Wallon). Notre but : partager nos connaissances et notre goût pour une informatique libre !" href="http://culbutte.be/">http://culbutte.be/</a></strong> actuellement en Drupal 6.</p>
<h2>Update ou Upgrade ?</h2>
<p>On confond souvent les 2 termes. En français, on dirait &laquo;&nbsp;mise à jour&nbsp;&raquo;, mais je ne trouve pas d&rsquo;expression française différenciant &laquo;&nbsp;update&nbsp;&raquo; et &laquo;&nbsp;upgrade&nbsp;&raquo; &#8230;</p>
<ul>
<li><strong>Un update est une mise à jour &laquo;&nbsp;mineure&nbsp;&raquo;</strong>, comme par exemple de Drupal 7.17 vers 7.18. Cela ne pose en général pas de problème si on le fait régulièrement, en suivant les procédures (update.php à la fin), manuellement ou avec Drush. Les modules devraient aussi être mis à jour, si nécessaire.</li>
<li><strong>Un upgrade est la mise à jour vers une version majeure de Drupal, par exemple de Drupal 6.x vers Drupal 7.x.</strong> En même temps que le core de Drupal, il faut également upgrader TOUS les modules et les thèmes.</li>
</ul>
<p>Vous ne pouvez upgrader que d&rsquo;une version de Drupal à la suivante. Si vous désirez upgrader un site en Drupal 5 vers D7, il faudra faire en 2 étapes : upgrader de D5 en D6, puis un 2ème upgrade de D6 en D7.</p>
<h2>Problèmes courants lors des upgrades Drupal</h2>
<p>L&rsquo;upgrade d&rsquo;un site Drupal peut se révéler très simple&#8230; ou très compliqué, voir impossible. Cela dépend de la complexité de votre site, des modules installés, et des développements que vous avez éventuellement fait.</p>
<p><strong>Les éléments suivants peuvent vous poser problème :</strong></p>
<ul>
<li>utilisation de modules qui n&rsquo;existent pas (ou pas encore) en Drupal 7. Cela demanderait de remplacer le module manquant par un autre, mais la migration des données n&rsquo;est alors pas automatique</li>
<li>développements propres : si vous avez vous-même écrit un module, ou modifié le core de Drupal (c&rsquo;est très très déconseillé) ou modifié un module, il est clair que l&rsquo;upgrade ne se passera pas sans mal. Au mieux vous devrez réécrire votre module pour qu&rsquo;il tourne en Drupal 7</li>
<li>thème non compatible D7 : il faudra choisir un nouveau thème D7, ou adapter votre ancien thème</li>
<li>utilisation de fonctionnalités n&rsquo;existant plus, ou fortement modifiées dans Drupal 7. Je pense simplement au module image en Drupal 6. Image a été intégré dans le cœur de Drupal 7. Malgré tout, la migration de nodes de type &laquo;&nbsp;image&nbsp;&raquo; ne se passe pas toujours si automatiquement que voulu</li>
</ul>
<p>Dans le cas qui m&rsquo;intéresse, le site de notre Linux Users Group, c&rsquo;est ce dernier cas qui va nous poser problème : de nombreux nodes de type &laquo;&nbsp;image&nbsp;&raquo;.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-4821" title="Drupal is a registered trademark of Dries Buytaert" alt="Drupal is a registered trademark of Dries Buytaert" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/drupal_logo-blue_rgb_320x82.png" width="320" height="82" /></p>
<h2>Backup</h2>
<p>Comme pour toutes opérations importantes, <strong>TOUJOURS prendre un backup de votre site complet</strong>, càd la base de données ET tous vos fichiers (Drupal, modules, thèmes et tous vos fichiers dans /sites &#8230;.).</p>
<p>Je conseille même fortement de travailler sur une copie de votre site et de basculer la nouvelle version en opérationnel quand tout sera ok.</p>
<p>Évidemment, cela dépend de votre site. Il est très facile de travailler sur une copie d&rsquo;un site assez statique (club info, site local) pendant quelques heures et de basculer ensuite.</p>
<p>Par contre, il n&rsquo;est pas possible de laisser en ligne un site e-Commerce en Drupal 6 le temps de l&rsquo;upgrade sur une copie, et de basculer ensuite. Cela reviendrait à perdre plusieurs heures de commande lors de la mise en ligne du nouveau site basé sur une copie vieille de plusieurs heures. Dans ce cas, il faut mettre le site en maintenance, de préférence en heures creuses. La nuit ou le WE par exemple.</p>
<p>Mais dans tous les cas, faites un BACKUP avant de commencer quoi que ce soit !</p>
<h2>Upgrade &laquo;&nbsp;manuel&nbsp;&raquo;</h2>
<p>La méthode la plus logique est de se lancer dans l&rsquo;upgrade de votre site Drupal 6 manuellement, pas à pas.</p>
<p><strong>En résumé, les étapes seraient :</strong></p>
<ol>
<li>prendre un backup complet</li>
<li>mettre le site en mode maintenance</li>
<li>updater votre site à la dernière version stable de Drupal 6</li>
<li>updater tous les modules &laquo;&nbsp;contributed&nbsp;&raquo; si nécessaire</li>
<li>basculer sur le thème Drupal 6 par défaut (Garland)</li>
<li>désinstaller et supprimer les modules inactifs qui ne sont plus nécessaire</li>
<li>vérifier que votre site Drupal 6 fonctionne toujours correctement après ces étapes, AVANT l&rsquo;upgrade en Drupal 7</li>
<li>etc etc</li>
</ol>
<p>Ce n&rsquo;est pas cette méthode que je vais utiliser, mais vous pouvez trouver des infos plus détaillées sur Drupal.org, en particulier la page &laquo;&nbsp;<strong><a  href="http://drupal.org/node/570162">Upgrade process</a></strong>&laquo;&nbsp;.</p>
<h2><img class="aligncenter size-full wp-image-4821" title="Drupal is a registered trademark of Dries Buytaert" alt="Drupal is a registered trademark of Dries Buytaert" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/drupal_logo-blue_rgb_320x82.png" width="320" height="82" /></h2>
<h2>Upgrade avec Drush</h2>
<h3>Source</h3>
<p>Je me base sur l&rsquo;excellent article de <a  title=" Director, Research and Development, Acquia, Inc." href="http://www.acquia.com/about-us/team/moshe-weitzman">Moshe Weitzman</a>, d&rsquo;<a  title="Acquia is a commercial open-source software company providing products, services, and technical support for Drupal" href="http://www.acquia.com">Acquia</a> : <strong><a  title="The Drush site-upgrade command supports upgrades from Drupal 6.x to Drupal 7.x" href="http://www.acquia.com/blog/use-drush-upgrade-drupal-6-drupal-7">Use Drush to Upgrade from Drupal 6 to Drupal 7</a></strong></p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-4829" title="Moshe Weitzman,  Director, Research and Development, Acquia, Inc." alt="Moshe Weitzman,  Director, Research and Development, Acquia, Inc." src="http://didier.misson.net/blog/wp-content/uploads/2013/01/Moshe_Weitzman-Acquia.jpg" width="94" height="94" /></p>
<p>Moshe explique la procédure d&rsquo;upgrade de Drupal 6 vers 7 avec une seule commande &laquo;&nbsp;<em>drush site-upgrade</em>&nbsp;&raquo;</p>
<h3>Drush</h3>
<p>Drush est un utilitaire qui peut être exécuté en ligne de commande en Linux ou Windows. Ce n&rsquo;est donc pas réellement un module Drupal.</p>
<p>Drush permet d&rsquo;exécuter beaucoup de commandes directement depuis la ligne de commande sur votre serveur. C&rsquo;est très utile pour automatiser des opérations sur vos sites, des mises à jour ou vos installations.</p>
<p>Drush est la contraction de &laquo;&nbsp;<em>DRUpal</em>&nbsp;&raquo; et &laquo;&nbsp;<em>SHell</em>&laquo;&nbsp;.</p>
<p>Si vous ne l&rsquo;avez pas encore installé, vous le trouverez sur la page du projet <a  title="Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife" href="http://drupal.org/project/drush">Drush<br />
sur drupal.org</a>. Pour toute autre info sur l&rsquo;installation de Drush ou son utilisation, voir les liens documentation en bas de cet article.</p>
<h3>Extension de Drush</h3>
<p>Avant de vous lancer dans l&rsquo;upgrade de votre site Drupal, vérifier que vous avez la <a  title="Télécharger Drush" href="http://drupal.org/project/drush">dernière version de Drush</a>.</p>
<p>La version actuelle est indiquée 7.X-5.8.</p>
<p>Ne vous préoccupez pas de ce &laquo;&nbsp;7.x&nbsp;&raquo;. C&rsquo;est la version 5.8 de Drush, compatible avec les sites Drupal 7 et 6.</p>
<p>Drush contient déjà de base de nombreuses commandes très puissantes et pratiques, par exemple pour mettre à jour Drupal, installer et activer des modules, etc, mais rien pour l&rsquo;upgrade d&rsquo;un site Drupal.</p>
<p>Drush a été conçu pour pouvoir être étendu facilement. Certaines extensions de Drush lui apporte des commandes supplémentaires propres à un module, par exemple pour la gestion des langues et traductions.</p>
<p>Ici, nous allons installer l&rsquo;extension &laquo;&nbsp;<strong>Drush Site Upgrade</strong>&nbsp;&raquo; .</p>
<p>Pas besoin de télécharger le fichier compressé, de le transférer, le décompresser&#8230; Non, Drush fait tout cela pour vous.</p>
<p>Il suffit de lui demander d&rsquo;installer le &laquo;&nbsp;<em>module</em>&nbsp;&raquo; drush_sup.</p>
<pre class="brush: bash; title: ; notranslate"># drush dl drush_sup
Project drush_sup (7.x-2.0-beta1) downloaded to /root/.drush/drush_sup.      [success]
Project drush_sup contains 0 modules: .</pre>
<p>Le &laquo;&nbsp;<em>contains 0 modules</em>&nbsp;&raquo; est normal car drush_sup n&rsquo;est pas un module Drupal, mais une extension à Drush lui-même.</p>
<p>Drush propose maintenant des commandes pour l&rsquo;upgrade de votre site web :</p>
<pre class="brush: bash; title: ; notranslate"># drush

Other commands: (make,upgrade)
make Turns a makefile into a working Drupal codebase.
make-generate Generate a makefile from the current Drupal site.
(generate-makefile)

site-upgrade (sup) Run a major version upgrade for Drupal (e.g. Drupal 6 to Drupal 7). A copy of the site is made, and then upgraded;
the source site is not changed.
site-upgrade-progres Show information about the upgrade status of the target site.
s (upgrade-progress,
supp)</pre>
<p>La commande &laquo;&nbsp;<em>drush site-upgrade</em>&nbsp;&raquo; a été ajoutée.</p>
<h3>Upgradez une copie de votre site</h3>
<p>Site-upgrade ne travaille jamais sur votre site Drupal 6. Il crée un nouveau site Drupal 7 au départ de votre site original D6.</p>
<p>Il est donc sans risque de lancer l&rsquo;upgrade sur un site on-line. Le site D6 ne sera pas modifié et vous aurez en parallèle un nouveau site, migré en D7.</p>
<h3>Drush alias</h3>
<p>Pour copier votre site, vous aurez besoin d&rsquo;une nouvelle data base MySQL et d&rsquo;un nouveau dossier, mais même cela, drush site-upgrade peut le faire pour vous !</p>
<p>Il vous suffit de <a  title="Drush aliases" href="http://eporama.com/ramblings/drush-aliases">créer un alias</a> avec les informations nécessaires.</p>
<p>J&rsquo;avais installé Drush dans le dossier /root/drush. Dans le sous-dossier &laquo;&nbsp;<em>examples</em>&nbsp;&raquo; se trouve un fichier &laquo;&nbsp;<em>example.aliases.drushrc.php</em>&laquo;&nbsp;. Vous pouvez vous en servir comme base pour créer votre alias Drush.</p>
<p>Je vais exécuter le site-upgrade avec le userid Linux &laquo;&nbsp;root&nbsp;&raquo;.</p>
<p>S&rsquo;il n&rsquo;existe pas encore, créez un sous-dossier /root/.drush</p>
<pre class="brush: bash; title: ; notranslate"># cd /root
# mkdir .drush</pre>
<p>Dans ce dossier, créez un fichier &laquo;&nbsp;<em>aliases.drushrc.php</em>&nbsp;&raquo; et copiez y les informations pour votre nouveau site Drupal 7 :</p>
<pre class="brush: bash; title: ; notranslate"># cd /root/.drush
# vi aliases.drushrc.php</pre>
<p>Ma nouvelle DB Mysql sera dm_d7newculbutte. Le dossier sera /home/dug/www/d7new.culbutte.be.<br />
L&rsquo;URL, provisoirement définie dans le DNS, sera &laquo;&nbsp;d7new.culbutte.be&nbsp;&raquo;.</p>
<pre class="brush: bash; title: ; notranslate">&lt;?php
$aliases['d7new'] = array(
'root' =&gt; '/home/dug/www/d7new.culbutte.be',
'uri' =&gt; 'http://d7new.culbutte.be',
);
?&gt;</pre>
<p>L&rsquo;information pour la nouvelle DB n&rsquo;est pas dans l&rsquo;alias. Le script &laquo;&nbsp;drush site-upgrade&nbsp;&raquo; me demandera le mot de passe root de MySQL pour créer lui-même une base de données.</p>
<p>Pourquoi &laquo;&nbsp;d7new&#8230;&nbsp;&raquo; et pas simplement &laquo;&nbsp;d7.culbutte.be&nbsp;&raquo; ?</p>
<p>Car c&rsquo;est mon 2ème essais de migration du site. J&rsquo;ai en effet eu quelques problèmes&#8230;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-4821" title="Drupal is a registered trademark of Dries Buytaert" alt="Drupal is a registered trademark of Dries Buytaert" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/drupal_logo-blue_rgb_320x82.png" width="320" height="82" /></p>
<h3>Problème de migration des nodes D6 de type image</h3>
<p>En théorie, il ne reste plus qu&rsquo;à lancer la commande &laquo;&nbsp;<em>drush site-upgrade</em>&laquo;&nbsp;, mais ne le faites pas encore !</p>
<p>Lors de mon 1er essais de migration, j&rsquo;ai eu des problèmes dans le nouveau site Drupal 7 avec tous les nodes de type image.</p>
<p>Voici un node image en Drupal 6 :</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_node_image.png" rel="lightbox[4816]" class="thickbox no_icon" title="site_drupal6_node_image"><img class="aligncenter size-medium wp-image-4848" alt="site_drupal6_node_image" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_node_image-176x300.png" width="176" height="300" /></a></p>
<p>Et voici le node après migration en Drupal 7 :</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal7_node_image_erreur.png" rel="lightbox[4816]" class="thickbox no_icon" title="Problème de migration node image en Drupal 7"><img class="aligncenter size-medium wp-image-4849" alt="Problème de migration node image en Drupal 7" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal7_node_image_erreur-274x300.png" width="274" height="300" /></a></p>
<p>Il y a un problème. Le node affiche 2 messages d&rsquo;erreur :</p>
<pre class="brush: bash; title: ; notranslate">Notice : Undefined index: comment_node_image_form dans drupal_retrieve_form()
(ligne 763 dans /home/dug/www/d7.culbutte.be/includes/form.inc).

Warning : call_user_func_array() expects parameter 1 to be a valid callback,
function 'comment_node_image_form' not found or invalid function name dans
drupal_retrieve_form() (ligne 798 dans /home/dug/www/d7.culbutte.be/includes/form.inc).</pre>
<p>On retrouve ces erreurs listées dans les entrées récentes du journal, dans les rapports.</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal7_node_image_erreur_journal_php.png" rel="lightbox[4816]" class="thickbox no_icon" title="Journal des erreurs d'accès"><img class="aligncenter size-medium wp-image-4851" alt="Journal des erreurs d'accès" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal7_node_image_erreur_journal_php-300x29.png" width="300" height="29" /></a><br />
L&rsquo;image principale, celle qui sert à la création du node image, a disparue.<br />
Les images suivantes ont été ajoutées avec l&rsquo;éditeur Wysiwyg et elles sont correctement affichées.<br />
En conséquence, toutes mes galeries photos ont disparu lors de la migration ! &#8230;</p>
<h3>Bug de migration des nodes image.</h3>
<p>Je fais une recherche Google sur &laquo;&nbsp;<em>drupal Undefined index: comment_node_image_form dans drupal_retrieve_form()</em>&laquo;&nbsp;.</p>
<p>Le 1er lien est <a  href="http://drupal.org/node/757808">Image module migration</a>, qui me semble très intéressant.</p>
<p>C&rsquo;est un très long fil de commentaires, commencé en novembre 2010, et terminé en août 2012. La solution à ce problème se trouve dans un des derniers commentaires.</p>
<p><strong>Il faut faire tourner un patch sur tous les nodes de type &laquo;&nbsp;image&nbsp;&raquo; du site Drupal 6, AVANT la migration !</strong></p>
<p>Ce patch a été écrit par <a  title="Drew began working on the web in 1996 and started working with Drupal in 2004" href="http://drupal.org/user/19044">Drew Gorton</a>.</p>
<p>C&rsquo;est du code PHP. Vous ne pouvez pas faire tourner simplement ce code dans un page Web, car alors aucune indication de la DB, du site Web ni des nodes à traiter ne sera présente.</p>
<p>Il faut inclure ce code PHP dans une page de votre site Drupal 6.</p>
<p>Pour cela, le plus simple est d&rsquo;ajouter le module &laquo;&nbsp;devel&nbsp;&raquo;.</p>
<h3>Module Devel</h3>
<p>Pour installer le <a  title="A suite of modules containing fun for module developers and themers ..." href="http://drupal.org/project/devel">module Devel</a>, vous pouvez bien évidemment utiliser Drush :</p>
<pre class="brush: bash; title: ; notranslate"># cd /home/dug/www/d6.culbutte.be/sites/culbutte.be/

# drush dl devel
Project devel (6.x-1.27) downloaded to /home/dug/www/d6.culbutte.be/sites/all/modules/devel.      [success]
Project devel contains 3 modules: devel, devel_node_access, devel_generate.

# drush en devel
The following extensions will be enabled: devel
Do you really want to continue? (y/n): y
devel was enabled successfully.                                                                                                   [ok]
FirePHP has been exported via svn to                                                                                              [success]
/home/dug/www/d6.culbutte.be/sites/all/modules/devel/FirePHPCore.</pre>
<p>Le module Devel donne la possibilité d&rsquo;exécuter du code PHP dans vos nodes.</p>
<p>Je vais créer une page bidon pour y insérer le code PHP nécessaire pour préparer la migration des nodes images.</p>
<p>J&rsquo;appelle, par exemple, cette page &laquo;&nbsp;<em>patchd6</em>&nbsp;&raquo; . Un simple texte de quelques mots suffit.<br />
La page est publiée, mais pas dans un menu.</p>
<p>L&rsquo;exécution de code PHP avec Devel se fait en ajoutant un bloc dans la page.<br />
Je vais donc dans les blocs du site Drupal 6.</p>
<p>Je trouve le bloc avec &laquo;&nbsp;Exécuter du code PHP&nbsp;&raquo;, et je commence par le configurer.</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_devel_bloc_executer_code_php.png" rel="lightbox[4816]" class="thickbox no_icon" title="site_drupal6_devel_bloc_executer_code_php"><img class="aligncenter size-medium wp-image-4856" alt="site_drupal6_devel_bloc_executer_code_php" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_devel_bloc_executer_code_php-123x300.png" width="123" height="300" /></a><br />
J&rsquo;autorise l&rsquo;affichage de ce bloc PHP pour l&rsquo;administrateur, et PAS pour les utilisateurs normaux, et j&rsquo;indique le nom de ma page temporaire &laquo;&nbsp;<em>content/pathd6</em>&nbsp;&raquo; .</p>
<p>Je sauve le bloc et je reviens à la page générale de tous les blocs.</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_devel_bloc_executer_code_php_dans_contenu.png" rel="lightbox[4816]" class="thickbox no_icon" title="Mettre le boc &quot;Exécuter du code PHP&quot; dans la section Contenu"><img class="aligncenter size-medium wp-image-4860" alt="Mettre le boc &quot;Exécuter du code PHP&quot; dans la section Contenu" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_devel_bloc_executer_code_php_dans_contenu-300x32.png" width="300" height="32" /></a></p>
<p>et je positionne ce bloc PHP dans le contenu.</p>
<h3>Exécution du patch PHP pour la migration des nodes image.</h3>
<p>Je peux maintenant afficher ma page patchd6. Le bloc exécuter du code PHP doit se trouver en dessous du contenu.</p>
<p>Je reprend le code PHP de la <a  href="http://drupal.org/node/757808">correction proposée par Drew Gorton</a>.</p>
<p><strong>Voici ce code PHP :</strong></p>
<div>
<pre class="brush: bash; title: ; notranslate">&lt;?php
$query = &quot;SELECT * FROM {image} WHERE image_size = '_original'&quot;;
$result = db_query($query);

while ($row = db_fetch_array($result, MYSQL_ASSOC)) {
$fid = $row['fid'];
$nid = $row['nid'];

$file_query = &quot;SELECT * FROM {files} WHERE fid = &quot; . $fid;
$file_result = db_query($file_query);
$image_file =  db_fetch_array($file_result);
if ( $image_file[2] != '_original') {
watchdog(&quot;Image Fix&quot;, &quot;Fixing image node %nid for fid %fid&quot;, array('%nid' =&gt; $nid, '%fid' =&gt; $fid), WATCHDOG_NOTICE, l('view', 'node/'.$nid));
// Un-comment the next line to actually run the query!
// $fix = db_query(&quot;UPDATE {files} SET filename = '_original' WHERE fid = &quot; . $fid);
}
}
?&gt;</pre>
</div>
<p>Copiez ce code, SANS la balise. Donc vous ne copiez pas les 1ère et dernière lignes.</p>
<p>Collez ce code dans le bloc &laquo;&nbsp;<em>Exécuter du code PHP</em>&nbsp;&raquo; de la page <em>patchd6</em>.</p>
<p>Cela doit donner ceci :</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_devel_page_executer_code_php_dans_contenu.png" rel="lightbox[4816]" class="thickbox no_icon" title="Exécuter le code PHP pour préparer la migration des nodes Drupal 6 imageExécuter le code PHP pour préparer la migration des nodes Drupal 6 image"><img class="aligncenter size-medium wp-image-4861" alt="Exécuter le code PHP pour préparer la migration des nodes Drupal 6 imageExécuter le code PHP pour préparer la migration des nodes Drupal 6 image" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_devel_page_executer_code_php_dans_contenu-284x300.png" width="284" height="300" /></a>Vous remarquez qu&rsquo;un des lignes est en commentaire.</p>
<p>Cela va nous permettre de vérifier que le code tourne correctement, sans erreur.</p>
<p>Cliquer sur &laquo;&nbsp;<em>Exécuter</em>&laquo;&nbsp;.</p>
<p>Vous devez voir dans les rapports, dans Écritures récentes du journal, la trace de tous les nodes image qui ont été parcourus :</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_code_php_rapport_journal.png" rel="lightbox[4816]" class="thickbox no_icon" title="Le log de toutes les actions exécutées doit être dans les activités récentes du journal"><img class="aligncenter size-medium wp-image-4862" alt="Le log de toutes les actions exécutées doit être dans les activités récentes du journal" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_drupal6_code_php_rapport_journal-300x190.png" width="300" height="190" /></a></p>
<p>Si tout est ok, que le script parcourt bien vos nodes images, il vous reste à décommenter la ligne pour les update DB.</p>
<pre class="brush: bash; title: ; notranslate">// Un-comment the next line to actually run the query!

$fix = db_query(&quot;UPDATE {files} SET filename = '_original' WHERE fid = &quot; . $fid);</pre>
<p>et à cliquer sur &laquo;&nbsp;<em>Exécuter</em>&laquo;&nbsp;.</p>
<p>Vérifier dans les activités récentes du journal si cette exécution s&rsquo;est bien passée.</p>
<p>Si tout est ok, on peut passer à la commande de migration elle-même.</p>
<h3>Drush site-upgrade</h3>
<p>Lançons la commande &laquo;&nbsp;drush site-upgrade&nbsp;&raquo;.</p>
<p>Vous devez être en root (ou dans un userid qui a les droits sur vos dossiers Web) et dans le dossier de votre ancien site Drupal 6. Utilisez l&rsquo;alias que vous avez défini (ici, @d7new).</p>
<pre class="brush: bash; title: ; notranslate"># cd /home/dug/www/d6.culbutte.be/sites/culbutte.be/
# drush site-upgrade @d7new</pre>
<p>Si le dossier de destination existe, drush demande si il doit réutiliser ou supprimer ce site. Il est préférable de partir à 0. La procédure va créer elle-même le dossier de destination pour votre nouveau site D7.</p>
<pre class="brush: bash; title: ; notranslate">
Gathering information about core and contrib modules...

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 1

1. Check on the Drupal 7 status of your contributed and custom modules and themes. See
http://drupal.org/node/948216 for information on upgrading contributed modules and themes. See
http://drupal.org/node/895314 for a list of modules that have been moved into core for Drupal 7, and instructions
on how to update them. See http://drupal.org/update/modules for information on how to update your custom modules,
and http://drupal.org/update/theme for custom themes.

You may decide at this point that you cannot upgrade your site, because needed modules or themes are not ready
for Drupal 7.
Project             Titre                      Installed                  Available       Statut
advanced_help       Advanced help              6.x-1.2                    7.x-1.0         Recommended
backup_migrate      Backup and Migrate         6.x-2.6                    7.x-2.4         Recommended
comment_notify      Comment Notify             6.x-1.6                    7.x-1.1         Recommended
emfield             Embedded Wave Field        6.x-1.26                   7.x-1.0-alpha2  Recommended
getid3              getID3()                   6.x-1.5                    7.x-1.0         Recommended
globalredirect      Global Redirect            6.x-1.5                    -               NO 7.x RELEASES; using
redirect
imce                IMCE                       6.x-2.4                    7.x-1.6         Recommended
lightbox2           Lightbox2                  6.x-1.11                   7.x-1.0-beta1   Recommended
mollom              Mollom                     6.x-1.16                   7.x-2.3         Recommended
pathauto            Pathauto                   6.x-2.0                    7.x-1.2         Recommended
token               Token actions              6.x-1.19                   7.x-1.4         Recommended
transliteration     Transliteration            6.x-3.1                    7.x-3.1         Recommended
cck                 User Reference             6.x-2.9                    7.x-2.x-dev     Supported,Development
link                Link                       6.x-2.9                    7.x-1.0         Recommended
location            User Locations             6.x-3.2                    7.x-5.x-dev     Recommended
drupal              Garland                    6.27                       7.18            Recommended
calendar            Calendar Popup             6.x-2.4                    7.x-3.4         Recommended
date                Date Tools                 6.x-2.9                    7.x-2.6         Recommended
devel               Devel                      6.x-1.27                   7.x-1.3         Recommended
image               ImageMagick Advanced       6.x-1.2                    7.x-1.x-dev     Supported,Development
Options
imagecache_actions  Imagecache Text Actions    6.x-1.9                    7.x-1.1         Recommended
gmap                GMap Taxonomy Markers      6.x-1.1                    7.x-2.3-alpha2  Recommended
l10n_update         Localization update        6.x-1.0-beta3              7.x-1.0-beta3   Recommended
google_analytics    Google Analytics           6.x-3.5                    7.x-2.x-dev     Recommended
jquery_plugin       jQuery plugins             6.x-1.10                   7.x-1.0         Recommended
jquery_update       jQuery Update              6.x-1.1                    7.x-2.3-alpha1  Recommended
views               Views UI                   6.x-2.16                   7.x-3.5         Recommended
xmlsitemap          XML sitemap user           6.x-1.2                    7.x-2.0-rc2     Recommended
redirect            Redirect                   (globalredirect)           7.x-1.0-rc1     Recommended
bundle_copy         Bundle copy                (content_copy)             7.x-2.x-dev     Recommended
field_permissions   Field Permissions          (content_permissions)      7.x-1.0-beta2   Recommended
field_group         Field group                (fieldgroup)               7.x-2.x-dev     Recommended
ctools              Chaos tool suite (ctools)  (views_export)             7.x-1.2         Recommended
references          References                 (nodereference,userrefere  7.x-2.0         Recommended
nce)

Special notes about some of the projects you are using:

cck  :  The module nodereference in this project has no D7 version available, but there are multiple alternative
projects that may be used instead. Drush picked references:node_reference, but entityreference also
available.  Run again with --preferred to select a different preference.
cck  :  The module userreference in this project has no D7 version available, but there are multiple alternative
projects that may be used instead. Drush picked references:user_reference, but entityreference also
available.  Run again with --preferred to select a different preference.
cck  :  This project requires data migration or other special processing.  Please see http://drupal.org/project/cck
and http://drupal.org/node/895314 for more information on how to do this.
tok  :  This project requires data migration or other special processing.  In Drupal 7, the contrib token module
en      handles UI, as well as field and profile tokens; all other functionality has been migrated to core. You may
encounter problems when enabling the token module during a major upgrade; see

http://drupal.org/node/1477932.

dat  :  This project requires data migration or other special processing.  The d6 version of the date_api module in
e       the date project defines a table called date_formats, which is also defined by system/system.install schema
in d7.  If this problem has not been fixed yet, then the updatedb function will fail, and it will not be
possible to upgrade to d7.  If this happens, disable and uninstall the date_api module before running
site-upgrade (i.e. add '--uninstall=date_api' to site-upgrade call).  See http://drupal.org/node/1013034.
glo  :  globalredirect: this project has been replaced by the project redirect.  The new project will be downloaded
bal     automatically.
red
ire
ct

Please review the upgread readiness report. You may want to uninstall modules that are not ready to upgrade yet.
[0]  :  Cancel
[1]  :  Begin upgrade

1
</pre>
<p>Il y a des warnings, des modules remplacés (par exemple, GlobalRedirect en D6 est remplacé par le module Redirect, qui sera téléchargé automatiquement), mais on peut continuer.</p>
<p>Rappellez-vous qu&rsquo;on ne risque rien ! Le site original D6 n&rsquo;est pas modifié. Au pire, on recommence après correction.</p>
<pre class="brush: bash; title: ; notranslate">
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 2

2. Update to the latest available version of Drupal 6.x (if your current version is Drupal 5.x, you have to
upgrade to 6.x first). If you need to update, download Drupal 6.x and follow the instructions in its UPGRADE.txt.
This document only applies for upgrades from 6.x to 7.x.

You must also insure that all of your contrib modules are up to date!

Drupal core is up-to-date; version 6.27 installed.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 3

3. Log in as user ID 1 (the site maintenance user).

You will not need to log in if Drush is used to perform all upgrade steps for you.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 4

4. Go to Administer &gt; Site configuration &gt; Site maintenance. Select &quot;Off-line&quot; and save the configuration.

When Drush does the steps of your site upgrade, it always modifies the working copy of your site; the original
site is left unchanged. You may wish to take your site off-line anyway.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 5

5. Go to Administer &gt; Site building &gt; Themes. Enable &quot;Garland&quot; and select it as the default theme.

Drush will set the administrative theme to &quot;Garland&quot; in the target site without affecting the source site.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 6

6. Go to Administer &gt; Site building &gt; Modules. Disable all modules that are not listed under &quot;Core - required&quot;
or &quot;Core - optional&quot;. It is possible that some modules cannot be disabled, because others depend on them. Repeat
this step until all non-core modules are disabled.

If you know that you will not re-enable some modules for Drupal 7.x and you no longer need their data, then you
can uninstall them under the Uninstall tab after disabling them.

Drush will automatically disable all non-core modules in the target site without affecting the source site. You
may disable or uninstall contrib modules now if you wish; any that you do not do now will be disabled by Drush
after Step 12.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 7

7. On the command line or in your FTP client, remove the file

sites/default/default.settings.php

Drush will remove default.settings.php from the target site later, after Step 12. You may remove it from the
source sit now if you wish, but doing so is unnecessary.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 8

8. Remove all old core files and directories, except for the 'sites' directory and any custom files you added
elsewhere.

If you made modifications to files like .htaccess or robots.txt, you will need to re-apply them from your backup,
after the new files are in place.

Drush will create your upgraded site in a new location; it is not necessary to remove any core files from the
source site.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 9

9. If you uninstalled any modules, remove them from the sites/all/modules and other sites/*/modules directories.
Leave other modules in place, even though they are incompatible with Drupal 7.x.

Drush will create your upgraded site in a new location; it is not necessary to remove any contrib module files
from the source site.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 10

10. Download the latest Drupal 7.x release from http://drupal.org to a directory outside of your web root.
Extract the archive and copy the files into your Drupal directory.

On a typical Unix/Linux command line, use the following commands to download and extract:

wget http://drupal.org/files/projects/drupal-x.y.tar.gz tar -zxvf drupal-x.y.tar.gz

This creates a new directory drupal-x.y/ containing all Drupal files and directories. Copy the files into your
Drupal installation directory:

cp -R drupal-x.y/* drupal-x.y/.htaccess /path/to/your/installation

If you do not have command line access to your server, download the archive from http://drupal.org using your web
browser, extract it, and then use an FTP client to upload the files to your web root.

Drush will automatically do this step now.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 11

11. Re-apply any modifications to files such as .htaccess or robots.txt.

If you had no modifications to .htaccess or robots.txt, you don't need to do anything here.

Drush cannot do this step; you must perform it manually.

What would you like to do?
[0]  :  Cancel
[1]  :  I will do this step manually.
[2]  :  Skip this step.
</pre>
<p>Si j&rsquo;ai modifié les fichiers .htaccess ou robots.txt, je devrais refaire ces modifications manuellement.<br />
Ce n&rsquo;est pas mon cas. Je continue (2 : skip this step).</p>
<pre class="brush: bash; title: ; notranslate">
2&lt;/pre&gt;
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

UPGRADE.txt Major Upgrade Step 12

12. Make your settings.php file writeable, so that the update process can convert it to the format of Drupal

7.x. settings.php is usually located in

sites/default/settings.php

Note that Drush will instead *copy* your settings.php file to its new location. The copy is made writable, but

the original may remain write-protected.

Drush will automatically do this step now.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

UPGRADE.txt Major Upgrade Step 12-a

12-a. Drush-specific step: Drush will now do steps 5 and 6 of UPGRADE.txt, and set the site theme to Garland and

disable all contrib modules. Before it does this, it makes a copy of your database, and does all modifications on

the *copy*, leaving your source site unchanged. Drush will also uninstall all modules specified via the

--uninstall option at this time.

Drush will automatically do this step now.

You will destroy data in d7newdb and replace with data from dm_d7culbutte.

You might want to make a backup first, using the sql-dump command.

Do you really want to continue? (y/n): y

</pre>
<p>Le script de mise à jour va maintenant désactiver tous les modules D6 &laquo;&nbsp;<em>Contrib</em>&nbsp;&raquo; .</p>
<pre class="brush: bash; title: ; notranslate">

Disabling advanced_help, backup_migrate, comment_notify, eminline, getid3, globalredirect, imce, lightbox2,[ok]

mollom, pathauto, token, token_actions, transliteration, content, content_copy, content_permissions,

emaudio, emimage, emfield, emthumb, emvideo, emwave, fieldgroup, filefield, filefield_meta, imagefield,

link, location_cck, nodereference, number, optionwidgets, text, userreference, aggregator, blog, color,

comment, contact, translation, dblog, forum, help, locale, menu, path, ping, profile, search, statistics,

syslog, taxonomy, tracker, update, upload, block, filter, node, system, user, calendar, calendar_ical,

jcalendar, date, date_api, date_locale, date_php4, date_popup, date_repeat, date_timezone, date_tools,

devel, image, image_attach, image_gallery, image_import, image_im_advanced, imageapi, imageapi_gd,

imageapi_imagemagick, imagecache, imagecache_canvasactions, imagecache_coloractions,

imagecache_customactions, imagecache_textactions, imagecache_ui, gmap, gmap_location, gmap_macro_builder,

gmap_taxonomy, location, location_addanother, location_fax, location_phone, location_search, location_node,

location_user, l10n_update, googleanalytics, jquery_plugin, jquery_ui, jquery_update, views, views_export,

views_ui, xmlsitemap, xmlsitemap_engines, xmlsitemap_node, xmlsitemap_taxonomy, xmlsitemap_user, garland

garland is the default theme and can't be disabled. [ok]

block is a required module and can't be disabled. [ok]

filter is a required module and can't be disabled. [ok]

node is a required module and can't be disabled. [ok]

system is a required module and can't be disabled. [ok]

user is a required module and can't be disabled. [ok]

The following extensions will be disabled: advanced_help, backup_migrate, comment_notify, eminline, getid3, globalredirect, imce, lightbox2, mollom, pathauto, token, token_actions, transliteration, content, content_copy, content_permissions, emaudio, emimage, emfield, emthumb, emvideo, emwave, fieldgroup, filefield, filefield_meta, imagefield, link, location_cck, nodereference, number, optionwidgets, text, userreference, aggregator, blog, color, comment, contact, translation, dblog, forum, help, locale, menu, path, ping, profile, search, statistics, syslog, taxonomy, tracker, update, upload, calendar, calendar_ical, jcalendar, date, date_api, date_locale, date_php4, date_popup, date_repeat, date_timezone, date_tools, devel, image, image_attach, image_gallery, image_import, image_im_advanced, imageapi, imageapi_gd, imageapi_imagemagick, imagecache, imagecache_canvasactions, imagecache_coloractions, imagecache_customactions, imagecache_textactions, imagecache_ui, gmap, gmap_location, gmap_macro_builder, gmap_taxonomy, location, location_addanother, location_fax, location_phone, location_search, location_node, location_user, l10n_update, googleanalytics, jquery_plugin, jquery_ui, jquery_update, views, views_export, views_ui, xmlsitemap, xmlsitemap_engines, xmlsitemap_node, xmlsitemap_taxonomy, xmlsitemap_user

Do you really want to continue? (y/n): y

aggregator was disabled successfully. [ok]

blog was disabled successfully. [ok]

color was disabled successfully. [ok]

comment was disabled successfully. [ok]

contact was disabled successfully. [ok]

dblog was disabled successfully. [ok]

forum was disabled successfully. [ok]

help was disabled successfully. [ok]

locale was disabled successfully. [ok]

menu was disabled successfully. [ok]

path was disabled successfully. [ok]

ping was disabled successfully. [ok]

profile was disabled successfully. [ok]

search was disabled successfully. [ok]

statistics was disabled successfully. [ok]

syslog was disabled successfully. [ok]

taxonomy was disabled successfully. [ok]

tracker was disabled successfully. [ok]

translation was disabled successfully. [ok]

update was disabled successfully. [ok]

upload was disabled successfully. [ok]

advanced_help was disabled successfully. [ok]

backup_migrate was disabled successfully. [ok]

calendar was disabled successfully. [ok]

calendar_ical was disabled successfully. [ok]

jcalendar was disabled successfully. [ok]

content was disabled successfully. [ok]

content_copy was disabled successfully. [ok]

content_permissions was disabled successfully. [ok]

fieldgroup was disabled successfully. [ok]

nodereference was disabled successfully. [ok]

number was disabled successfully. [ok]

optionwidgets was disabled successfully. [ok]

text was disabled successfully. [ok]

userreference was disabled successfully. [ok]

comment_notify was disabled successfully. [ok]

date was disabled successfully. [ok]

date_api was disabled successfully. [ok]

date_locale was disabled successfully. [ok]

date_php4 was disabled successfully. [ok]

date_popup was disabled successfully. [ok]

date_repeat was disabled successfully. [ok]

date_timezone was disabled successfully. [ok]

date_tools was disabled successfully. [ok]

devel was disabled successfully. [ok]

emaudio was disabled successfully. [ok]

emimage was disabled successfully. [ok]

eminline was disabled successfully. [ok]

emthumb was disabled successfully. [ok]

emvideo was disabled successfully. [ok]

emwave was disabled successfully. [ok]

emfield was disabled successfully. [ok]

filefield was disabled successfully. [ok]

filefield_meta was disabled successfully. [ok]

getid3 was disabled successfully. [ok]

globalredirect was disabled successfully. [ok]

gmap was disabled successfully. [ok]

gmap_location was disabled successfully. [ok]

gmap_macro_builder was disabled successfully. [ok]

gmap_taxonomy was disabled successfully. [ok]

googleanalytics was disabled successfully. [ok]

image_attach was disabled successfully. [ok]

image_gallery was disabled successfully. [ok]

image_import was disabled successfully. [ok]

image_im_advanced was disabled successfully. [ok]

image was disabled successfully. [ok]

imageapi was disabled successfully. [ok]

imageapi_gd was disabled successfully. [ok]

imageapi_imagemagick was disabled successfully. [ok]

imagecache was disabled successfully. [ok]

imagecache_ui was disabled successfully. [ok]

imagecache_canvasactions was disabled successfully. [ok]

imagecache_coloractions was disabled successfully. [ok]

imagecache_customactions was disabled successfully. [ok]

imagecache_textactions was disabled successfully. [ok]

imagefield was disabled successfully. [ok]

imce was disabled successfully. [ok]

jquery_plugin was disabled successfully. [ok]

jquery_ui was disabled successfully. [ok]

jquery_update was disabled successfully. [ok]

l10n_update was disabled successfully. [ok]

lightbox2 was disabled successfully. [ok]

link was disabled successfully. [ok]

location_addanother was disabled successfully. [ok]

location_cck was disabled successfully. [ok]

location_fax was disabled successfully. [ok]

location_phone was disabled successfully. [ok]

location_search was disabled successfully. [ok]

location was disabled successfully. [ok]

location_node was disabled successfully. [ok]

location_user was disabled successfully. [ok]

mollom was disabled successfully. [ok]

pathauto was disabled successfully. [ok]

token was disabled successfully. [ok]

token_actions was disabled successfully. [ok]

transliteration was disabled successfully. [ok]

views was disabled successfully. [ok]

views_export was disabled successfully. [ok]

views_ui was disabled successfully. [ok]

xmlsitemap was disabled successfully. [ok]

xmlsitemap_engines was disabled successfully. [ok]

xmlsitemap_node was disabled successfully. [ok]

xmlsitemap_taxonomy was disabled successfully. [ok]

xmlsitemap_user was disabled successfully. [ok]

Uninstalling [ok]

There were no modules that could be uninstalled. [ok]
</pre>
<p>Ensuite, toutes les mises à jour disponibles :</p>
<pre class="brush: bash; title: ; notranslate">

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 12-b

12-b. Drush-specific step: Drush will now do step 7 of UPGRADE.txt, and remove
sites/default/default.settings.php from the target site.

Drush will automatically do this step now.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 13

13. Run update.php by visiting http://www.example.com/update.php (replace www.example.com with your domain
    name). This will update the core database tables.

    If you are unable to access update.php do the following:

    - Open settings.php with a text editor.

    - Find the line that says: $update_free_access = FALSE;

    - Change it into: $update_free_access = TRUE;

    - Once the upgrade is done, $update_free_access must be reverted to FALSE.

Note that Drush will copy your database and run updatedb on the copy. The source database remains unchanged.

Drush will automatically do this step now.
The following updates are pending:

system module :
  7000 -   Rename blog and forum permissions to be consistent with other content types.
  7001 -   Generate a cron key and save it in the variables table.
  7002 -   Add a table to store blocked IP addresses.
  7003 -   Update {blocked_ips} with valid IP addresses from {access}.
  7004 -   Remove hardcoded numeric deltas from all blocks in core.
  7005 -   Remove throttle columns and variables.
  7007 -   Convert to new method of storing permissions.
  7009 -   Rename the variable for primary links.
  7011 -   Split the 'bypass node access' permission from 'administer nodes'.
  7013 -   Convert default time zone offset to default time zone name.
  7015 -   Change the user logout path.
  7016 -   Remove custom datatype _unsigned in PostgreSQL.
  7017 -   Change the theme setting 'toggle_node_info' into a per content type variable.
  7018 -   Shorten the {system}.type column and modify indexes.
  7020 -   Enable field and field_ui modules.
  7021 -   Change the PHP for settings permission.
  7027 -   Enable field type modules.
  7029 -   Add new 'view own unpublished content' permission for authenticated users.  Preserves legacy behavior from Drupal 6.x.
  7032 -  Alter field hostname to identifier in the {flood} table.
  7033 -   Move CACHE_AGGRESSIVE to CACHE_NORMAL.
  7034 -   Migrate the file path settings and create the new {file_managed} table.
  7036 -   Split the 'access site in maintenance mode' permission from 'administer site configuration'.
  7042 -   Upgrade the {url_alias} table and create a cache bin for path aliases.
  7044 -   Drop the actions_aid table.
  7045 -   Add expiration field to the {flood} table.
  7046 -   Switch from the Minnelli theme if it is the default or admin theme.
  7047 -   Normalize the front page path variable.
  7048 -   Convert path languages from the empty string to LANGUAGE_NONE.
  7049 -   Rename 'Default' profile to 'Standard.'
  7050 -   Change {batch}.id column from serial to regular int.
  7051 -   make the IP field IPv6 compatible
  7052 -   Rename file to include_file in {menu_router} table.
  7053 -   Upgrade standard blocks and menus.
  7054 -   Remove {cache_}.headers columns.
  7055 -   Converts fields that store serialized variables from text to blob.
  7057 -   Increase the size of session-ids.
  7058 -   Remove cron semaphore variable.
  7059 -   Create the {file_usage} table.
  7060 -   Create fields in preparation for migrating upload.module to file.module.
  7061 -   Migrate upload.module data to the newly created file field.
  7062 -   Replace 'system_list' index with 'bootstrap' index on {system}.
  7063 -   Delete {menu_links} records for 'type' =&gt; MENU_CALLBACK which would not appear in a fresh install.
  7064 -   Remove block_callback field from {menu_router}.
  7065 -   Remove the default value for sid.
  7066 -   Migrate the 'file_directory_temp' variable.
  7067 -   Grant administrators permission to view the administration theme.
  7068 -   Update {url_alias}.language description.
  7069 -   Remove the obsolete 'site_offline' variable.   @see update_fix_d7_requirements()
  7070 -   Remove the obsolete 'drupal_badge_color' and 'drupal_badge_size' variables.
  7071 -   Add index missed during upgrade, and fix field default.
  7072 -   Remove the obsolete 'site_offline_message' variable.   @see update_fix_d7_requirements()
  7073 -   Add binary to {file_managed}, in case system_update_7034() was run without  it.
  7074 -   This update has been removed and will not run.
  7076 -   Convert menu_links query strings into arrays.
  7077 -   Revert {file_managed}.filename changed to a binary column.

aggregator module :
  7000 -   Add hash column to aggregator_feed table.
  7001 -   Add aggregator teaser length to settings from old global default teaser length
  7002 -   Add queued timestamp.
  7003 -   Increase the length of {aggregator_feed}.url.

block module :
  7000 -   Set system.weight to a low value for block module.   Block should go first so that other modules can alter its output  during hook_page_alter(). Almost everything on the page is a block,  so before block module runs, there will not be much to alter.
  7002 -   Rename {blocks} table to {block}, {blocks_roles} to {block_role} and  {boxes} to {block_custom}.
  7003 -   Change the weight column to normal int.
  7004 -   Add new blocks to new regions, migrate custom variables to blocks.
  7005 -   Update the {block_custom}.format column.
  7006 -   Recreates cache_block table.   Converts fields that hold serialized variables from text to blob.  Removes 'headers' column.
  7007 -   Change {block_custom}.format into varchar.
  7008 -   Update database to match Drupal 7 schema.

color module :
  7001 -   Warn site administrator if unsafe CSS color codes are found in the database.

comment module :
  7000 -   Rename comment display setting variables.
  7001 -   Change comment status from published being 0 to being 1
  7002 -   Rename {comments} table to {comment} and upgrade it.
  7003 -   Split {comment}.timestamp into 'created' and 'changed', improve indexing on {comment}.
  7004 -   Upgrade the {node_comment_statistics} table.
  7005 -   Create the comment_body field.
  7006 -   Migrate data from the comment field to field storage.
  7007 -   Add an index to the created column.
  7008 -   Update database to match Drupal 7 schema.
  7009 -   Change the last_comment_timestamp column description.

contact module :
  7000 -   Rename the threshold limit variable.
  7001 -   Rename the administer contact forms permission.
  7002 -   Enable the 'access user contact forms' for registered users by default.
  7003 -   Change the weight column to normal int.

dblog module :
  7001 -   Update the {watchdog} table.

filter module :
  7000 -   Upgrade the {filter_formats} table and rename it to {filter_format}.
  7001 -   Break out &quot;escape HTML filter&quot; option to its own filter.
  7003 -   Upgrade the {filter} table for core filters.
  7005 -   Integrate text formats with the user permissions system.   This function converts text format role assignments to use the new text  format permissions introduced in Drupal 7, creates a fallback (plain text)  format that is available to all users, and explicitly sets the text format  in cases that used to rely on a single site-wide default.
  7008 -   Grant usage of all text formats to user roles having the 'administer filters' permission.
  7009 -   Converts fields that store serialized variables from text to blob.
  7010 -   Change {filter_format}.format and {filter}.format into varchar.

forum module :
  7000 -   Add new index to forum table.
  7001 -   Create new {forum_index} table.
  7002 -   Add new index to forum_index table.
  7003 -   Rename field to 'taxonomy_forums'.
  7011 -   Update {forum_index} so that only published nodes are indexed.
  7012 -   Add 'created' and 'last_comment_timestamp' indexes.

image module :
  7000 -   Install the schema for users upgrading from the contributed module.
  7001 -   Rename possibly misnamed {image_effect} table to {image_effects}.
  7002 -   Add width and height columns to image field schema and populate.
  7003 -   Remove the variables that set alt and title length since they were not  used for database column size and could cause PDO exceptions.
  7004 -   Use a large setting (512 and 1024 characters) for the length of the image alt  and title fields.

locale module :
  7000 -   Add context field index and allow longer location.
  7001 -   Upgrade language negotiation settings.
  7002 -   Updates URL language negotiation by adding the URL fallback detection method.
  7003 -   Update &quot;language_count&quot; variable.
  7004 -   Remove duplicates in {locales_source}.
  7005 -   Increase {locales_languages}.formula column's length.

menu module :
  7000 -   Migrate the &quot;Default menu for content&quot; setting to individual node types.
  7001 -   Rename &quot;Primary Links&quot; and &quot;Secondary Links&quot; to their Drupal 7 equivalents.
  7002 -   Rename the primarysecondary menu blocks to match previously renamed menus.
  7003 -   Add missing custom menus to active menus list.

node module :
  7000 -   Upgrade the node type table and fix node type 'module' attribute to avoid name-space conflicts.
  7001 -   Rename {node_revisions} table to {node_revision}.
  7002 -   Extend the node_promote_status index to include all fields required for the node page query.
  7003 -   Remove the node_counter if the statistics module is uninstalled.
  7004 -   Extend the existing default preview and teaser settings to all node types.
  7005 -   Add statuscommentpromote and sticky columns to the {node_revision} table.
  7006 -   Convert body and teaser from node properties to fields, and migrate statuscommentpromote and sticky columns to the {node_revision} table.
  7007 -   Remove column min_word_count.
  7008 -   Split the 'administer nodes' permission from 'access content overview'.
  7009 -   Convert node languages from the empty string to LANGUAGE_NONE.
  7010 -   Add the {block_node_type} table.
  7011 -   Update the database from Drupal 6 to match the schema.
  7012 -   Switches body fields to untranslatable while upgrading from D6 and makes them language neutral.
  7013 -   Change {node}.vid default value from 0 to NULL to avoid deadlock issues on MySQL.

profile module :
  7001 -   Rename {profile_fields} table to {profile_field} and {profile_values} to {profile_value}.
  7002 -   Change the weight column to normal int.

search module :
  7000 -   Replace unique keys in 'search_dataset' and 'search_index' by primary keys.

statistics module :
  7000 -   Update the {accesslog}.sid column to match the length of {sessions}.sid

taxonomy module :
  7001 -   Rename taxonomy tables.
  7002 -   Add {vocabulary}.machine_name column.
  7003 -   Remove the related terms setting from vocabularies.   This setting has not been used since Drupal 6. The {taxonomy_relations} table  itself is retained to allow for data to be upgraded.
  7004 -   Move taxonomy vocabulary associations for nodes to fields and field instances.
  7005 -   Migrate {taxonomy_term_node} table to field storage.   @todo: This function can possibly be made much faster by wrapping a  transaction around all the inserts.
  7006 -   Add {taxonomy_term_data}.format column.
  7007 -   Add index on {taxonomy_term_data}.name column to speed up taxonomy_get_term_by_name().
  7008 -   Change the weight columns to normal int.
  7009 -   Change {taxonomy_term_data}.format into varchar.
  7010 -   Change {taxonomy_index}.created to support signed int.

text module :
  7000 -   Change text field 'format' columns into varchar.

tracker module :
  7000 -   Create new tracker_node and tracker_user tables.

update module :
  7000 -   Create a queue to store tasks for requests to fetch available update data.
  7001 -   Recreates cache_update table.   Converts fields that hold serialized variables from text to blob.  Removes 'headers' column.

user module :
  7000 -   Increase the length of the password field to accommodate better hashes.   Also re-hashes all current passwords to improve security. This may be a  lengthy process, and is performed batch-wise.
  7001 -   Remove the 'threshold', 'mode' and 'sort' columns from the {users} table.   These fields were previously used to store per-user comment settings.
  7002 -   Convert user time zones from time zone offsets to time zone names.
  7003 -   Update user settings for cancelling user accounts.   Prior to 7.x, users were not able to cancel their accounts. When  administrators deleted an account, all contents were assigned to uid 0,  which is the same as the 'user_cancel_reassign' method now.
  7005 -   Changes the users table to allow longer e-mail addresses.
  7006 -   Add module data to {role_permission}.
  7007 -   Add a weight column to user roles.
  7008 -   If 'user_register' variable was unset in Drupal 6, set it to be the same as  the Drupal 6 default setting.
  7009 -   Converts fields that store serialized variables from text to blob.
  7010 -   Update the {user}.signature_format column.
  7011 -   Placeholder function.   As a fix for user_update_7011() not updating email templates to use the new  tokens, user_update_7017() now targets email templates of Drupal 6 sites and  already upgraded sites.
  7012 -   Add the user's pictures to the {file_managed} table and make them managed  files.
  7013 -   Add user module file usage entries.
  7014 -   Rename the 'post comments without approval' permission.   In Drupal 7, this permission has been renamed to 'skip comment approval'.
  7015 -   Change {users}.signature_format into varchar.
  7016 -   Update the database to match the schema.
  7017 -   Update email templates to use new tokens.   This function upgrades customized email templates from the old !token format  to the new core tokens format. Additionally, in Drupal 7 we no longer e-mail  plain text passwords to users, and there is no token for a plain text  password in the new token system. Therefore, it also modifies any saved  templates using the old '!password' token such that the token is removed, and  displays a warning to users that they may need to go and modify the wording  of their templates.
  7018 -   Ensure there is an index on {users}.picture.

Do you wish to run all pending updates? (y/n): y
Performed update: user_update_7000                                                                         [ok]
Performed update: user_update_7000                                                                         [ok]
Performed update: user_update_7000                                                                         [ok]
Performed update: user_update_7001                                                                         [ok]
Performed update: user_update_7002                                                                         [ok]
Performed update: user_update_7002                                                                         [ok]
Some user time zones have been emptied and need to be set to the correct values. Use the new time zone     [warning]
options to choose whether to remind users at login to set the correct time zone.
Performed update: user_update_7003                                                                         [ok]
Performed update: user_update_7005                                                                         [ok]
Performed update: taxonomy_update_7001                                                                     [ok]
Performed update: taxonomy_update_7002                                                                     [ok]
Performed update: taxonomy_update_7003                                                                     [ok]
Performed update: node_update_7000                                                                         [ok]
Performed update: node_update_7001                                                                         [ok]
Performed update: node_update_7002                                                                         [ok]
Performed update: node_update_7003                                                                         [ok]
Performed update: node_update_7004                                                                         [ok]
Performed update: node_update_7005                                                                         [ok]
Performed update: image_update_7000                                                                        [ok]
Performed update: image_update_7001                                                                        [ok]
Performed update: forum_update_7000                                                                        [ok]
Performed update: forum_update_7001                                                                        [ok]
Performed update: forum_update_7002                                                                        [ok]
Performed update: filter_update_7000                                                                       [ok]
Performed update: filter_update_7001                                                                       [ok]
Performed update: filter_update_7003                                                                       [ok]
Performed update: contact_update_7000                                                                      [ok]
Performed update: comment_update_7000                                                                      [ok]
Performed update: comment_update_7001                                                                      [ok]
Performed update: comment_update_7002                                                                      [ok]
Performed update: comment_update_7003                                                                      [ok]
Performed update: comment_update_7004                                                                      [ok]
Performed update: block_update_7000                                                                        [ok]
Performed update: block_update_7002                                                                        [ok]
Performed update: block_update_7003                                                                        [ok]
Performed update: block_update_7004                                                                        [ok]
The site mission was migrated to a custom block and set up to only show on the front page in the           [status]
highlighted content region. The block was set to use the default text format, which might differ from the
HTML based format used before. Check the block and ensure that the output is right. If your theme does not
have a highlighted content region, you might need to relocate the block.
The footer message was migrated to a custom block and set up to appear in the footer. The block was set to [status]
use the default text format, which might differ from the HTML based format used before. Check the block and
ensure that the output is right. If your theme does not have a footer region, you might need to relocate
the block.
Performed update: block_update_7005                                                                        [ok]
Performed update: block_update_7006                                                                        [ok]
Performed update: block_update_7007                                                                        [ok]
Performed update: block_update_7008                                                                        [ok]
Performed update: system_update_7000                                                                       [ok]
Performed update: system_update_7001                                                                       [ok]
Performed update: system_update_7002                                                                       [ok]
Performed update: system_update_7003                                                                       [ok]
Performed update: system_update_7004                                                                       [ok]
Performed update: system_update_7005                                                                       [ok]
Performed update: system_update_7007                                                                       [ok]
Performed update: user_update_7006                                                                         [ok]
Performed update: user_update_7007                                                                         [ok]
Performed update: filter_update_7005                                                                       [ok]
A new Plain text format has been created which will be available to all users. You can configure this text [status]
format on the text format configuration page.
Performed update: filter_update_7008                                                                       [ok]
Performed update: filter_update_7009                                                                       [ok]
Performed update: filter_update_7010                                                                       [ok]
Performed update: user_update_7008                                                                         [ok]
Performed update: user_update_7009                                                                         [ok]
Performed update: user_update_7010                                                                         [ok]
Performed update: user_update_7011                                                                         [ok]
Performed update: contact_update_7001                                                                      [ok]
Performed update: contact_update_7002                                                                      [ok]
Performed update: contact_update_7003                                                                      [ok]
Performed update: system_update_7009                                                                       [ok]
Performed update: system_update_7011                                                                       [ok]
Performed update: system_update_7013                                                                       [ok]
The default time zone has been set to Europe/Brussels. Check the date and time configuration page to       [warning]
configure it correctly.
Performed update: system_update_7015                                                                       [ok]
Performed update: system_update_7016                                                                       [ok]
Performed update: system_update_7017                                                                       [ok]
Performed update: system_update_7018                                                                       [ok]
Performed update: system_update_7020                                                                       [ok]
Performed update: image_update_7002                                                                        [ok]
Performed update: image_update_7003                                                                        [ok]
Performed update: image_update_7004                                                                        [ok]
Performed update: system_update_7021                                                                       [ok]
Performed update: system_update_7027                                                                       [ok]
Performed update: taxonomy_update_7004                                                                     [ok]
Performed update: taxonomy_update_7005                                                                     [ok]
Performed update: taxonomy_update_7005                                                                     [ok]
Performed update: taxonomy_update_7006                                                                     [ok]
Performed update: taxonomy_update_7007                                                                     [ok]
Performed update: taxonomy_update_7008                                                                     [ok]
Performed update: taxonomy_update_7009                                                                     [ok]
Performed update: taxonomy_update_7010                                                                     [ok]
Performed update: forum_update_7003                                                                        [ok]
Performed update: forum_update_7011                                                                        [ok]
Performed update: forum_update_7012                                                                        [ok]
Performed update: node_update_7006                                                                         [ok]
Performed update: node_update_7006                                                                         [ok]
Performed update: node_update_7006                                                                         [ok]
Performed update: node_update_7006                                                                         [ok]
Performed update: node_update_7006                                                                         [ok]
Performed update: node_update_7006                                                                         [ok]
Performed update: node_update_7007                                                                         [ok]
Performed update: node_update_7008                                                                         [ok]
Performed update: node_update_7009                                                                         [ok]
Performed update: node_update_7010                                                                         [ok]
Performed update: node_update_7011                                                                         [ok]
Performed update: node_update_7012                                                                         [ok]
Performed update: node_update_7013                                                                         [ok]
Performed update: comment_update_7005                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7006                                                                      [ok]
Performed update: comment_update_7007                                                                      [ok]
Performed update: comment_update_7008                                                                      [ok]
Performed update: comment_update_7009                                                                      [ok]
Performed update: system_update_7029                                                                       [ok]
Performed update: system_update_7032                                                                       [ok]
Performed update: system_update_7033                                                                       [ok]
Performed update: system_update_7034                                                                       [ok]
Performed update: user_update_7012                                                                         [ok]
Performed update: system_update_7036                                                                       [ok]
Performed update: system_update_7042                                                                       [ok]
Performed update: system_update_7044                                                                       [ok]
Performed update: system_update_7045                                                                       [ok]
Performed update: system_update_7046                                                                       [ok]
Performed update: system_update_7047                                                                       [ok]
Performed update: system_update_7048                                                                       [ok]
Performed update: system_update_7049                                                                       [ok]
Performed update: system_update_7050                                                                       [ok]
Performed update: system_update_7051                                                                       [ok]
Performed update: system_update_7052                                                                       [ok]
Performed update: system_update_7053                                                                       [ok]
Performed update: system_update_7054                                                                       [ok]
Performed update: system_update_7055                                                                       [ok]
Performed update: system_update_7057                                                                       [ok]
Performed update: system_update_7058                                                                       [ok]
Performed update: system_update_7059                                                                       [ok]
Performed update: user_update_7013                                                                         [ok]
Performed update: user_update_7014                                                                         [ok]
Performed update: user_update_7015                                                                         [ok]
Performed update: user_update_7016                                                                         [ok]
Performed update: user_update_7017                                                                         [ok]
Performed update: user_update_7018                                                                         [ok]
Performed update: system_update_7060                                                                       [ok]
The content type blog had uploads disabled but contained uploaded file data. Uploads have been re-enabled  [status]
to migrate the existing data. You may delete the &quot;File attachments&quot; field in the blog type if this data is
not necessary.
Performed update: system_update_7061                                                                       [ok]
Performed update: system_update_7062                                                                       [ok]
Performed update: system_update_7063                                                                       [ok]
Performed update: system_update_7064                                                                       [ok]
Performed update: system_update_7065                                                                       [ok]
Performed update: system_update_7066                                                                       [ok]
Performed update: system_update_7067                                                                       [ok]
The new &quot;View the administration theme&quot; permission is required in order to view your site's administration [status]
theme. This permission has been automatically granted to the following roles: administrateur, rédacteur en
chef. You can grant this permission to other roles on the permissions page.
Performed update: system_update_7068                                                                       [ok]
Performed update: system_update_7069                                                                       [ok]
Performed update: system_update_7070                                                                       [ok]
Performed update: system_update_7071                                                                       [ok]
Performed update: locale_update_7000                                                                       [ok]
Performed update: system_update_7072                                                                       [ok]
Performed update: locale_update_7001                                                                       [ok]
Performed update: menu_update_7000                                                                         [ok]
Performed update: system_update_7073                                                                       [ok]
Performed update: locale_update_7002                                                                       [ok]
Performed update: aggregator_update_7000                                                                   [ok]
Performed update: system_update_7074                                                                       [ok]
Performed update: locale_update_7003                                                                       [ok]
Performed update: aggregator_update_7001                                                                   [ok]
Performed update: menu_update_7001                                                                         [ok]
Performed update: locale_update_7004                                                                       [ok]
Performed update: menu_update_7002                                                                         [ok]
Performed update: profile_update_7001                                                                      [ok]
Performed update: aggregator_update_7002                                                                   [ok]
Performed update: update_update_7000                                                                       [ok]
Performed update: system_update_7076                                                                       [ok]
Performed update: aggregator_update_7003                                                                   [ok]
Performed update: system_update_7077                                                                       [ok]
Performed update: color_update_7001                                                                        [ok]
Performed update: locale_update_7005                                                                       [ok]
Performed update: text_update_7000                                                                         [ok]
Performed update: profile_update_7002                                                                      [ok]
Performed update: search_update_7000                                                                       [ok]
Performed update: tracker_update_7000                                                                      [ok]
Performed update: update_update_7001                                                                       [ok]
Performed update: statistics_update_7000                                                                   [ok]
Performed update: menu_update_7003                                                                         [ok]
Performed update: dblog_update_7001                                                                        [ok]
Finished performing updates.                                                                               [ok]

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 14

14. Backup your database after the core upgrade has run.

Drush will automatically do this step now.
Making backup: 'Upgraded Core' in /root/.drush/cache/@self-d6-to-d7new-d7/progress_backups/upgraded-core.tar

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 15

15. Replace and update your non-core modules and themes, following the procedures at

http://drupal.org/node/948216

Drush will walk through these instructions for each module. Note that all of the new modules will be downloaded
up-front now; they will be moved into place later.
No .info file could be found for eminline                                                                  [warning]
No .info file could be found for token_actions                                                             [warning]
No .info file could be found for emaudio                                                                   [warning]
No .info file could be found for emimage                                                                   [warning]
No .info file could be found for emthumb                                                                   [warning]
No .info file could be found for emvideo                                                                   [warning]
No .info file could be found for emwave                                                                    [warning]
No .info file could be found for calendar_ical                                                             [warning]
No .info file could be found for jcalendar                                                                 [warning]
No .info file could be found for date_locale                                                               [warning]
No .info file could be found for date_php4                                                                 [warning]
No .info file could be found for image                                                                     [warning]
No .info file could be found for imagecache_textactions                                                    [warning]
Note: in addition to the modules below, the following still need to be upgraded, but cannot be started until their dependencies below are upgraded: comment_notify (Deps: comment,token),pathauto (Deps: path,token),location_cck (Deps: location),calendar (Deps: views,date_api,date_views),date (Deps: date_api),date_popup (Deps: date_api),date_repeat (Deps: date_api),date_tools (Deps: date),gmap_location (Deps: gmap,location),gmap_macro_builder (Deps: gmap),gmap_taxonomy (Deps: taxonomy,gmap),location_addanother (Deps: location,location_node),location_fax (Deps: location),location_phone (Deps: location),location_search (Deps: search,location),location_node (Deps: location),location_user (Deps: location),views_ui (Deps: views),xmlsitemap_engines (Deps: xmlsitemap),xmlsitemap_node (Deps: xmlsitemap),xmlsitemap_taxonomy (Deps: xmlsitemap,taxonomy),xmlsitemap_user (Deps: xmlsitemap)

</pre>
<p>Le site-upgrade me propose alors la liste des modules que je veux upgrader :</p>
<pre class="brush: bash; title: ; notranslate">

Please select a module to upgrade, or some other action below:
 [0] : Cancel
 [1] : xmlsitemap
 [2] : jquery_update
 [3] : jquery_plugin
 [4] : googleanalytics
 [5] : location
 [6] : gmap
 [7] : image_im_advanced
 [8] : devel
 [9] : date_api
 [10] : link
 [11] : content_permissions (now renamed to field_permissions)
 [12] : transliteration
 [13] : token
 [14] : mollom
 [15] : lightbox2
 [16] : imce
 [17] : globalredirect (now renamed to redirect)
 [18] : getid3
 [19] : backup_migrate
 [20] : advanced_help
 [21] : content (now renamed to cck) (Deps: field_ui)
 [22] : content_copy (now renamed to bundle_copy) (Deps: ctools)
 [23] : emfield (Deps: media,media_internet)
 [24] : fieldgroup (now renamed to field_group) (Deps: field,ctools)
 [25] : nodereference (now renamed to node_reference) (Deps: field,references,options)
 [26] : userreference (now renamed to user_reference) (Deps: field,references,options)
 [27] : image_attach (Deps: image)
 [28] : image_gallery (Deps: image,taxonomy)
 [29] : image_import (Deps: image)
 [30] : imagecache_canvasactions (Deps: imagecache_actions,image)
 [31] : imagecache_coloractions (Deps: imagecache_actions,image)
 [32] : imagecache_customactions (Deps: imagecache_actions,image)
 [33] : l10n_update (Deps: locale)
 [34] : views (Deps: ctools)
 [35] : views_export (now renamed to bulk_export) (Deps: ctools)
 [36] : Automatically enable and upgrade all modules remaining in list
 [37] : Show upgrade progress so far
 [38] : Finish upgrade, leaving remaining modules un-upgraded

</pre>
<p>Je ne vais pas faire les upgrades un module à la fois.</p>
<p><strong>Je choisi [36]</strong> (Automatically enable and upgrade all modules remaining in list).</p>
<pre class="brush: bash; title: ; notranslate">&lt;/pre&gt;
36

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 1

Upgrading module: xmlsitemap

&amp;nbsp;

1. Check your notes, and the UPGRADE.txt files inside each module, to see if any special upgrade instructions

apply

&amp;nbsp;

There is no UPGRADE.txt file in xmlsitemap

Drush will now do the step 'Begin upgrade of module xmlsitemap'.

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 2

Upgrading module: xmlsitemap

&amp;nbsp;

2. Fully remove the old module directory inside sites/all/modules/

&amp;nbsp;

Note that Drush builds the target site in a new directory; the modules directory therefore starts off empty, and

there is therefore no need to delete anything. If there is for some reason an old module directory in place,

Drush will automatically delete it when downloading the new module.

&amp;nbsp;

Skipping optional step.

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 3

Upgrading module: xmlsitemap

&amp;nbsp;

3. Download, unpack and move the new module directory to sites/all/modules/

&amp;nbsp;

Drush has a cached version of xmlsitemap at

/root/.drush/cache/@self-d6-to-d7new-d7/project_cache/disabled/xmlsitemap. The destination directory is

/home/dug/www/d7new.culbutte.be/sites/all/modules/xmlsitemap

&amp;nbsp;

Drush will automatically do this step now.

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 4

Upgrading module: xmlsitemap

&amp;nbsp;

4. Enable the module

&amp;nbsp;

Drush will automatically do this step now.

The following extensions will be enabled: xmlsitemap

Do you really want to continue? (y/n): y

xmlsitemap was enabled successfully. [ok]

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 5

Upgrading module: xmlsitemap

&amp;nbsp;

5. Run update.php again (you should have run it once already when upgrading core) and check for any message

output.

&amp;nbsp;

Drush will automatically do this step now.

The following updates are pending:

&amp;nbsp;

xmlsitemap_engines module :

6202 - Deprecate support for Ask.com, Moreover, and Yahoo! search engines.

&amp;nbsp;

xmlsitemap_node module :

6200 - Cleanup variables.

6201 - Empty update.

&amp;nbsp;

Do you wish to run all pending updates? (y/n): y

Performed update: xmlsitemap_node_update_6200 [ok]

Performed update: xmlsitemap_node_update_6201 [ok]

Performed update: xmlsitemap_engines_update_6202 [ok]

Finished performing updates. [ok]

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 6

Upgrading module: xmlsitemap

&amp;nbsp;

6. Back up your database and files again, between each module update, so that if there is a problem, you can

revert to the most recent update.

&amp;nbsp;

Drush will automatically do this step now.

Making backup: 'Upgraded Contrib Module xmlsitemap' in /root/.drush/cache/@self-d6-to-d7new-d7/progress_backups/upgraded-contrib.tar

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

UPGRADE.txt Major Upgrade Step 15

&amp;nbsp;

15. Replace and update your non-core modules and themes, following the procedures at

http://drupal.org/node/948216

&amp;nbsp;

Drush will walk through these instructions for each module. Note that all of the new modules will be downloaded

up-front now; they will be moved into place later.

No .info file could be found for eminline [warning]

No .info file could be found for token_actions [warning]

No .info file could be found for emaudio [warning]

No .info file could be found for emimage [warning]

No .info file could be found for emthumb [warning]

No .info file could be found for emvideo [warning]

No .info file could be found for emwave [warning]

No .info file could be found for calendar_ical [warning]

No .info file could be found for jcalendar [warning]

No .info file could be found for date_locale [warning]

No .info file could be found for date_php4 [warning]

No .info file could be found for image [warning]

No .info file could be found for imagecache_textactions [warning]

Note: in addition to the modules below, the following still need to be upgraded, but cannot be started until their dependencies below are upgraded: comment_notify (Deps: comment,token),pathauto (Deps: path,token),location_cck (Deps: location),calendar (Deps: views,date_api,date_views),date (Deps: date_api),date_popup (Deps: date_api),date_repeat (Deps: date_api),date_tools (Deps: date),gmap_location (Deps: gmap,location),gmap_macro_builder (Deps: gmap),gmap_taxonomy (Deps: taxonomy,gmap),location_addanother (Deps: location,location_node),location_fax (Deps: location),location_phone (Deps: location),location_search (Deps: search,location),location_node (Deps: location),location_user (Deps: location),views_ui (Deps: views)

Drush will now do the step 'jquery_update'.

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 1

Upgrading module: jquery_update

&amp;nbsp;

1. Check your notes, and the UPGRADE.txt files inside each module, to see if any special upgrade instructions

apply

&amp;nbsp;

There is no UPGRADE.txt file in jquery_update

Drush will now do the step 'Begin upgrade of module jquery_update'.

&amp;nbsp;

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 2

Upgrading module: jquery_update

&amp;nbsp;

2. Fully remove the old module directory inside sites/all/modules/

&amp;nbsp;

Note that Drush builds the target site in a new directory; the modules directory therefore starts off empty, and

there is therefore no need to delete anything. If there is for some reason an old module directory in place,

Drush will automatically delete it when downloading the new module.

&amp;nbsp;

Skipping optional step.

...  etc etc

</pre>
<p><strong>La liste des upgrades des modules continues, énormes&#8230; et tout se passe automatiquement !</strong></p>
<p>Cela se termine par :</p>
<pre class="brush: bash; title: ; notranslate">

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 15

15. Replace and update your non-core modules and themes, following the procedures at

http://drupal.org/node/948216

Drush will walk through these instructions for each module. Note that all of the new modules will be downloaded
up-front now; they will be moved into place later.
No .info file could be found for eminline                                                                  [warning]
No .info file could be found for token_actions                                                             [warning]
No .info file could be found for emaudio                                                                   [warning]
No .info file could be found for emimage                                                                   [warning]
No .info file could be found for emthumb                                                                   [warning]
No .info file could be found for emvideo                                                                   [warning]
No .info file could be found for emwave                                                                    [warning]
No .info file could be found for calendar_ical                                                             [warning]
No .info file could be found for jcalendar                                                                 [warning]
No .info file could be found for date_locale                                                               [warning]
No .info file could be found for date_php4                                                                 [warning]
No .info file could be found for imagecache_textactions                                                    [warning]
Drush will now do the step 'xmlsitemap_user (Deps: xmlsitemap)'.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 1
Upgrading module: xmlsitemap_user

1. Check your notes, and the UPGRADE.txt files inside each module, to see if any special upgrade instructions
apply

There is no UPGRADE.txt file in xmlsitemap_user
Drush will now do the step 'Begin upgrade of module xmlsitemap_user'.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 2
Upgrading module: xmlsitemap_user

2. Fully remove the old module directory inside sites/all/modules/

Note that Drush builds the target site in a new directory; the modules directory therefore starts off empty, and
there is therefore no need to delete anything. If there is for some reason an old module directory in place,
Drush will automatically delete it when downloading the new module.

Skipping optional step.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 3
Upgrading module: xmlsitemap_user

3. Download, unpack and move the new module directory to sites/all/modules/

Drush has a cached version of xmlsitemap at
/root/.drush/cache/@self-d6-to-d7new-d7/project_cache/disabled/xmlsitemap. The destination directory is
/home/dug/www/d7new.culbutte.be/sites/all/modules/xmlsitemap

The correct module already exists at the destination directory.

Drush will automatically do this step now.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 4
Upgrading module: xmlsitemap_user

4. Enable the module

Drush will automatically do this step now.
The following extensions will be enabled: xmlsitemap_user
Do you really want to continue? (y/n): y
xmlsitemap_user was enabled successfully.                                                                  [ok]

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 5
Upgrading module: xmlsitemap_user

5. Run update.php again (you should have run it once already when upgrading core) and check for any message
output.

Drush will automatically do this step now.
The following updates are pending:

Do you wish to run all pending updates? (y/n): y
Finished performing updates.                                                                               [ok]

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Upgrading Contrib Modules from Drupal 6 to Drupal 7 Step 6
Upgrading module: xmlsitemap_user

6. Back up your database and files again, between each module update, so that if there is a problem, you can
revert to the most recent update.

Drush will automatically do this step now.
Making backup: 'Upgraded Contrib Module xmlsitemap_user' in /root/.drush/cache/@self-d6-to-d7new-d7/progress_backups/upgraded-contrib.tar

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
UPGRADE.txt Major Upgrade Step 15

15. Replace and update your non-core modules and themes, following the procedures at

http://drupal.org/node/948216

Drush will walk through these instructions for each module. Note that all of the new modules will be downloaded
up-front now; they will be moved into place later.
No .info file could be found for eminline                                                                  [warning]
No .info file could be found for token_actions                                                             [warning]
No .info file could be found for emaudio                                                                   [warning]
No .info file could be found for emimage                                                                   [warning]
No .info file could be found for emthumb                                                                   [warning]
No .info file could be found for emvideo                                                                   [warning]
No .info file could be found for emwave                                                                    [warning]
No .info file could be found for calendar_ical                                                             [warning]
No .info file could be found for jcalendar                                                                 [warning]
No .info file could be found for date_locale                                                               [warning]
No .info file could be found for date_php4                                                                 [warning]
No .info file could be found for imagecache_textactions                                                    [warning]
Drush will now do the step 'All done; finish upgrade'.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Upgrading Contrib Modules from Drupal 6 to Drupal 7 Finish Up

If you have a Drupal 7 version of the theme you were using for Drupal 6, place it in sites/all/themes/ and
reenable it.

Drush cannot do this step; you must perform it manually.

What would you like to do?
[0]  :  Cancel
[1]  :  I will do this step manually.

1
</pre>
<p><strong>Le site-upgrade me demande si j&rsquo;ai une version 7 de mon thème.</strong></p>
<p>Non, je n&rsquo;en ai pas, et nous désirions de toute façon changer de thème, prendre un plus clair et &laquo;&nbsp;<em>responsive</em>&nbsp;&raquo; (càd qui va s&rsquo;adapter à tous les types de terminaux).</p>
<p>Je répond donc [1].</p>
<pre class="brush: bash; title: ; notranslate">
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Post-upgrade Step A

A. Copy files directory from the source site to the upgrade site.

What would you like to do?
[0]  :  Cancel
[1]  :  Do it for me.
[2]  :  I will do this step manually.

1
</pre>
<p>Là encore, je laisse faire le script d&rsquo;upgrade. <strong>Il va copier tout le dossier /sites avec tous les fichiers de mon site.</strong></p>
<pre class="brush: bash; title: ; notranslate">
Post-upgrade Step B

B. Enable the core module content_migrate.

What would you like to do?
[0]  :  Cancel
[1]  :  Enable content migrate and show available migrations.
[2]  :  Do not enable the content migrate module.

1

The following extensions will be enabled: content_migrate
Do you really want to continue? (y/n): y
content_migrate was enabled successfully.                                                                  [ok]
GMap is unable to save the marker bundle. Markers will not work!                                           [error]

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Post-upgrade Step B.2

B.2. Migrate fields.
Statut     Champ                    Type de champ  Content type(s)  Other information
Available  field_date               date           Date
Available  field_lien               link_field     Date
Available  field_event_dates        date           Event
Available  field_event_emplacement  location       Event            Missing formatter: The 'map' formatter used in 1
view modes for the field_event_emplacement field
is not available, these displays will be reset
to the default formatter.

What would you like to do?
[0]  :  Cancel
[1]  :  Run all available migrations.
[2]  :  Do not migrate fields.

1
</pre>
<p><strong>Bien logiquement, je laisse site-upgrade faite TOUTES les migrations.</strong></p>
<pre class="brush: bash; title: ; notranslate">
The following fields will be migrated: field_date, field_lien, field_event_dates, field_event_emplacement  [status]
Do you really want to continue? (y/n): y
Migrating structure for field_date                                                                         [status]
Created field field_date                                                                                   [warning]
Created instance of field_date in bundle Date.                                                             [warning]
Migrating structure for field_lien                                                                         [status]
Created field field_lien                                                                                   [warning]
Created instance of field_lien in bundle Date.                                                             [warning]
Migrating structure for field_event_dates                                                                  [status]
Created field field_event_dates                                                                            [warning]
Created instance of field_event_dates in bundle Event.                                                     [warning]
Migrating structure for field_event_emplacement                                                            [status]
Created field field_event_emplacement                                                                      [warning]
Missing formatter: The 'map' formatter used in 1 view modes for the field_event_emplacement field is not   [warning]
available, these displays will be reset to the default formatter.
Created instance of field_event_emplacement in bundle Event.                                               [warning]
Migrating data for field_date                                                                              [status]
Migrating data for field_lien                                                                              [status]
Migrating data for field_event_dates                                                                       [status]
Migrating data for field_event_emplacement                                                                 [status]
Migration complete
</pre>
<p><strong>Une dernière étape pour les permissions :</strong></p>
<pre class="brush: bash; title: ; notranslate">

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Post-upgrade Step C

C. Fix up some file system permissions.

Note: Drush site upgrade does not know what file system permissions it should use; it just makes %files and %temp
world-writable for development.

What would you like to do?
[0]  :  Cancel
[1]  :  Do it for me.
[2]  :  I will do this step manually.

1</pre>
<p><strong>et un cron pour terminer !</strong></p>
<pre class="brush: bash; title: ; notranslate">

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Post-upgrade Step D

D. Run cron, for good measure.

Drush will automatically do this step now.
WD cron: PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table                           [error]
'd7newdb.culbutte_xmlsitemap_sitemap' doesn't exist: SELECT smid FROM {xmlsitemap_sitemap}; Array
(
)
in xmlsitemap_regenerate_batch() (line 249 of
/home/dug/www/d7new.culbutte.be/sites/all/modules/xmlsitemap/xmlsitemap.generate.inc).
Cron run successful.                                                                                       [success]
GMap is unable to save the marker bundle. Markers will not work!                                           [error]
root@ks380111 KS5:/home/dug/www/d6.culbutte.be/sites/culbutte.be#

</pre>
<p>Il y a eu une erreur avec GMap. Cela ne me semble pas important pour les cartes déjà publiées (en général le lieu de réunions, expo&#8230;). Mais ce sera à vérifier avant la création de nouveaux nodes contenant une carte.</p>
<p><strong>Il est temps d&rsquo;essayer la nouvelle version Drupal 7 de notre site.</strong></p>
<p>Avec firefox, je vais sur son URL provisoire : la page d&rsquo;accueil semble identique au site en Drupal 6.</p>
<p>Je fais logon avec mon user admin habituel&#8230; et ça se passe mal !</p>
<p style="text-align: center;"><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7.png" rel="lightbox[4816]" class="thickbox no_icon" title="erreur &quot;sitmap&quot; après upgrade Drupal 7"><img class="aligncenter size-medium wp-image-4884" title="erreur &quot;sitmap&quot; après upgrade Drupal 7" alt="erreur &quot;sitmap&quot; après upgrade Drupal 7" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7-300x202.png" width="300" height="202" /></a></p>
<p>J&rsquo;essaye en ligne de commande de nettoyer le cache.</p>
<p>Attention, vous devez aller dans le nouveau dossier de votre site en Drupal 7 !</p>
<pre class="brush: bash; title: ; notranslate">

# cd /home/dug/www/d7new.culbutte.be/sites/culbutte.be/
# drush cache-clear
Enter a number to choose which cache to clear.
[0]   :  Cancel
[1]   :  all
[2]   :  drush
[3]   :  theme-registry
[4]   :  menu
[5]   :  css-js
[6]   :  block
[7]   :  module-list
[8]   :  theme-list
[9]   :  registry
[10]  :  views

1
'all' cache was cleared in /home/dug/www/d7new.culbutte.be#culbutte.be                                     [success]
GMap is unable to save the marker bundle. Markers will not work!                                           [error]
</pre>
<p>Je remarque qu&rsquo;il reste un message d&rsquo;erreur concernant Gmap&#8230; à vérifier !</p>
<p>Avec firefox, je reviens sur ma page d&rsquo;accueil. Je refais logon&#8230; ça ne fonctionne toujours pas.</p>
<p><strong>Le module concerné semble être &laquo;&nbsp;<em>xml sitemap</em>&laquo;&nbsp;.</strong></p>
<p>Je n&rsquo;ai pas trop envie de chercher car ce module n&rsquo;est pas fondamental.</p>
<p>Je peux le désactiver sans problème. Je le désinstallerai et je referai un install propre du module.</p>
<pre class="brush: bash; title: ; notranslate">

# drush dis xmlsitemap
The following extensions will be disabled: xmlsitemap, xmlsitemap_engines,
 xmlsitemap_node, xmlsitemap_taxonomy, xmlsitemap_user
Do you really want to continue? (y/n): y
xmlsitemap was disabled successfully.                               [ok]
xmlsitemap_node was disabled successfully.                          [ok]
xmlsitemap_taxonomy was disabled successfully.                      [ok]
xmlsitemap_user was disabled successfully.                          [ok]
xmlsitemap_engines was disabled successfully.                       [ok]
GMap is unable to save the marker bundle. Markers will not work!    [error]

</pre>
<p><strong>Ok, cette fois je peux faire logon au site en D7.</strong></p>
<p><span style="color: #ff0000;">Par contre, je n&rsquo;ai pas pu désinstaller le module &laquo;&nbsp;xml sitemap&nbsp;&raquo;, ni via l&rsquo;interface Drupal, ni avec Drush. J&rsquo;ai donc supprimé brutalement la table dans phpMyAdmin !  &lt;&#8212; <strong>IMPOSSIBLE de désinstaller XML Sitemap !</strong></span></p>
<p><strong>Mais il reste des erreurs !</strong></p>
<p>Si je vais sur le node &laquo;&nbsp;nos réunions&nbsp;&raquo; :</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_warning_image_gallery.png" rel="lightbox[4816]" class="thickbox no_icon" title="Warning: Missing argument 2 for theme_image_gallery()"><img class="aligncenter size-medium wp-image-4886" title="Warning: Missing argument 2 for theme_image_gallery()" alt="Warning: Missing argument 2 for theme_image_gallery()" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_warning_image_gallery-300x234.png" width="300" height="234" /></a><br />
Le message est :</p>
<pre class="brush: bash; title: ; notranslate">
&lt;em&gt;Warning&lt;/em&gt;: Missing argument 2 for theme_image_gallery(), called in /home/dug/www/d7new.culbutte.be/includes/theme.inc on line 1142 and defined in &lt;em&gt;theme_image_gallery()
&lt;/em&gt;(line &lt;em&gt;83&lt;/em&gt; of &lt;em&gt;/home/dug/www/d7new.culbutte.be/sites/all/modules/image/contrib/image_gallery/image_gallery.pages.inc&lt;/em&gt;).
</pre>
<p>Une recherche rapide sur Google avec ce message ne donne rien&#8230;</p>
<p><strong>Très gênant également, j&rsquo;ai des pages blanches quand j&rsquo;essaye d&rsquo;accéder à mes galeries photos et, dans administration, et dans  le  Tableau de bord d&rsquo;administration.</strong></p>
<p>Heureusement, il y a moyen d&rsquo;accéder aux sous-pages de l&rsquo;administration en connaissance le path exact (voir sur un site qui fonctionne).</p>
<p>Je vais basculer sur le thème Drupal 7 par défaut pour bien faire la différence entre l&rsquo;ancienne et la nouvelle version.<br />
<strong>Mais lors de l&rsquo;activation de Bartik, j&rsquo;ai encore un message d&rsquo;erreur :</strong></p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_changement_theme.png" rel="lightbox[4816]" class="thickbox no_icon" title="erreur lors du changement de thème"><img class="aligncenter size-medium wp-image-4888" title="erreur lors du changement de thème" alt="erreur lors du changement de thème" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_changement_theme-300x241.png" width="300" height="241" /></a><br />
Le message d&rsquo;erreur est :</p>
<pre class="brush: bash; title: ; notranslate">
&lt;em&gt;Notice&lt;/em&gt;: Use of undefined constant IMAGE_THUMBNAIL - assumed 'IMAGE_THUMBNAIL' in &lt;em&gt;image_attach_theme()
&lt;/em&gt; (line &lt;em&gt;544&lt;/em&gt; of &lt;em&gt;/home/dug/www/d7new.culbutte.be/sites/all/modules/image/contrib/image_attach/image_attach.module&lt;/em&gt;).
</pre>
<p>Je remet l&rsquo;ancien thème Garland, puis je rebascule sur Bartik : plus d&rsquo;erreur ! ouf&#8230;</p>
<p><strong>Ne soyons pas négatif&#8230; Il y a progrès pour certains nodes images !</strong><br />
Ma page avec les photos d&rsquo;accès au local s&rsquo;affiche maintenant correctement en D7, sans aucun message d&rsquo;erreur.</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_ccm_photo.png" rel="lightbox[4816]" class="thickbox no_icon" title="Plus d'erreur dans l'affichage de ce node &quot;photo&quot;"><img class="aligncenter size-medium wp-image-4889" title="Plus d'erreur dans l'affichage de ce node &quot;photo&quot;" alt="Plus d'erreur dans l'affichage de ce node &quot;photo&quot;" src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_ccm_photo-207x300.png" width="207" height="300" /></a></p>
<p>Par contre, les autres images ne s&rsquo;affichent toujours pas !<br />
J&rsquo;ai un début de page, avec le titre, mais rien en dessous. Idem quand j&rsquo;essaye de les modifier : l&rsquo;éditeur n&rsquo;apparaît pas&#8230;</p>
<p><strong>Autre message d&rsquo;erreur quand je vais dans la page Modules :</strong></p>
<pre class="brush: bash; title: ; notranslate">

&lt;em&gt;Notice&lt;/em&gt;: Undefined index: distribution_name in &lt;em&gt;drupal_install_profile_distribution_name()&lt;/em&gt;

 (line &lt;em&gt;207&lt;/em&gt; of &lt;em&gt;/home/dug/www/d7new.culbutte.be/includes/install.inc&lt;/em&gt;).

</pre>
<p>Ce message revient à chaque fois.</p>
<p>Ok ! Là, je ne suis pas le seul ! <a  title="After upgrading to D7.2, I get Notice: Undefined index: distribution_name in drupal_install_profile_distribution_name() " href="http://drupal.org/node/1170360">Le bug est connu, et solutionné.</a></p>
<p><strong>C&rsquo;est une histoire de profile. Je vais activer le profile standard :</strong></p>
<pre class="brush: bash; title: ; notranslate">

# drush pm-enable standard
The following extensions will be enabled: standard, rdf, overlay, toolbar, shortcut, dblog, menu, help, dashboard, contextual, color
Do you really want to continue? (y/n): y
WD php: PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Filtered HTML'[error]
for key 'name': INSERT INTO {filter_format} (format, name, cache, status, weight) VALUES
(:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3,
:db_insert_placeholder_4); Array
(
[:db_insert_placeholder_0] =&gt; filtered_html
[:db_insert_placeholder_1] =&gt; Filtered HTML
[:db_insert_placeholder_2] =&gt; 1
[:db_insert_placeholder_3] =&gt; 1
[:db_insert_placeholder_4] =&gt; 0
)
in filter_format_save() (line 210 of /home/dug/www/d7new.culbutte.be/modules/filter/filter.module).
Cannot modify header information - headers already sent by (output started at                              [warning]
/root/drush/includes/output.inc:37) bootstrap.inc:1212
PDOException : SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry &amp;#039;Filtered HTML&amp;#039; for key &amp;#039;name&amp;#039;: INSERT INTO {filter_format} (format, name, cache, status, weight) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4); Array
(
[:db_insert_placeholder_0] =&gt; filtered_html
[:db_insert_placeholder_1] =&gt; Filtered HTML
[:db_insert_placeholder_2] =&gt; 1
[:db_insert_placeholder_3] =&gt; 1
[:db_insert_placeholder_4] =&gt; 0
)
dans filter_format_save() (ligne 210 dans /home/dug/www/d7new.culbutte.be/modules/filter/filter.module).
Drush command terminated abnormally due to an unrecoverable error.                                         [error]

</pre>
<p>Ça se termine par une erreur, liée visiblement à un profile Wysiwyg &laquo;&nbsp;filtered HTML&nbsp;&raquo;.  Encore un truc à vérifier !</p>
<p><strong>Mais ça a résolu mon problème de page Modules !</strong></p>
<p>Je n&rsquo;ai plus d&rsquo;erreur. J&rsquo;ai des modules supplémentaires activés (qui sont de toutes façons souvent nécessaire)&#8230; et j&rsquo;ai le thème Garland en overlay pour l&rsquo;admin&#8230;  Ben ça ! &#8230;</p>
<p>Ok, dans Apparence, je mets &laquo;&nbsp;<em>Seven</em>&nbsp;&raquo; comme thème d&rsquo;administration.</p>
<p><a  title="You need to edit the database" href="http://adaptivethemes.com/documentation/distribution-name-notice">Une autre solution</a> pour ce message &laquo;&nbsp;<em>Undefined index: distribution_name</em>&nbsp;&raquo; demandait de modifier une variable dans la base de donnée.</p>
<p>Comme cette solution est simple, je vais l&rsquo;appliquer en phpMyAdmin.</p>
<p>Voici le code MySQL :</p>
<pre class="brush: bash; title: ; notranslate">&lt;code&gt;UPDATE `my_database_name`.`system` SET `status` = '1',
`info` = '' WHERE `system`.`filename` = 'profiles/demo_profile/demo_profile.profile';&lt;/code&gt;</pre>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_phpmyadmin_system.png" rel="lightbox[4816]" class="thickbox no_icon" title="Une variable à changer dans la DB... mais ça ne fonctionne pas..."><img class="aligncenter size-medium wp-image-4892" alt="Une variable à changer dans la DB... mais ça ne fonctionne pas..." src="http://didier.misson.net/blog/wp-content/uploads/2013/01/site_culbutte_apres_upgrade_drupal7_phpmyadmin_system-300x120.png" width="300" height="120" /></a></p>
<p>Mais cela ne fonctionne pas !  La table &laquo;&nbsp;<em>system</em>&nbsp;&raquo; ne contient pas de record avec ce filename&#8230;</p>
<p>J&rsquo;ai vérifié dans un site Drupal 7 : ce record n&rsquo;existe pas dans la table system&#8230; Donc je ne suis pas cette méthode.</p>
<p><strong>Revenons sur le message &laquo;&nbsp;GMap is unable to save the marker bundle. Markers will not work!&nbsp;&raquo;</strong></p>
<p>Ce n&rsquo;est pas un problème de définition du file system (fichiers temporaires), mais un <a  title="Error Message With location map block in GMAP Module" href="http://drupal.org/node/1073714">problème de permission sur le dossier</a> ../sites/default/js (dans mon cas sur ../sites/culbutte.be/js.</p>
<p>Pour le corriger, je dois donner la permission au serveur Apache2 sur le fichier ../js/gmap_markers.js :</p>
<pre class="brush: bash; title: ; notranslate"># cd /home/dug/www/d7new.culbutte.be/sites/culbutte.be/files/js/
# chown www-data:www-data gmap_markers.js</pre>
<p><strong><span style="color: #ff0000;">Voilà, Gmap ne devrait plus donner de messages d&rsquo;erreur. &lt;&#8212; NON, toujours des erreurs !!!</span></strong></p>
<h2>Documentation :</h2>
<ul>
<li><a  title="Complete the following steps to prepare your site for upgrading" href="http://drupal.org/upgrade/preparing-the-site">Preparing the site</a> (<a  href="http://drupal.org">drupal.org</a>)</li>
<li><a  href="http://drupal.org/documentation/upgrade/6/7">Upgrading from Drupal 6 to 7</a></li>
<li><a  title="This is a list of things you need to do BEFORE you upgrade" href="http://drupal.org/node/550130">Make an upgrade plan</a></li>
<li><a  href="http://drupal.org/node/895314">Drupal 6 contributed modules that are in Drupal 7 core</a></li>
<li><a  href="http://drupal.org/node/1144136">Migrating D6 Content Construction Kit (CCK) to D7 Fields</a></li>
<li><a  href="http://drupal.org/node/550152">Current Site Preparation</a></li>
<li><a  href="http://drupal.org/node/570162">Upgrade process</a></li>
<li><a  title="Correction du problème de migration de node image de Drupal 6 vers Drupal 7" href="http://drupal.org/node/757808">Image module migration</a></li>
<li><a  title="A suite of modules containing fun for module developers and themers ..." href="http://drupal.org/project/devel">module Devel</a></li>
<li><strong><a  href="http://www.acquia.com/blog/use-drush-upgrade-drupal-6-drupal-7">Use Drush to Upgrade from Drupal 6 to Drupal 7</a></strong> (par <a  title=" Director, Research and Development, Acquia, Inc" href="http://www.acquia.com/about-us/team/moshe-weitzman">Moshe Weitzman</a>, d&rsquo; <a  title="Acquia is a commercial open-source software company providing products, services, and technical support for Drupal" href="http://www.acquia.com">Acquia</a>)</li>
<li><a  title="Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife" href="http://drupal.org/project/drush">Drush</a> sur drupal.org</li>
<li><a  title="A command line shell  and scripting interface for Drupal" href="http://www.drush.org/">Drush.org</a></li>
<li><a  title=" A command line shell and scripting interface for Drupal" href="http://www.drush.org/resources">Drush resources</a></li>
<li><a  title="site-upgrade drush command, which streamlines the major version upgrade process for Drupa" href="http://drupal.org/project/drush_sup">Drush Site Upgrade</a></li>
<li><a  href="http://www.drush.org/#site-alias">Drush site-alias</a></li>
<li><a  href="http://eporama.com/ramblings/drush-aliases">Drush alias</a></li>
<li>After upgrading to D7.2, I get Notice: <a  href="http://drupal.org/node/1170360">Undefined index: distribution_name in drupal_install_profile_distribution_name()</a></li>
<li><a  title="permission sur le dossier ../sites/default/js" href="http://drupal.org/node/1073714">Error Message With location map block in GMAP Module</a></li>
</ul>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-4816-bottom'></div><script language='javascript'>var conf_4816 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image4816 = {src:'http://didier.misson.net/blog/wp-content/uploads/2013/01/drupal_logo-blue_rgb_320x82.png',href:'http://didier.misson.net/blog/2013/01/14/upgrade-site-drupal-6-en-drupal-7-avec-drush.html',type:'image'};
						var ua_4816 = new gigya.services.socialize.UserAction(); 
						ua_4816.setUserMessage('');  
						ua_4816.setLinkBack('http://didier.misson.net/blog/2013/01/14/upgrade-site-drupal-6-en-drupal-7-avec-drush.html'); 
						ua_4816.setTitle('upgradez votre site Drupal 6 en Drupal 7 avec drush site-upgrade');
						ua_4816.addMediaItem(image4816);	
		

						var params_4816 ={ 
							userAction:ua_4816,
							cssPrefix:'#gig-div-buttons-4816-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-4816-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_4816,params_4816);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2013/01/14/upgrade-site-drupal-6-en-drupal-7-avec-drush.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu 12.10 server OVH &#8211; smartmontools ne démarre pas &#8211; RAID software</title>
		<link>http://didier.misson.net/blog/2012/11/11/ubuntu-12-10-server-ovh-smartmontools-ne-demarre-pas-raid-software.html</link>
		<comments>http://didier.misson.net/blog/2012/11/11/ubuntu-12-10-server-ovh-smartmontools-ne-demarre-pas-raid-software.html#comments</comments>
		<pubDate>Sun, 11 Nov 2012 13:45:19 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveurs]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=4788</guid>
		<description><![CDATA[J&#8217;ai repris un serveur OVH Kimsufi en Ubuntu 12.10. Ubuntu 12.10 est encore en beta chez OVH. Je fais l&#8217;installation des utilitaires dont j&#8217;ai l&#8217;habitude. J&#8217;utilise Smartmontools pour pouvoir vérifier l&#8217;état des disques durs, recevoir des messages dans les logs quand un disque dur commence à avoir des problèmes. L&#8217;installation se passe classiquement en Ubuntu [...]]]></description>
				<content:encoded><![CDATA[<p>J&rsquo;ai repris un <strong>serveur OVH Kimsufi en Ubuntu 12.10</strong>. Ubuntu 12.10 est encore en beta chez OVH.</p>
<p>Je fais l&rsquo;installation des utilitaires dont j&rsquo;ai l&rsquo;habitude.</p>
<p>J&rsquo;utilise <strong>Smartmontools</strong> pour pouvoir vérifier l&rsquo;état des disques durs, recevoir des messages dans les logs quand un disque dur commence à avoir des problèmes.</p>
<p><strong>L&rsquo;installation se passe classiquement en Ubuntu :</strong></p>
<pre class="brush: bash; title: ; notranslate"># aptitude install smatmontools</pre>
<p>Éditer la configuration pour activer Smartmontools au démarrage.</p>
<pre class="brush: bash; title: ; notranslate"># vi /etc/default/smartmontools</pre>
<p>Mettre :</p>
<pre class="brush: bash; title: ; notranslate"># uncomment to start smartd on system startup
start_smartd=yes</pre>
<p>Jusque là, tout est normal. <span style="color: #ff0000;"><strong>Mais le démarrage ne se passe pas comme prévu.</strong></span></p>
<pre class="brush: bash; title: ; notranslate"># service smartmontools start
* Starting S.M.A.R.T. daemon smartd                          [fail]</pre>
<p><span id="more-4788"></span>Effectivement, aucun daemon &laquo;&nbsp;smartd&nbsp;&raquo; ou &laquo;&nbsp;smartmontools&nbsp;&raquo; ne tourne !</p>
<pre class="brush: plain; title: ; notranslate">ps -A|grep smart</pre>
<p>ne trouve rien&#8230;</p>
<p><strong>Pourquoi ce &laquo;&nbsp;fail&nbsp;&raquo; ?</strong></p>
<p>J&rsquo;ai toujours installé cela comme ça, et ça fonctionnait.</p>
<p>Je cherche dans les logs systèmes :</p>
<pre class="brush: bash; title: ; notranslate"># less /var/log/syslog
...
smartd[14230]: smartd 5.43 2012-06-30 r3573 [x86_64-linux-3.2.13-grsec-xxxx-grs-ipv6-64] (local build)
smartd[14230]: Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
smartd[14230]: Opened configuration file /etc/smartd.conf
smartd[14230]: Drive: DEVICESCAN, implied '-a' Directive on line 21 of file /etc/smartd.conf
smartd[14230]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices
smartd[14230]: Problem creating device name scan list
smartd[14230]: In the system's table of devices NO devices found to scan
smartd[14230]: Unable to monitor any SMART enabled devices. Try debug (-d) option. Exiting...</pre>
<p>Je remarque le message : &laquo;&nbsp;<span style="color: #ff0000;"><strong>Drive: DEVICESCAN, implied &lsquo;-a&rsquo; Directive on line 21 of file /etc/smartd.conf</strong></span>&nbsp;&raquo;</p>
<p>Comme conseillé, j&rsquo;essaye un debug (-d) :</p>
<pre class="brush: plain; title: ; notranslate">smartd -d
smartd 5.43 2012-06-30 r3573 [x86_64-linux-3.2.13-grsec-xxxx-grs-ipv6-64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

Opened configuration file /etc/smartd.conf
Drive: DEVICESCAN, implied '-a' Directive on line 21 of file /etc/smartd.conf
Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices
glob(3) found no matches for pattern /dev/hd[a-t]
glob(3) found no matches for pattern /dev/sd[a-z]
glob(3) found no matches for pattern /dev/sd[a-c][a-z]
Problem creating device name scan list
In the system's table of devices NO devices found to scan
Unable to monitor any SMART enabled devices. Try debug (-d) option. Exiting...</pre>
<p><span style="color: #ff0000;"><strong>Pas de disque dur trouvé ?</strong></span></p>
<p>Je vérifie :</p>
<pre class="brush: plain; title: ; notranslate">
df -h
Sys. fich.     Taille Util. Dispo Uti% Monté sur
rootfs            20G  1,1G   18G   6% /
/dev/root         20G  1,1G   18G   6% /
none             789M  264K  788M   1% /run
none             5,0M     0  5,0M   0% /run/lock
none             3,9G     0  3,9G   0% /run/shm
none             100M     0  100M   0% /run/user
/dev/md2         911G  7,0G  859G   1% /home
</pre>
<p><strong>Effectivement, je n&rsquo;ai que des disques durs en RAID software, montés directement au boot, pas de disques physiques.<br />
</strong></p>
<p>Les 2 partitions sont <strong>/dev/md1</strong> et <strong>/dev/md2</strong>.</p>
<p>C&rsquo;est une configuration OVH, et je ne pense pas avoir accès aux disques durs physiques.</p>
<p>Quand j&rsquo;essaye fdisk -l  ou cfdisk , ces 2 disques durs n&rsquo;ont pas de table de partition valide.</p>
<pre class="brush: plain; title: ; notranslate">fdisk -l

Disk /dev/md1: 21.5 GB, 21474770944 bytes
2 têtes, 4 secteurs/piste, 5242864 cylindres, total 41942912 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Identifiant de disque : 0x00000000

Le disque /dev/md1 ne contient pas une table de partitions valable</pre>
<p>fdisk ne voit que les disques RAID software (md1 et md2), mais aucun disques physiques SATA.</p>
<p><span style="color: #ff0000;"><strong>Vu la configuration fournie par OVH, Ubuntu ne voit que les disques RAID software, pas les disques physiques (pas de /dev/sda &#8230;).</strong></span></p>
<p>Smartmontools ne semble pas adapté à la surveillance des disques durs dans ce cas.</p>
<p><strong>Pour des disques en RAID software, il faut passer par des utilitaires comme &laquo;&nbsp;mdstat&nbsp;&raquo;/</strong></p>
<p>Je peux accéder à mdstat :</p>
<pre class="brush: plain; title: ; notranslate">less /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md1 : active raid1 sdb1[1] sda1[0]
20971456 blocks [2/2] [UU]

md2 : active raid1 sdb2[1] sda2[0]
955260864 blocks [2/2] [UU]

unused devices: &lt;none&gt;</pre>
<p>Cela va probablement me donner les erreurs sur les disques durs physiques, mais seulement si je vais voir ce fichier !</p>
<p><span style="color: #ff0000;"><strong>Il faut chercher une solution de monitoring ou alerting sur le RAID software lui-même (mdstat, etc).</strong></span><br />
Cela fera l&rsquo;objet d&rsquo;un prochain article&#8230;</p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-4788-bottom'></div><script language='javascript'>var conf_4788 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image4788 = {src:'http://didier.misson.net/blog/wp-includes/images/blank.gif',href:'http://didier.misson.net/blog/2012/11/11/ubuntu-12-10-server-ovh-smartmontools-ne-demarre-pas-raid-software.html',type:'image'};
						var ua_4788 = new gigya.services.socialize.UserAction(); 
						ua_4788.setUserMessage('');  
						ua_4788.setLinkBack('http://didier.misson.net/blog/2012/11/11/ubuntu-12-10-server-ovh-smartmontools-ne-demarre-pas-raid-software.html'); 
						ua_4788.setTitle('Ubuntu 12.10 server OVH - smartmontools ne démarre pas - RAID software');
						ua_4788.addMediaItem(image4788);	
		

						var params_4788 ={ 
							userAction:ua_4788,
							cssPrefix:'#gig-div-buttons-4788-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-4788-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_4788,params_4788);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2012/11/11/ubuntu-12-10-server-ovh-smartmontools-ne-demarre-pas-raid-software.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 11.10 : fork: Cannot allocate memory (bug PHP5 / psmisc)</title>
		<link>http://didier.misson.net/blog/2012/03/19/ubuntu-11-10-fork-cannot-allocate-memory-bug-php5-psmisc.html</link>
		<comments>http://didier.misson.net/blog/2012/03/19/ubuntu-11-10-fork-cannot-allocate-memory-bug-php5-psmisc.html#comments</comments>
		<pubDate>Mon, 19 Mar 2012 01:48:19 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[serveurs dédiés]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=4762</guid>
		<description><![CDATA[J&#8217;ai un serveur dédié Kimsufi OVH avec une Ubuntu Server 11.10 en 64 bits. Principalement des petits sites en Drupal et WordPress, mais aucun site à fort trafic. J&#8217;ai quelques problèmes réguliers. Mes graphiques de stat Munin sont &#171;&#160;hachés&#160;&#187;, càd que, parfois, le plugin de stat Munin n&#8217;arrive pas à faire son calcul de statistique. [...]]]></description>
				<content:encoded><![CDATA[<p>J&rsquo;ai un serveur dédié Kimsufi OVH avec une Ubuntu Server 11.10 en 64 bits.<br />
Principalement des petits sites en Drupal et WordPress, mais aucun site à fort trafic.</p>
<p>J&rsquo;ai quelques problèmes réguliers.<br />
<strong>Mes graphiques de stat Munin sont &laquo;&nbsp;hachés&nbsp;&raquo;, càd que, parfois, le plugin de stat Munin n&rsquo;arrive pas à faire son calcul de statistique.</strong></p>
<p><img class="aligncenter size-full wp-image-4764" title="Mes graphes Munin sont hachés : Munin n'a pas réussi à exécuter son plugin de mesure..." src="http://didier.misson.net/blog/wp-content/uploads/2012/03/Munin_cpu-day.png" alt="" width="497" height="364" /></p>
<p>J&rsquo;ai cherché, et surprise, parfois le serveur a des <strong>problèmes d&rsquo;allocation mémoire !</strong> <img src="http://forum.ubuntu-fr.org/img/smilies/neutral.png" alt="neutral" width="15" height="15" /></p>
<p>J&rsquo;ai ces problèmes sur certaines commandes, même parfois sur un &laquo;&nbsp;bête&nbsp;&raquo; &laquo;&nbsp;rm&nbsp;&raquo;<br />
ou dans des scripts de mises à jour, j&rsquo;obtiens :</p>
<pre><strong>sh: fork: Cannot allocate memory</strong></pre>
<p>Quand je relance la commande, elle passe (ce n&rsquo;est pas à chaque fois).</p>
<p><span id="more-4762"></span></p>
<p><strong>Je vois aussi des erreurs dans les logs :</strong></p>
<p><strong>syslog :</strong></p>
<pre>Mar  4 04:11:11 ks380111 <strong>postfix</strong>/master[4654]: warning: <strong>master_spawn: fork: Cannot allocate memory -- throttling</strong>
idem dans les logs <strong>Apache</strong> :
[Sun Mar 04 10:39:13 2012] [error] (12)<strong>Cannot allocate memory: fork: Unable to fork new process</strong></pre>
<p>et effectivement, je trouve un mail dans /var/mail/root : Munin a ce problème de temps en temps</p>
<pre><strong>fork failed: Cannot allocate memory</strong> at /usr/share/perl5/Munin/Master/GraphOld.pm line 614.
<strong>/usr/bin/munin-cron: fork: Cannot allocate memory</strong></pre>
<p>Ce n&rsquo;est donc pas propre à un programme précis.</p>
<p>Vous allez me dire : &laquo;&nbsp;<em>Simple : pas assez de mémoire</em>&nbsp;&raquo; &#8230;.</p>
<p>euh, oui&#8230;</p>
<p>Mais <strong>j&rsquo;avais un serveur Kimsufi (gamme 2009) avec 4GB, et pas de problèmes&#8230;</strong></p>
<p>Je suis passé sur un serveur <strong>Kimsufi (gamme 2011) avec 24 GB de mémoire et Core i7</strong><br />
et je n&rsquo;ai pas assez de mémoire ? <img src="http://forum.ubuntu-fr.org/img/smilies/roll.png" alt="roll" width="15" height="15" /><br />
(j&rsquo;ai réinstallé une version Ubuntu Server plus récente)</p>
<p><em>&#8230; franchement, c&rsquo;est déroutant !</em></p>
<p><strong>Donc, ok, c&rsquo;est un problème de mémoire, mais POURQUOI ? avec 24 GB ?</strong><br />
(et Munin me dit qu&rsquo;il reste toujours minimum 6 ou 700 MB de libre)</p>
<p><img class="aligncenter size-full wp-image-4765" title="La mémoire ne semble pas être saturée. Munin semble dire qu'il reste toujours de la mémoire" src="http://didier.misson.net/blog/wp-content/uploads/2012/03/Munin_memory-day.png" alt="" width="497" height="424" /></p>
<p>Le cpu est sous-utilisé (j&rsquo;arrive entre 100 et 200% sur un Core i7, Quad core et Hyper-threading&#8230;)<br />
Le nombre de process Apache reste très faible (5 à 10)</p>
<pre># <strong>free -m</strong>
             total       used       free     shared    buffers     cached
<strong>Mem:         24149      23440        708          0        820      19389</strong>
-/+ buffers/cache:       3230      20918
Swap:        12597          0      12597</pre>
<p>Précision : <em>je n&rsquo;utilise pas de machine virtuelle</em>.<br />
C&rsquo;est uniquement une Ubuntu Server 11.10 classique, en mémoire réelle.</p>
<p><strong>Comprend pas <img src="http://forum.ubuntu-fr.org/img/smilies/yikes.png" alt="yikes" width="15" height="15" /><br />
On a un serveur de course, et on tombe à cours de mémoire !</strong> <img src="http://forum.ubuntu-fr.org/img/smilies/mad.png" alt="mad" width="15" height="15" /></p>
<p>&#8230;</p>
<p>J&rsquo;analyse ça en détail et je fais quelques recherches sur le Net.</p>
<p><strong>Je regarde les logs, et comme le manque de mémoire donne des problèmes lors de la création de &laquo;&nbsp;fork&nbsp;&raquo;, je fais une recherche sur &laquo;&nbsp;fork&nbsp;&raquo;.</strong></p>
<p>Surprise, je trouve maintenant d&rsquo;autres messages parlant de &laquo;&nbsp;/bin/fuser&nbsp;&raquo; :</p>
<p><em>Mar 18 07:10:13 ks380111 kernel: grsec: <strong>failed fork with errno ENOMEM by /bin/fuser</strong>[fuser:3066] uid/euid:0/0 gid/egid:0/0, parent /usr/bin/find[find:7800] uid/euid:0/0 gid/egid:0/0 Mar 18 07:10:13 ks380111 kernel:<br />
last message repeated 4 times<br />
Mar 18 07:10:13 ks380111 kernel: grsec: more alerts, logging disabled for 10 seconds<br />
Mar 18 07:10:26 ks380111 kernel: grsec: <strong>failed fork with errno ENOMEM by /bin/fuser</strong>[fuser:3066] uid/euid:0/0 gid/egid:0/0, parent /usr/bin/find[find:7800] uid/euid:0/0 gid/egid:0/0 Mar 18 07:10:26 ks380111 kernel:<br />
last message repeated 4 times</em></p>
<p><strong>Il y a énormément de messages d&rsquo;erreur avec &laquo;&nbsp;fuser&nbsp;&raquo;.</strong></p>
<p>Je fais une recherche sur ce message d&rsquo;erreur.<br />
Je trouve plusieurs références, d&rsquo;abord sur <a  title="The Ubuntu Forum Community" href="http://ubuntuforums.org">ubuntuforums.org</a> mais aussi sur le <a  href="https://bugs.launchpad.net/ubuntu">launchpad Ubuntu</a> et même sur <strong>Debian</strong> !</p>
<p><strong>Voici les liens intéressants :</strong></p>
<ul>
<li><a  href="http://ubuntuforums.org/showthread.php?p=11456671">Fuser high CPU usage</a> (ubuntuforums.org)</li>
<li><a  href="http://ubuntuforums.org/showthread.php?t=1862472">fuser forking uncontrollably in cron job </a>(ubuntuforums.org)</li>
<li><a  href="https://bugs.launchpad.net/ubuntu/+source/php5/+bug/876387">fuser forking uncontrollably in cron job</a> (launchpad)</li>
<li><a  href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=633100">Debian Bug report logs &#8211; #633100</a> : php5-common: /etc/cron.d/php5 script runs find with fuser process which spawns too much process eats up the system</li>
</ul>
<p><strong>Le bug est connu. Il est apparu dans Ubuntu 11.10 et est présent dans Debian également.</strong></p>
<p>Une tâche Cron exécutée toutes les 30 minutes, utilise &laquo;&nbsp;fuser&nbsp;&raquo;. Une modification introduite avec Ubuntu 11.10 fait que Fuser crée des tâches qui restent &laquo;&nbsp;zombies&nbsp;&raquo;, et de ce fait, prennent très rapidement toutes les ressources du serveur.</p>
<p>J&rsquo;essaye de vérifier cela sur mon serveur. Et j&rsquo;arrive finalement à trouver des milliers de tâches &laquo;&nbsp;fuser&nbsp;&raquo;.</p>
<p><em>root@ks123456:/etc/cron.d# ps -C fuser | wc -l</em></p>
<p><em>29329</em></p>
<p><strong>hum&#8230; presque 30.000 jobs &laquo;&nbsp;fuser&nbsp;&raquo; !!!</strong></p>
<p>Je comprend que ça bouffe la mémoire et qu&rsquo;on peut avoir plein de tâches qui ne peuvent plus obtenir de la mémoire.</p>
<p>Cela ne dure pas, probablement quelques dizaines de secondes, mais les tâches (ou vos visiteurs) qui doivent démarrer à ce moment n&rsquo;obtiennent évidemment pas la mémoire voulue, et on obtient des erreurs &laquo;&nbsp;fork: Cannot allocate memory&nbsp;&raquo; !</p>
<p><strong>Cette tâche cron se trouve dans /etc/cron.d/php5 .</strong></p>
<p>Comment corriger ce problème ?</p>
<p><strong>Il y a 2 solutions :</strong></p>
<ul>
<li>soit remettre dans /etc/cron.d/php5  la ligne de commande qui existait jusqu&rsquo;en Ubuntu 11.04</li>
<li>soit corriger le bug qui se trouve en fait dans &laquo;&nbsp;psmisc&nbsp;&raquo;</li>
</ul>
<p><strong>Si vous choisissez de modifier le cron,suivez la solution de <a  href="https://launchpad.net/~graham-poulter">Graham Poulter</a> en remplaçant la ligne de commande dans /etc/cron.d/php5 :</strong></p>
<p><em>&laquo;&nbsp;My workaround is to restore the php5 cron job from 11.04, which does not call fuser:</em></p>
<p><strong><em>This is the 11.10 cron job:</em></strong></p>
<p><em>09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] &amp;&amp; [ -d /var/lib/php5 ] &amp;&amp; find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime)<span style="color: #ff0000;"><strong> ! -execdir fuser -s {} 2&gt;/dev/null \; -delete</strong></span></em></p>
<p><strong><em>And this is the 11.04 cron job:</em></strong></p>
<p><em>09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] &amp;&amp; [ -d /var/lib/php5 ] &amp;&amp; find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) <span style="color: #ff0000;"><strong>-delete</strong></span></em></p>
<p><em>We think fuser was added to cater for some edge case of process not closing the session file, but was never tested with a large number of sessions.&nbsp;&raquo;</em></p>
<p><strong>Il vous suffit de remettre la ligne de commande qui existait en Ubuntu 11.04.</strong></p>
<p>Je n&rsquo;ai pas testé cette solution, mais plusieurs personnes confirment que cela résout effectivement le problème.</p>
<p><strong>La 2ème solution est de corriger &laquo;&nbsp;psmisc&nbsp;&raquo;.</strong></p>
<p>Plutôt que de modifier le code, j&rsquo;ai préféré mettre à jour le système et passer à une version plus récente de PHP5.</p>
<p><strong>Dans Ubuntu 11.10, on a PHP5 version5.3.6 et psmisc version 22.14 :</strong></p>
<p><em>root@ks123456:/etc/cron.d# <strong>apt-cache policy psmisc</strong></em><br />
<em>psmisc:</em><br />
<em>  Installed: 22.14-1</em><br />
<em>  Candidate: 22.14-1</em><br />
<em>  Version table:</em><br />
<em> *** 22.14-1 0</em></p>
<p><strong>Pour upgrader PHP5 et psmisc, on peut utiliser le dépôt <a  title="PPA for PHP5 (Ondřej Surý)" href="https://launchpad.net/~ondrej/+archive/php5">ppa:ondrej/php5</a> d&rsquo; Ondřej Surý.</strong></p>
<p>Attention, vous allez installer une version non officiellement supportée et suivie en Ubuntu 11.10 &#8230;</p>
<p>Il suffit d&rsquo;ajouter ce dépôt avec la commande :</p>
<p><em>sudo add-apt-repository ppa:ondrej/php5</em></p>
<p>mais je remarque que sur mon serveur, cette commande n&rsquo;est pas acceptée.</p>
<p><strong>Vous pouvez alors ajouter manuellement le dépôt dans /etc/apt/sources.list.</strong></p>
<p>Ajouter ces 2 lignes en fin de votre /etc/apt/sources.list :</p>
<p><em>deb <a  href="http://ppa.launchpad.net/ondrej/php5/ubuntu">http://ppa.launchpad.net/ondrej/php5/ubuntu</a> oneiric main deb-src <a  href="http://ppa.launchpad.net/ondrej/php5/ubuntu">http://ppa.launchpad.net/ondrej/php5/ubuntu</a> oneiric main </em><br />
Sauvez, mais avant de faire la mise à jour, il vous fait ajouter la clé permettant d&rsquo;authentifier le dépôt.</p>
<p><code></code><em># <strong>sudo apt-key adv &#8211;keyserver keyserver.ubuntu.com &#8211;recv-keys E5267A6C</strong></em><br />
<em>Executing: gpg &#8211;ignore-time-conflict &#8211;no-options &#8211;no-default-keyring &#8211;secret-keyring /tmp/tmp.WqqyD1UE94 &#8211;trustdb-name /etc/apt/trustdb.gpg &#8211;keyring /etc/apt/trusted.gpg &#8211;primary-keyring /etc/apt/trusted.gpg &#8211;keyserver keyserver.ubuntu.com &#8211;recv-keys E5267A6C</em><br />
<em>gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com</em><br />
<em>gpg: key E5267A6C: public key &laquo;&nbsp;Launchpad PPA for Ondřej Surý&nbsp;&raquo; imported</em><br />
<em>gpg: Total number processed: 1</em><br />
<em>gpg:               imported: 1  (RSA: 1)</em></p>
<p>Faites maintenant la mise à jour :</p>
<p><em># <strong>aptitude update</strong></em><br />
<em># <strong>aptitude dist-upgrade</strong></em><br />
<em>The following NEW packages will be installed:</em><br />
<em>  libonig2{a} libqdbm14{a} </em><br />
<em>The following packages will be REMOVED:</em><br />
<em>  libt1-5{u} </em><br />
<em>The following packages will be upgraded:</em><br />
<em>  libapache2-mod-php5 php-pear php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-imap php5-intl php5-mcrypt php5-mysql </em><br />
<em>  php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl psmisc </em><br />
<em>20 packages upgraded, 2 newly installed, 1 to remove and 0 not upgraded.</em><br />
<em>Need to get 7,377 kB of archives. After unpacking 602 kB will be used.</em><br />
<em><span style="color: #ff0000;"><strong>The following packages have unmet dependencies:</strong></span></em><br />
<em><span style="color: #ff0000;"><strong>  php5-ps: Depends: phpapi-20090626 which is a virtual package.</strong></span></em><br />
<em><span style="color: #ff0000;"><strong>  php5-imagick: Depends: phpapi-20090626 which is a virtual package.</strong></span></em><br />
<em><span style="color: #ff0000;"><strong>  php5-memcache: Depends: phpapi-20090626 which is a virtual package.</strong></span></em><br />
<em><span style="color: #ff0000;"><strong>  php5-ming: Depends: phpapi-20090626 which is a virtual package.</strong></span></em><br />
<em>The following actions will resolve these dependencies:</em></p>
<p><em>     Remove the following packages:</em><br />
<em>1)     php5-imagick                </em><br />
<em>2)     php5-memcache               </em><br />
<em>3)     php5-ming                   </em><br />
<em>4)     php5-ps                     </em></p>
<p><em>Accept this solution? [Y/n/q/?] q</em><br />
<em><span style="color: #ff0000;"><strong>Abandoning all efforts to resolve these dependencies.</strong></span></em><br />
<em>Abort.</em></p>
<p><strong>J&rsquo;ai préférer ne pas faire la mise à jour de PHP5 et psmisc du fait de ces problèmes de dépendances. Ça attendra la sortie d&rsquo; Ubuntu 12.04 LTS.</strong></p>
<p><strong><span style="color: #ff0000;">Je suis revenu à la 1ère possibilité qui est l&rsquo;édition de /etc/cron.d/php5.</span></strong><br />
<strong><span style="color: #ff0000;">J&rsquo;ai remis la ligne de commande qui existait en Ubuntu 11.04.</span></strong></p>
<p>C&rsquo;est moins risqué sur un serveur de production, et en cas de besoin je peux facilement remettre la commande 11.10.</p>
<p>Je vais maintenant vérifier pendant 24h si je n&rsquo;ai plus d&rsquo;erreur de fork et de mémoire <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Après 12h de fonctionnement, cela semble positif :</strong></p>
<p><img class="aligncenter size-full wp-image-4776" title="Les statistiques d'utilisation cpu de Munin sont maintenant normales" src="http://didier.misson.net/blog/wp-content/uploads/2012/03/Munin_munin_stats-day.png" alt="" width="497" height="316" /></p>
<p>J&rsquo;ai modifié la ligne de commande dans /etc/cron.d/php5 vers 3h cette nuit.</p>
<p><strong>On remarque que depuis 3h, il n&rsquo;y a plus eu d&rsquo;interruption dans les statistiques Munin.</strong></p>
<p>De plus, le temps cpu utilisé par Munin est redevenu régulier.</p>
<p><img class="aligncenter size-full wp-image-4778" title="Consommation CPU normale" src="http://didier.misson.net/blog/wp-content/uploads/2012/03/Munin_cpu-day_solved.png" alt="" width="497" height="364" /></p>
<p>La consommation CPU est aussi fortement descendue. Le serveur (Core i7, 24 GB de mémoire) est largement sous-utilisé. On a de la réserve.</p>
<p>Tout est normal. On peut dire que le problème est résolu <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-4762-bottom'></div><script language='javascript'>var conf_4762 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image4762 = {src:'http://didier.misson.net/blog/wp-content/uploads/2012/03/Munin_cpu-day.png',href:'http://didier.misson.net/blog/2012/03/19/ubuntu-11-10-fork-cannot-allocate-memory-bug-php5-psmisc.html',type:'image'};
						var ua_4762 = new gigya.services.socialize.UserAction(); 
						ua_4762.setUserMessage('');  
						ua_4762.setLinkBack('http://didier.misson.net/blog/2012/03/19/ubuntu-11-10-fork-cannot-allocate-memory-bug-php5-psmisc.html'); 
						ua_4762.setTitle('Ubuntu 11.10 : fork: Cannot allocate memory (bug PHP5 / psmisc)');
						ua_4762.addMediaItem(image4762);	
		

						var params_4762 ={ 
							userAction:ua_4762,
							cssPrefix:'#gig-div-buttons-4762-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-4762-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_4762,params_4762);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2012/03/19/ubuntu-11-10-fork-cannot-allocate-memory-bug-php5-psmisc.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ubuntu 11.10 : votre Nautilus plante ? (segmentation fault)</title>
		<link>http://didier.misson.net/blog/2011/10/16/ubuntu-11-10-votre-nautilus-plante-segmentation-fault.html</link>
		<comments>http://didier.misson.net/blog/2011/10/16/ubuntu-11-10-votre-nautilus-plante-segmentation-fault.html#comments</comments>
		<pubDate>Sun, 16 Oct 2011 15:57:15 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[logiciels libres]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=4753</guid>
		<description><![CDATA[Nautilus supporte mal certaines extensions depuis la mise à jour d'Ubuntu en 11.10. En particulier "nautilus-open-terminal" qui provoque un plantage avec "erreur de segmentation".]]></description>
				<content:encoded><![CDATA[<p>Vous venez comme moi d&rsquo;<strong>upgrader</strong> votre <strong>Ubuntu en version 11.10</strong>, et vous avez la mauvaise surprise d&rsquo;avoir des <strong>plantages réguliers, ou même immédiat, de Nautilus</strong> (l&rsquo;explorateur de fichier) ?</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2011/10/Ubuntu11.10_Nautilusopen-terminal_uninstall_Didier_Misson.png" rel="lightbox[4753]" class="thickbox no_icon" title="Ubuntu11.10 : désintaller Nautilus-open-terminal"><img class="aligncenter size-medium wp-image-4756" title="Ubuntu11.10 : désintaller Nautilus-open-terminal" src="http://didier.misson.net/blog/wp-content/uploads/2011/10/Ubuntu11.10_Nautilusopen-terminal_uninstall_Didier_Misson-300x150.png" alt="" width="300" height="150" /></a></p>
<p><em>Je n&rsquo;arrive presque pas à utiliser Nautilus : il plante dés que je clique sur un dossier, parfois même il ne démarre pas !</em></p>
<p><span id="more-4753"></span></p>
<p><strong>Un peu de diagnostic :</strong></p>
<pre>Je lance Nautilus en console (dans un terminal).

 didier@didier-ubuntu:~$ <span style="color: #ff9900;"><strong>nautilus</strong></span>
 ** (nautilus:4576): DEBUG: Syncdaemon not running, waiting for it to start in NameOwnerChanged
 Initializing nautilus-open-terminal extension
 Initializing nautilus-gdu extension
(nautilus:4576): Gtk-CRITICAL **: gtk_action_set_visible: assertion `GTK_IS_ACTION (action)' failed
(nautilus:4576): Gtk-CRITICAL **: gtk_action_set_visible: assertion `GTK_IS_ACTION (action)' failed
(nautilus:4576): GLib-GObject-CRITICAL **: g_value_get_object: assertion `G_VALUE_HOLDS_OBJECT (value)' failed
...
(nautilus:4576): GLib-GObject-CRITICAL **: g_value_get_object: assertion `G_VALUE_HOLDS_OBJECT (value)' failed
(nautilus:4576): GLib-GObject-CRITICAL **: g_value_get_object: assertion `G_VALUE_HOLDS_OBJECT (value)' failed
<span style="color: #ff0000;"><strong>Erreur de segmentation</strong></span></pre>
<p>C&rsquo;est bien un plantage brutal de Nautilus !</p>
<p>Je fais une recherche Google sur &laquo;&nbsp;<strong>Ubuntu 11.10 nautilus <span style="color: #ff0000;">segmentation fault</span></strong>&laquo;&nbsp;  (oui, autant faire la recherche en anglais).</p>
<p><strong>Je trouve assez vite plusieurs pages intéressantes :</strong></p>
<ul>
<li><a  title="nautilus crash after upgrading to Ubuntu 11.10. THe file manager is totally unusable" href="https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/873987">Nautilus crashes (segmentation fault) after upgrade to Ubuntu 11.10</a> (lunchpad.net)</li>
<li><a  title="I upgraded to Ubuntu 11.10. Nautilus wont start anymore. It exits with a segmentation fault" href="http://askubuntu.com/questions/66188/nautilus-exiting-with-segmentation-fault-after-upgrade">nautilus exiting with segmentation fault after upgrade</a> (askubuntu.com)</li>
</ul>
<p>La 1ère page, sur le <a  href="https://launchpad.net/ubuntu">lunchpad</a> (là où les bugs d&rsquo;Ubuntu sont répertoriés), me confirme que je ne suis pas le seul à avoir ce problème !</p>
<p><em>&laquo;&nbsp;Status changed to &lsquo;Confirmed&rsquo; because the bug affects multiple users&nbsp;&raquo;</em></p>
<p>Je lis également &laquo;&nbsp;<em>After uninstalling nautilus-open-terminal, the problem ends. At least on a 11.10 64-bits</em>&laquo;&nbsp;, ce qu&rsquo;indique également la 2ème page trouvée.</p>
<p>D&rsquo;autres commentaires font le lien avec un autre bug à propos de l&rsquo;intégration de Nautilus et de Dropbox.</p>
<p><strong>Ça semble donc lié à certaines extensions de Nautilus.</strong></p>
<p>En effet, je suis en 64 bits, et j&rsquo;ai bien l&rsquo;extension &laquo;&nbsp;<strong>nautilus-open-terminal</strong>&nbsp;&raquo; installée !</p>
<p><a  href="http://didier.misson.net/blog/wp-content/uploads/2011/10/Ubuntu11.10_Nautilusopen-terminal_uninstall_Didier_Misson.png" rel="lightbox[4753]" class="thickbox no_icon" title="Ubuntu11.10 : désintaller Nautilus-open-terminal"><img class="aligncenter size-medium wp-image-4756" title="Ubuntu11.10 : désintaller Nautilus-open-terminal" src="http://didier.misson.net/blog/wp-content/uploads/2011/10/Ubuntu11.10_Nautilusopen-terminal_uninstall_Didier_Misson-300x150.png" alt="" width="300" height="150" /></a></p>
<p><strong>Je vais dans Synaptic et je désinstalle l&rsquo;extension &laquo;&nbsp;nautilus-open-terminal&nbsp;&raquo;.</strong></p>
<p>Je relance ensuite l&rsquo;explorateur de fichier Nautilus.</p>
<p><strong>Ok, personnellement ça a résolu mon problème. Plus de plantage !</strong></p>
<p>Certains ont encore des problèmes et ont du aussi désinstaller l&rsquo;extension &laquo;&nbsp;nautilus-dropbox&nbsp;&raquo;, ou &laquo;&nbsp;nautilus-actions&nbsp;&raquo;.</p>
<p>Ces plantages sont liés à des extentions de Nautilus. Si vous avez encore des instabilités, essayez de désinstaller ces extensions.</p>
<p><strong>Le problème est ouvert dans le Lauchpad. Espérons qu&rsquo;il sera rapidement corrigé&#8230;</strong></p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-4753-bottom'></div><script language='javascript'>var conf_4753 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image4753 = {src:'http://didier.misson.net/blog/wp-content/uploads/2011/10/Ubuntu11.10_Nautilusopen-terminal_uninstall_Didier_Misson-300x150.png',href:'http://didier.misson.net/blog/2011/10/16/ubuntu-11-10-votre-nautilus-plante-segmentation-fault.html',type:'image'};
						var ua_4753 = new gigya.services.socialize.UserAction(); 
						ua_4753.setUserMessage('');  
						ua_4753.setLinkBack('http://didier.misson.net/blog/2011/10/16/ubuntu-11-10-votre-nautilus-plante-segmentation-fault.html'); 
						ua_4753.setTitle('Ubuntu 11.10 : votre Nautilus plante ? (segmentation fault)');
						ua_4753.addMediaItem(image4753);	
		

						var params_4753 ={ 
							userAction:ua_4753,
							cssPrefix:'#gig-div-buttons-4753-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-4753-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_4753,params_4753);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2011/10/16/ubuntu-11-10-votre-nautilus-plante-segmentation-fault.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Kimsufi 2011 : OVH augmente tout, sauf le prix !</title>
		<link>http://didier.misson.net/blog/2011/05/17/kimsufi-2011-ovh-augmente-tout-sauf-le-prix.html</link>
		<comments>http://didier.misson.net/blog/2011/05/17/kimsufi-2011-ovh-augmente-tout-sauf-le-prix.html#comments</comments>
		<pubDate>Tue, 17 May 2011 06:53:57 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Dedibox]]></category>
		<category><![CDATA[OVH]]></category>
		<category><![CDATA[serveurs dédiés]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=4736</guid>
		<description><![CDATA[OVH renouvelle ses Kimsufi. Au menu de la gamme 2011 : plus de mémoire, plus de disque, et tout ça pour un prix inférieur !]]></description>
				<content:encoded><![CDATA[<p>Octave vient de l&rsquo;annoncer en début de soirée : <strong>la gamme <a  title="Le serveur qui me suffit !" href="http://www.kimsufi.com/fr/ks/">Kimsufi 2011</a> est lancé !</strong></p>
<p>On peut dire que ça va faire mal.</p>
<p style="text-align: center;"><a  href="http://www.ovh.com/"><img class="aligncenter size-full wp-image-3773" title="Votre serveurs dédiés Kimsufi chez OVH" src="http://didier.misson.net/blog/wp-content/uploads/2010/06/OVH_serveurs_dedies.jpg" alt="" width="592" height="194" /></a></p>
<p style="text-align: center;"><em>photo © OVH</em></p>
<p><strong>Si on compare avec l&rsquo;ancienne gamme Kimsufi 2010, la différence est parfois énorme !</strong></p>
<p><strong><span id="more-4736"></span></strong></p>
<p>La gamme Kimsufi KS comprend 3 modèles.</p>
<p><strong>Comparons les modèles 2010 et 2011 :</strong></p>
<ul>
<li><strong>2010</strong>
<ul>
<li>Kimsufi 250G : € 14,99 : Celeron ou Atom 1,2 GHz, ram 2 GB, disque 250 GB, réseau 100 Mbps</li>
<li>Kimsufi 750 G : € 49,99 :  Q6600 4x 2,4 GHz, ram 4 GB, disque 750 GB, réseau 100 Mbps</li>
<li>Kimsufi 4T : € 99,99 : Core i7 4x 2x 2,66 GHz, ram 12 GB, disque 2x 2 TB, réseau 1 GBps</li>
</ul>
</li>
<li><strong>2011</strong>
<ul>
<li>Kimsufi 2G : € 14,99 : Celeron ou Atom 1,2 GHz, ram 2 GB, <strong>disque 1 TB</strong>, réseau 100 Mbps</li>
<li>Kimsufi 16G : <strong>€ 39,99</strong> : <strong>Core i5 4x 2,66 GHz</strong>, <strong>ram 16 GB</strong>, <strong>disque 2 TB</strong>, <strong>réseau 1 Gbps</strong></li>
<li>Kimsufi 24G : <strong>€ 49,99</strong> : Core i7 4x 2,66 GHz (x2 HT), <strong>ram 24 GB</strong>, <em>disque 2 TB</em>, réseau 1 Gbps</li>
</ul>
</li>
</ul>
<p><em>(prix hors TVA)</em></p>
<p>Les frais d&rsquo;installation sont de 50 €. Si vous payez directement pour un an de location, ces frais sont offerts.</p>
<p><em><strong>Attention :</strong> les IP failover sont maintenant en option et coûtent € 1,00 + tva par adresse IP.</em></p>
<p><strong>Sur le Kimsufi d&rsquo;entrée de gamme</strong>, surtout destiné à concurrencer l&rsquo;<a  title="le Dedibox SC est à 14,99 €" href="http://www.online.net/serveur-dedie/comparatif-serveur-dedie-start.xhtml">entrée de gamme Dedibox</a>, le seul changement est la taille du disque dur.</p>
<p><strong>Pour les 2 modèles suivants</strong> on remarque surtout la forte <strong>augmentation de la mémoire</strong> (qui est à mon avis le plus important sur un serveur web), et la <strong>diminution du prix</strong>.</p>
<p>Un dédié Quad Core avec 16 GB à 40 € HT, c&rsquo;est vraiment TRÈS intéressant !</p>
<p>Monter à 50 € pour un dédié avec 24 GB et un Core i7, à mon avis ça vaut les 10 € supplémentaire (on passe d&rsquo;un Quad Core à un Quad Core + Hyper Threading, càd pratiquement 8 cœurs).</p>
<p>Pour moi, c&rsquo;est le modèle intermédiaire qui subit la plus forte évolution matérielle, sans parler de sa diminution de prix (10 € de moins, c&rsquo;est très bien).</p>
<p>Le haut de gamme est surtout intéressant pour son prix divisé par 2 par rapport à la gamme 2010 !</p>
<p><strong><em>La comparaison avec la gamme Dedibox est intéressante.</em></strong></p>
<p style="text-align: center;"><a  href="http://www.online.net"><img class="aligncenter size-full wp-image-3764" title="Les offres Dedibox chez Online" src="http://didier.misson.net/blog/wp-content/uploads/2010/06/online.net-logo.png" alt="" width="164" height="61" /></a></p>
<p style="text-align: center;"><em>logo © Online sas</em></p>
<p><strong>Le Kimsufi 16G</strong> à € 39,99 peut être comparé au<strong> <a  href="http://www.online.net/serveur-dedie/offre-dedibox-qc.xhtml">Dedibox QC</a></strong> à € 44,99 : le Kimsufi a pour lui 16 GB (au lieu de 8GB pour le Dedibox QC), mais du côté Dedibox, on offre du <a  title="techniques permettant de répartir des données sur plusieurs disques durs afin d'améliorer soit la tolérance aux pannes, soit la sécurité, soit les performances" href="http://fr.wikipedia.org/wiki/RAID_(informatique)">Raid hardware</a> 2x 1TB pour un prix légèrement supérieur.</p>
<p><strong>Le Kimsufi 24G</strong> peut être comparé au<strong> <a  href="http://www.online.net/serveur-dedie/offre-dedibox-pro-r210.xhtml">Dedibox Pro R210</a></strong>, tous les 2 à €49,99 : le Kimsufi a 24 GB (au lieu de 16 chez Dedibox), une fréquence plus élevée (2,66 GHz au lieu de 1,86), mais le Dedibox a 2 disques 2 TB en Raid hardware.</p>
<p><strong>Alors, OVH ou Dedibox ?</strong></p>
<p>Si vous avez besoin de <strong>disque RAID</strong>, l&rsquo;avantage est chez <strong>Dedibox</strong>&#8230;</p>
<p><strong>Pour le reste, je choisirais OVH !</strong></p>
<p><em>D&rsquo;ailleurs, moi, je n&rsquo;ai pas le choix, car Online ne loue ses serveurs Dedibox qu&rsquo;à des résidents français. Impossible d&rsquo;en commander depuis la Belgique&#8230;</em></p>
<p><em><em><a  href="http://www.webactus.net/actu/9947-kimsufi-2011-ovh-augmente-tout-sauf-le-prix/">Billet également publié</a> sur <a  title="Site informatif sur le web 2.0 et ses dérivés à destination de tous les geeks et néophytes" href="http://www.webactus.net/">WebActus.net</a>, en collaboration avec <a  title="Le Webmaster de WebActus.net" href="http://romain.amardeil.fr/">Romain Amardeil</a>, <a  title="Follow him !" href="http://twitter.com/moukshi">Maxime Legrand</a> et <a  title="Sylvain participe également  au PodCast High Tech" href="http://www.sylvainratton.fr/blog/">Sylvain Ratton</a>.</em><br />
</em></p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-4736-bottom'></div><script language='javascript'>var conf_4736 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image4736 = {src:'http://didier.misson.net/blog/wp-content/uploads/2010/06/OVH_serveurs_dedies.jpg',href:'http://didier.misson.net/blog/2011/05/17/kimsufi-2011-ovh-augmente-tout-sauf-le-prix.html',type:'image'};
						var ua_4736 = new gigya.services.socialize.UserAction(); 
						ua_4736.setUserMessage('');  
						ua_4736.setLinkBack('http://didier.misson.net/blog/2011/05/17/kimsufi-2011-ovh-augmente-tout-sauf-le-prix.html'); 
						ua_4736.setTitle('Kimsufi 2011 : OVH augmente tout, sauf le prix !');
						ua_4736.addMediaItem(image4736);	
		

						var params_4736 ={ 
							userAction:ua_4736,
							cssPrefix:'#gig-div-buttons-4736-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-4736-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_4736,params_4736);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2011/05/17/kimsufi-2011-ovh-augmente-tout-sauf-le-prix.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Google recycle les bases rouges en vertes !</title>
		<link>http://didier.misson.net/blog/2011/04/08/google-recycle-les-bases-rouges-en-vertes.html</link>
		<comments>http://didier.misson.net/blog/2011/04/08/google-recycle-les-bases-rouges-en-vertes.html#comments</comments>
		<pubDate>Fri, 08 Apr 2011 09:41:49 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[écologie]]></category>
		<category><![CDATA[énergie]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=4719</guid>
		<description><![CDATA[Google continue ses investissements dans l'énergie renouvelable. Il vient d'investir 3,5 millions d'Euro dans un parc solaire de 47 ha à Brandebourg]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><em>Google s&rsquo;intéresse décidément de près à la production d&rsquo;électricité verte !</em></p>
<p style="text-align: center;"><strong>Google vient d&rsquo;annoncer ce jeudi un investissement de 3,5 millions d&rsquo;Euro dans un parc solaire près de Berlin.</strong></p>
<p style="text-align: center;"><a  href="http://googlepolicyeurope.blogspot.com/2011/04/google-to-invest-in-german-solar-power.html"><img class="aligncenter size-full wp-image-4723" title="Ferme solaire à Brandebourg près de Berlin" src="http://didier.misson.net/blog/wp-content/uploads/2011/04/brandebourg_solar_google.jpg" alt="" width="480" height="360" /></a></p>
<p style="text-align: center;"><em><a  title="Google to invest in German solar power plant" href="http://googlepolicyeurope.blogspot.com/2011/04/google-to-invest-in-german-solar-power.html">photo © Google</a> 2011</em></p>
<p>Les panneaux solaires, d&rsquo;une puissance crête totale de <strong>18,65 Mega Watts</strong>, sont installés sur un terrain de 47 ha, <strong>ancienne base militaire russe</strong> située à <a  title="une ville allemande du Land de Brandebourg située sur les rives de la Havel" href="http://fr.wikipedia.org/wiki/Brandenburg_an_der_Havel">Brandebourg-sur-la-Havel</a> près de Berlin, <strong>une façon bien sympa de réutiliser ce genre de base militaire</strong>.</p>
<p><strong>Cette puissance alimentera plus de 5000 maisons.</strong></p>
<p><strong><span id="more-4719"></span><br />
</strong></p>
<p>Ce projet est mené par la société <a  title="Die Capital Stage AG ist ein Hamburger Finanzinvestor, der in Solar- und Windparks sowie in Unternehmen aus dem Sektor Erneuerbare Energien investiert" href="http://www.capitalstage.com/">Capital Stage</a>, très active sur le marché des énergies renouvelables, solaire et éolien, en Allemagne. Plus de 70% des panneaux installés à Brandebourg sont fabriqués en Allemagne.</p>
<p style="text-align: center;"><a href="tp://www.capitalstage.com/"><img class="aligncenter size-full wp-image-4722" title="Capital Stage" src="http://didier.misson.net/blog/wp-content/uploads/2011/04/capital_stage_head_logo.jpg" alt="" width="206" height="52" /></a></p>
<p style="text-align: center;"><em>logo © Capital Stage</em></p>
<p><strong>C&rsquo;est le 1er investissement de Google dans l&rsquo;énergie verte en Europe, mais Google a déjà fait d&rsquo;autres investissement dans ce domaine :</strong></p>
<ul>
<li>depuis 2007, le toit du <a  title="le siège social de Google à Mountain View en Californie" href="http://fr.wikipedia.org/wiki/Googleplex">Googleplex</a> est couvert de 1,6 MegaWatts de panneaux solaires</li>
<li>décembre 2009 : Google Energy, filiale de Google, est créée</li>
<li>10 février 2010 : <a  title="Google Energy ... c'est GO !" href="http://www.webactus.net/actu/google/5043-google-energy-cest-go">Google Energy devient producteur d’électricité aux USA</a> : Google a officiellement accès au marché de gros de l’électricité</li>
<li>30 juin 2010 : Google Energy passe un accord avec NextEra Energy Resources pour un approvisionnement pendant 20 ans de <a  title="Google... du vent pour 20 ans !" href="http://www.webactus.net/actu/7307-google-du-vent-pour-20-ans">114 MegaWatts d’électricité d’origine éolienne</a> dans le Dakota du nord</li>
<li>11 octobre 2010 : Google participe pour 37,5 % à l’<a  title="la super autoroute AWC pour éoliennes" href="http://www.webactus.net/actu/8049-google-investit-19-milliards-dans-la-super-autoroute-awc-pour-eoliennes">Atlantic Wind Connection</a>, une sorte d&rsquo;autoroute énergétique de 563 Km, qui collectera aux larges des côtés américaines l&rsquo;électricité produite par les fermes d&rsquo;éoliennes en mer . Puissance totale : 6000 Mega Watts</li>
<li>ce 7 avril 2011, Google annonce donc un investissement de 3.500.000 € dans un parc solaire de 18,65 Mega Watts près de Berlin</li>
</ul>
<p><strong>Le marché de l&rsquo;énergie semble être particulièrement attractif pour Google.</strong></p>
<p>Il faut dire que c&rsquo;est tout bénéfice pour Google, gros consommateur d&rsquo;électricité dans ses multiples datacenters.</p>
<p>Le choix de l&rsquo;Allemagne pour un premier investissement en énergie renouvelable en Europe est assez symbolique : l&rsquo;Allemagne est un des pays où l&rsquo;écologie est la plus importante pour la population, de même que le refus de l&rsquo;énergie nucléaire et le désir de fermer les centrales.</p>
<p>L&rsquo;Allemagne est aussi un des pays où Google a eu le plus de problème avec Google Street View : Google a été obligé de mettre en place des procédures facilitant pour la population, le retrait de Google Street View des bâtiments privés.</p>
<p><strong>Nul doute que se donner une image écolo sera très positif pour Google en Europe, et en Allemagne en particulier.</strong></p>
<p><strong> </strong></p>
<p style="text-align: center;"><a  href="http://didier.misson.net/blog/wp-content/uploads/2010/02/google-energy_nuenergen_com.jpg" rel="lightbox[4719]" class="thickbox no_icon" title="Google, producteur d'électricité... et moteur de recherche Internet..."><img class="aligncenter size-full wp-image-3542" title="Google, producteur d'électricité... et moteur de recherche Internet..." src="http://didier.misson.net/blog/wp-content/uploads/2010/02/google-energy_nuenergen_com.jpg" alt="" width="451" height="378" /></a></p>
<p style="text-align: center;"><em>logo © <a  href="http://google.com/">Google.com</a>, photo venant de </em><a  href="http://www.nuenergen.com/"><em>NuEnergen.com</em></a><strong><br />
</strong></p>
<p><em><strong>Google a-t-il d&rsquo;autres buts que de produire sa propre électricité et de quitter cette image de datacenters énergivores pour les transformer en datacenters écolo qui sentent bon le printemps ?</strong></em></p>
<p>Peut-être &#8230;</p>
<p>L&rsquo;énergie va devenir un marché vital, avec les besoins en hausse et la raréfaction des ressources pétrolières.</p>
<p><strong>Google peut essayer d&rsquo;avoir sa part dans ce marché juteux, et peut-être devenir fournisseur d&rsquo;électricité pour les entreprises ou même les particuliers ?</strong></p>
<p>L&rsquo;avenir nous le dira &#8230;</p>
<p><strong><em>En attendant, chaque mega watt produit de façon renouvelable est une bonne chose pour la planète et pour nos ressources énergétiques.</em></strong></p>
<p><em>sources :</em></p>
<ul>
<li><em><a  href="http://lexpansion.lexpress.fr/high-tech/google-investit-dans-l-energie-solaire-en-allemagne_252017.html">Google investit dans l&rsquo;énergie solaire en Allemagne</a> (L&rsquo;Expansion.com)</em></li>
<li><em><a  href="http://www.google.com/green/investments.html">Google Green Investments</a></em></li>
<li><em><a  href="http://www.capitalstage.com/">Capital Stage</a></em></li>
<li><em><a  href="http://googlepolicyeurope.blogspot.com/2011/04/google-to-invest-in-german-solar-power.html">Google to invest in German solar power plant</a> (Google European Public Policy Blog)</em></li>
</ul>
<p><em>Un peu de tout :</em></p>
<ul>
<li><em><a  title="Vous êtes Electrabel ou Google Energy ?" href="http://didier.misson.net/blog/2010/01/08/vous-etes-electrabel-ou-google-energy/">Vous êtes Electrabel ou Google Energy ?</a></em></li>
<li><em><a  title="Google Energy … c’est GO !" href="http://didier.misson.net/blog/2010/02/20/google-energy-cest-go/">Google Energy&#8230; C&rsquo;est GO !</a></em></li>
<li><em><a  title="Google… du vent pour 20 ans !" href="http://didier.misson.net/blog/2010/07/21/google-du-vent-pour-20-ans/">Google&#8230; du vent pour 20 ans</a></em></li>
<li><em><a  href="http://www.webactus.net/actu/8049-google-investit-19-milliards-dans-la-super-autoroute-awc-pour-eoliennes">Google investit 1,9 millards dans la Super Autoroute AWC pour éolienne</a></em></li>
</ul>
<p><em><a  href="http://www.webactus.net/actu/google/9557-energy-google-remet-ca">Billet également publié</a> sur <a  title="Site informatif sur le web 2.0 et ses dérivés à destination de tous les geeks et néophytes" href="http://www.webactus.net/">WebActus.net</a>, en collaboration avec <a  title="Le Webmaster de WebActus.net" href="http://romain.amardeil.fr/">Romain Amardeil</a>, <a  title="Follow him !" href="http://twitter.com/moukshi">Maxime Legrand</a> et <a  title="Sylvain participe également  au PodCast High Tech" href="http://www.sylvainratton.fr/blog/">Sylvain Ratton</a>.</em></p>
<div class='gig-share-button gig-share-button-bottom' id='gig-div-buttons-4719-bottom'></div><script language='javascript'>var conf_4719 = {
							APIKey: '',
							lang  : '',
							enabledProviders: ''
    					};
						
    					var image4719 = {src:'http://didier.misson.net/blog/wp-content/uploads/2011/04/brandebourg_solar_google.jpg',href:'http://didier.misson.net/blog/2011/04/08/google-recycle-les-bases-rouges-en-vertes.html',type:'image'};
						var ua_4719 = new gigya.services.socialize.UserAction(); 
						ua_4719.setUserMessage('');  
						ua_4719.setLinkBack('http://didier.misson.net/blog/2011/04/08/google-recycle-les-bases-rouges-en-vertes.html'); 
						ua_4719.setTitle('Google recycle les bases rouges en vertes !');
						ua_4719.addMediaItem(image4719);	
		

						var params_4719 ={ 
							userAction:ua_4719,
							cssPrefix:'#gig-div-buttons-4719-bottom',
							shareButtons:'facebook-like,google-plusone,share,twitter,email', // list of providers
							containerID: 'gig-div-buttons-4719-bottom',
        					cid:''
						};
						gigya.services.socialize.showShareBarUI(conf_4719,params_4719);
					</script>
					]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2011/04/08/google-recycle-les-bases-rouges-en-vertes.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
