Déplacement site Wordpress

De EjnTricks

Il existe de multiple raison pour déplacer un site Web. Par exemple, celui-ci peut avoir été créé sur un environnement de développement avant une mise en production et publication. Cet article présente les différentes étapes pour déplacer / copier un site en mentionnant les différents points à ne pas oublier.

La procédure décrite sur le site Officiel est la référence de cet article.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Viewer icon.png Objectif

L'objectif de la manipulation est de déplacer un site hébergé sur une machine machine1 accessible depuis l'URL http://machine1/mysite/wp vers une machine machine2 en changeant l'URL http://machine2.

Il faut donc déplacer les fichiers, la base de données et modifier les paramètres pour rendre accessible le site depuis l'URL root.


link Export ancien site

Afin de déplacer un site, il faut exporter la base de données sources ainsi que l'ensemble des fichiers du site.

L'export de la base de données s'effectue avec la ligne de commande suivante.

mysqldump -u root -p <NOM BASE DONNEES> -r baseDump.dump

Il faut remplacer <NOM BASE DONNEES> par le nom de la base de données. Cela va créer un fichier baseDump.dump contenant l'intégratlité de la base.

Le code du site doit être stockés ainsi que le répertoire où sont sauvegardés les contenus téléversés. Ce répertoire se trouve généralement dans le site, mais pour une installation sous Linux, il est possible que celui-ci soit un lien. Dans ce cas, il ne faut pas oublier celui-ci.


Icon-database-process.png Préparation base de données

Dans le cadre de cette migration, le nom de la base ainsi que les identifiants de connexion ne sont pas modifiés. Ces informations se trouvent dans le fichier wp-config.php du site.

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', '<NOM BASE DONNEES>');

/** MySQL database username */
define('DB_USER', '<COMPTE BASE DONNEES>');

/** MySQL database password */
define('DB_PASSWORD', '<MOT DE PASSE>');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

Ceci permet de récupérer les paramètres de création de la base de données. A noter que dans ce cas, la base de données se trouve sur la même machine que le serveur web.

Il faut donc créer la base de données sur la nouvelle machine, soit pour MySql l'exécution des requêtes suivantes.

mysql> CREATE SCHEMA <NOM BASE DONNEES> DEFAULT CHARACTER SET utf8 ;
Query OK, 1 row affected (0.00 sec)

mysql> create user <COMPTE BASE DONNEES>@localhost identified by '<MOT DE PASSE>';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT CREATE, SELECT, INSERT, UPDATE, DELETE, LOCK TABLES on <NOM BASE DONNEES>.* TO '<COMPTE BASE DONNEES>'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Une fois la base de données mise en place, il suffit d'importer le contenu de l'export préalablement réalisé avec la commande suivante.

mysql -u root --default-character-set=utf8 <NOM BASE DONNEES> < baseDump.dump

A noter l'importance de la définition de l'encoding. Celui-ci est utilisé lors de l'export, lors de la création de la base et en argument de l'import. Dans le cadre de cet article, la valeur UTF8 est utilisée, mais cela dépend de chaque instance.


Add-file-icon.png Copie des fichiers

Cette étape est clairement la plus facile. Il suffit de copier les fichiers exportés au niveau du serveur Web de la nouvelle machine, par exemple sous C:\Apps\Apache\2.4\htdocs, pour une installation décrite ici.


Network Admin.png Déplacement à la racine

La dernière étape consiste à rendre disponible le site depuis la racine et non plus une URL du type http://machine2/mywordpress/wp.

Dans un premier temps, il faut copier les fichiers .htaccess et index.php à la racine. Le fichier .htaccess sera mis à jour automatiquement par l'interface d'administration de Wordpress. Par contre, la copie du fichier index.php, celle à la racine, doit être modifié pour prendre en compte ce déplacement.

	<?php
	/**
	 * Front to the WordPress application. This file doesn't do anything, but loads
	 * wp-blog-header.php which does and tells WordPress to load the theme.
	 *
	 * @package WordPress
	 */

	/**
	 * Tells WordPress to load the WordPress theme and output it.
	 *
	 * @var bool
	 */
	define('WP_USE_THEMES', true);

	/** Loads the WordPress Environment and Template */
	/* require( dirname( __FILE__ ) . '/wp-blog-header.php' ); */
	require( dirname( __FILE__ ) . '/mywordpress/wp/wp-blog-header.php' );

Puis il faut se connecter à l'interface d'administration, en conservant la précédent structure de lien soit http://machine2/mywordpress/wp-admin et d' accéder à l'interface d'administration dans les paramètres globaux. La valeur de WordPress Address ne doit pas être modifié. Par contre, la valeur Site Address doit contenir la nouvelle URL souhaitée.


Icon-Configuration-Settings.png Modification paramétrage

Du fait du changement de machine, les liens sur les articles / médias et autres objets du site doivent être mis à jour. Il est possible d'effectuer ceci directement dans la base de données. Cependant, un outil est disponible sur le site https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Après avoir téléchargé l'outil, le script searchreplacedb2.php doit être placé à la racine du site et accéder via l'URL http://machine2/searchreplacedb2.php.

Une page d'accueil est affiché où il faut renseigner les paramètre d'accès à la nouvelle base de données.


Puis il faut sélectionner les tables à mettre à jour. Il est recommander de toutes les sélectionner.


Une confirmation est demandée.


L'étape suivante permet de définir la chaîne de caractère à modifier sa valeur remplaçante.


Une dernière confirmation est demandée à l'utilisateur.


Une fois les modifications réalisées, un résumé succins est présenté.


Warning-icon.png Anomalie liens permanents

A ce stade, le déplacement doit être fonctionnel. Cependant, lors de son exécution plusieurs problèmes ont été rencontrés. La cause n'est en aucun cas due à la procédure, mais à cause d'oubli dans les pré requis. Il est effectivement facile d'oublier les différents paramètres à mettre en place au niveau du serveur Web, comme Apache, afin que le site fonctionne.

Le premier symptome est visible lors de l'accès aux articles / pages depuis leur lien permanent, liens qui aboutissent sur une page 404.

Il faut donc garder en mémoire qu'il est nécessaire d'activer le module mod_rewrite de Apache. Dans le cadre d'une installation Windows, il suffit de décommenter les paramètres dans le fichier httpd.conf ainsi.

LoadModule rewrite_module modules/mod_rewrite.so

Il ne faut pas oublier d'activer le moule php5_mysql également au niveau du fichier php.ini.

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll

Il faut également modifier la configuration du site pour autoriser la réécriture des URLs. Ceci s'effectue dans le fichier http.conf. Dans le cadre de cet article, le site est déployé sous C:\Apps\Apache\2.4\htdocs, et il faut modifier la configuration pour cet emplacement.

DocumentRoot "c:/Apps/Apache/2.4/htdocs"
<Directory "c:/Apps/Apache/2.4/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    # AllowOverride None
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>


Viewer icon.png Voir aussi

Documentation officielle: http://codex.wordpress.org/Moving_WordPress

http://www.codex.wordpress.og/Changing_The_Site_URL

http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory