12 décembre 2008

Script de mise à jour de WordPress

Category: Geek — Fabien @ 15:04

Aujoud’hui, pour fêter la version 2.7 de WordPress, je me suis fait un petit script de mise à jour de WordPress.En effet, la procédure standard de mise à jour de WordPress ne me plaît pas : elle nécessite de mettre la site hors-ligne pendant trop longtemps, et il est difficile de revenir en arrière si l’on a fait une bétise.

De mon côté, pour faciliter la mise à jour, je n’installe pas WordPress directement à la racine, mais sous le répertoire blog. Je télécharge ensuite la nouvelle version de WordPress dans un autre répertoire, pas exemple wordpress. Je copie les informations nécessaires (wp-config.php, documents attachés, plugins, thème) dans le nouveau répertoire.

Au moment fatidique de la bascule, je n’ai qu’à renommer le blog en blog.old, wordpress en blog, lancer le script de mise à jours de la base de données (wp-admin/upgrade.php) et hop, 10s d’indisponibilité à tout casser.

Je teste la nouvelle version, et si elle me convient, je détruis blog.old. Si ca ne fonctionne pas, je renomme blog en wordpress, blog.old en blog et, si les différences de base de données ne sont pas trop énormes, ca remarche.

Voici si script Unix qui me télécharge une version de WordPress, la dézippe, me fait les backup des fichiers « qui vont bien » avant de télécharger le tout sur le serveur et de faire la bascule entre les deux version. L’appel du script de migration de la base de données reste manuel. Certains chemins doivent bien sur être adaptés (suivant où vous mettez les fichiers attachés). Enjoy (le script prend en paramètre l’URL du zip d’installation de WordPress):

#!/bin/sh
user=monuser
export $user
password=monpass
export $password
echo "Cleaning directories"
rm -fr /tmp/wordpress
rm -fr /tmp/backup
echo "Downloading WordPress"
wget -nv -O /tmp/wordpress.zip $1
echo "Extracting WordPress"
unzip -d /tmp -o -q /tmp/wordpress.zip
echo "Downloading configuration"
mkdir /tmp/backup
mkdir /tmp/backup/wordpress
wget -nv -O /tmp/backup/wordpress/wp-config.php ftp://$user:$password@ftp.bergeret.org/www/blog/wp-config.php
echo "Downloading attachents"
lftp ftp://$user:$password@ftp.bergeret.org -e "mirror -r /www/blog/wp-content -X *.php /tmp/backup/wordpress/wp-content ; quit"
echo "Downloading plugins"
lftp ftp://$user:$password@ftp.bergeret.org -e "mirror /www/blog/wp-content/plugins -X hello.php -x akismet /tmp/backup/wordpress/wp-content/plugins ; quit"
echo "Downloading theme"
lftp ftp://$user:$password@ftp.bergeret.org -e "mirror /www/blog/wp-content/themes/red-train-2.x /tmp/backup/wordpress/wp-content/themes/red-train-2.x ; quit"
echo "Merging"
cp -r /tmp/backup/wordpress /tmp
echo "Uploading WordPress"
lftp ftp://$user:$password@ftp.bergeret.org -e "mirror -e -R /tmp/wordpress /www/wordpress ; quit"
echo "Cleaning directories"
rm -fr /tmp/wordpress
rm -fr /tmp/backup
echo "Switching"
lftp ftp://$user:$password@ftp.bergeret.org -e "mv /www/blog /www/blog.old ; mv /www/wordpress /www/blog ; quit"

Aucun commentaire »

No comments yet.

RSS feed for comments on this post. | TrackBack URI

Leave a comment

XHTML ( You can use these tags):
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .