Doc /

Installer et déplacer Wordpress

Sorry, this one is in french. May be I will translate it some day.

Wordpress is too much a hassle to manage, I will stop this asap and port the articles to my wiki.

Installer Wordpress

Installer Wordpress est la chose la plus simple qui soit. Copiez les fichiers contenus dans l'archive dans le répertoire qui vous convient de votre site web (genre htdocs/wdp) puis pointez dessus avec votre navigateur.

 http://mondomaine.tld/wdp

Vous rentrez directement dans l'installation qui consiste essentiellement à renseigner les paramètres de la base de données mysql.

Migrer Wordpress

Infos

La page française ne semble pas à jour. Je n'y trouve pas cette partie de la page anglaise:

"if you do a search and replace on your entire database to change the URLs, you can cause issues with data serialization, due to the fact that some themes and widgets store values with the length of your URL marked. When this changes, things break. To avoid that serialization issue..."

Si on fait une recherche et remplacement dans toutes les tables, on risque un problème de "sérialisation". Certains thèmes ou accessoires stockent la longueur des URL. Si on change ca ne marche plus.

La solution est d'utiliser le script disponible ici: http://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Il s'appelle "searchreplacedb21.php", mais il vaut mieux le renommer et même l'effacer après usage pour éviter qu'un malfaisant s'en serve.

infos sur les serveurs

Vers un autre serveur, par exemple. Là c'est bien plus difficile.

Un fichier d'information sur votre config php est utile, il suffit qu'il contienne:

 <?php phpinfo(); ?>

il vaut sans doute mieux ne pas le laisser sur le site, surtout pas avec un lien, ce serait faciliter la tache d'éventuels pirates.

Faire le backup

http://dodin.org/wiki/index.php?n=Doc.MySQL-2#toc14

Pour sauvegarder plusieurs tables d'un coup, la seule solution que j'ai trouvé a été de lister les tables avec mysql ("show tables ;") , recopier cette liste dans un fichier texte, ce qui donne

mysqldump -u jdd -p jdd wp_commentmeta wp_comments  wp_cvg_gallery...

il faut éditer à la main le texte pour supprimer les caractères de mise en page et les retour chariot... ensuite on colle dans un terminal et ca marche. Rajouter "> fichier.sql" quand on voit que c'est bon. Ou utiliser "tr".

La meme chose avec un script: http://dodin.org/wiki/index.php?n=Doc.MySQL-2#toc15

Restaurer la base de donnée

 mysql -u jdd -p jdd < wp_dodinorg.sql 

restaure la base de données, avec exactement les mêmes données que l'original. C'est cela qui pose problème car certains éléments ont changé.

Recopier Wordpress

un tuto sympa:

http://olivierlabbe.com/2009/03/deplacer-wordpress-dun-dossier-serveur-ou-nom-de-domaine/

je ne comprends pas tout, aussi je recopie le texte ci-dessous pour pouvoir le modifier/commenter

  • Lister vos informations nécessaires (ancien nom de domaine, nouveau nom de domaine, ancien dossier racine*, nouveau dossier racine*)
  • Déplacer vos fichiers du vers le nouveau dossier (tous sans aucune exceptions).

Si j'avais mes fichiers wordpress dans "wordpress" je les recopie. Donc, je me connecte par ssh sur le nouveau serveur, je vais dans le répertoire htdocs d'Apache, je fais "mkdir wordpress", "cd wordpress", puis

 rsync -av root@<ancienserveur>:<chemin ancien serveur>/wordpress/ . -n | more

Ne pas oublier le / à la fin du chemin. "-n | more", c'est pour tester la ligne et voir si rsync affiche bien les bons fichiers (ceux du répertoire de Wordpress). Avez-vous vu qu'il y a un "." avant -n? on veut copier les fichiers vers le répertoire courant (le nouveau répertoire Wordpress). Maintenant on y va...

 rsync -av root@dodin.org:/data/srv/www/htdocs/wordpress/ .

Corriger la base de données

Avec un éditeur de texte

En fait, il faut utiliser vi (ou mieux gvim). Les autres ont des limites de taille de ligne (et wordpress stocke les articles dans la base, les champs sont donc très longs). Donc faire une sauvagarde de la base, copier le fichier sous un autre nom et modifier la copie. Ensuite restaurer la base. Ca ne résoud pas le problème de "salage", mais si vous n'avez pas les modules en cause, ca ne gène pas. Facile d'essayer...

Dans mysql

Tout ça maintenant se passe sur le nouveau serveur

Il vaut sans doute mieux utiliser le script indiqué plus haut, mais ce qui suit permet d'éviter une erreur facile. Le but est de corriger une URL, c'est à dire un lien. Il est donc tout à fait nécessaire de faire la recherche et remplacement avec une URL la plus complète possible (http://....) pour éviter de modifier aussi les occurences ou vous avez pu simplement citer votre site web dans la conversation.

Si vous avez aussi déplacé certaines données (images, par exemple), vous pouvez aussi utiliser ce script. On voit ci-dessous qu'il faut aussi remplacer le chemin d'accès absolu vers le sevreur.

  • Accéder à votre base de donnée.
    Modifier cette commande MySQL pour votre installation WordPress et exécutez-la (il n’y as pas de « / » ou « \ » à la fin du nom de domaine, ou du dossier) :
    UPDATE wp_options SET option_value = replace(option_value, 'http://www.ancien-domaine.com', 'http://www.nouveau-domaine.com') WHERE option_name = 'home' OR option_name = 'siteurl';
    Modifier cette commande MySQL pour votre installation WordPress et exécutez-la (il n’y a pas de « / » ou « \ » à la fin du nom de domaine, ou du dossier) :
    UPDATE wp_posts SET guid = replace(guid, 'http://www.ancien-domaine.com','http://www.nouveau-domaine.com');
    Modifier cette commande MySQL pour votre installation WordPress et exécutez-la (il n’y a pas de « / » ou « \ » à la fin du nom de domaine, ou du dossier) :
    UPDATE wp_posts SET post_content = replace(post_content, 'http://www.ancien-domaine.com', 'http://www.nouveau-domaine.com');
    Modifier cette commande MySQL pour votre installation WordPress et exécutez-la (il n’y a pas de « / » ou « \ » à la fin du dossier racine) :
    UPDATE wp_options SET option_value = replace(option_value, '/ancien/dossier/racine', '/nouveau/dossier/racine');
    Modifier cette commande MySQL pour votre installation WordPress et exécutez-la (il n’y a pas de « / » ou « \ » à la fin du dossier racine) :
    UPDATE wp_postmeta SET meta_value = replace(meta_value, '/ancien/dossier/racine', '/nouveau/dossier/racine');

Adapter la mise en page

Dans la rubrique de Wordpress sur les permaliens, on constate que seule la valeur par défaut fonctionne simplement. Pour toutes les autres valeurs, Wordpress doit utiliser un fichier .htaccess situé dans sa racine. Si il a les droits en écriture il le fait seul, sinon il faut le faire à la main.

Une solution médiane est de créer le fichier .htaccess, lui donner les droits en écriture pour tous, faire la modif dans Wordpress et remettre les droits en lecture seule. Attention, laisser les droits en écriture pour tous sur ce fichier est suicidaire :-(.

Pour que ça marche, il faut aussi que mod_rewrite soit activé. Ce n'est pas le cas par défaut car ca permet aux utilisateurs qui ont un site web dans leur ~/public_html de faire pas mal de choses dans les .htaccess.

Cette activation n'est pas évidente dans openSUSE. Le plus simple est d'aller dans YaST, configuration de serveur http, ou il suffit de cocher une case. Ceci dit j'ai eu l'habitude (sans doute avant que ce module de YaST soit créé) de modifier à la main un des fichiers de config et YaST n'aime pas trop. Il faut alors modifier un fichier de config qui est marqué "pas touche", c'est flippant. Mais ca marche.

à partir de la 13.1 et peut-être avant, SuSeconfig n'existe plus. Yast fait un npeu trop le ménage dans /etc/apache2/vhosts.d, du coup il vaut mieux faire

 a2enmod rewrite