Déc 192011
j’ai enfin pris le temps de migrer le portail de développement. c’est du wordpress donc c’est pas forcément intuitif, voici pour mémoire la procédure à suivre. au final, changement du nom de domaine et changement de répertoire. voici la méthode utilisée.
la première chose à faire est de copier l’arborescence de votre wordpress :
# cd /var/www/thesite # tar cvpf – . |gzip -c |(cd /var/www/newsite ; gunzip -d |tar xpf -)
ensuite on va créer une nouvelle base de donnée puis répliquer l’ancienne dedans
# mysqladmin create NEW_BASE -u DBUSER --password=DBPASS # mysqldump -u DBUSER --password=DBPASS OLD_BASE | mysql -u DBUSER --password=DBPASS -h localhost NEW_BASE
puis changer les référence à l’ancien nom de domaine pour le nouveau
# mysql -u DBUSER -p mysql> use NEW_BASE mysql> UPDATE wp_posts SET guid = replace(guid, 'http://dev.mobidyc.net', 'http://www.mobidyc.net'); mysql> UPDATE wp_posts SET post_content = replace(post_content, 'http://dev.mobidyc.net', 'http://www.mobidyc.net'); mysql> UPDATE wp_anchors SET post_url = replace(post_url, 'http://dev.mobidyc.net', 'http://www.mobidyc.net'); mysql> UPDATE wp_posts SET pinged = replace(pinged, 'http://dev.mobidyc.net', 'http://www.mobidyc.net'); mysql> UPDATE wp_comments SET comment_author_url = replace(comment_author_url, 'http://dev.mobidyc.net', 'http://www.mobidyc.net'); mysql> UPDATE wp_options SET option_value = replace(option_value, '/var/www/thesite', '/var/www/newsite'); mysql> UPDATE wp_postmeta SET meta_value = replace(meta_value, '/var/www/thesite', '/var/www/newsite');
il reste à modifier la configuration de wordpress (remplacez OLD_BASE et NEW_BASE par VOS valeurs)
# sed -i "s@define('DB_NAME', 'OLD_BASE');@define('DB_NAME', 'NEW_BASE');@" /var/www/newsite/wp-config.php
comme j’aime bien automatiser, voici un script tout fait, pensez à bien
#!/bin/bash # connexion à mysql USERMYSQL=adminsql PASSWORDSQL=thepassword HOST=localhost # la source et destination de la base mysql SRCSQL=SOURCE_DB_NAME DSTSQL=DEST_DB_NAME # la source et destination du répertoire contenant wordpress SRCDIR=/home/mobidyc/dev_mobidyc DSTDIR=/home/mobidyc/www.mobidyc.net # l'ancien et nouveau domaine OLDFQDN=http://dev.mobidyc.net NEWFQDN=http://www.mobidyc.net [ -d "${DSTDIR}" ] && { echo "ERREUR: DESTINATION EXISTANTE" exit 1 } # copie du site de la source à la destination cd "${SRCDIR}" tar cvpf – . |gzip -c |(cd "${DSTDIR}" ; gunzip -d |tar xpf -) # Creation de la nouvelle base de données mysqladmin create $DESTSQL -u $USERMYSQL --password=$PASSWORDSQL # duplication de l'ancienne base sur la nouvelle mysqldump -u $USERMYSQL --password=$PASSWORDSQL $SRCSQL | mysql -u $USERMYSQL --password=$PASSWORDSQL -h $HOST $DSTSQL # on modifie les valeurs référence de l'ancien site dans la nouvelle base de donnée (dupliquée) de wordpress echo "UPDATE wp_options SET option_value = replace(option_value, '${OLDFQDN}', '${NEWFQDN}') WHERE option_name = 'home' OR option_name = 'siteurl';" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL echo "UPDATE wp_posts SET guid = replace(guid, '${OLDFQDN}', '${NEWFQDN}');" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL echo "UPDATE wp_posts SET post_content = replace(post_content, '${OLDFQDN}', '${NEWFQDN}');" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL echo "UPDATE wp_anchors SET post_url = replace(post_url, '${OLDFQDN}', '${NEWFQDN}');" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL echo "UPDATE wp_posts SET pinged = replace(pinged, '${OLDFQDN}', '${NEWFQDN}');" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL echo "UPDATE wp_comments SET comment_author_url = replace(comment_author_url, '${OLDFQDN}', '${NEWFQDN}');" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL echo "UPDATE wp_options SET option_value = replace(option_value, '${SRCDIR}', '${DSTDIR}');" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL echo "UPDATE wp_postmeta SET meta_value = replace(meta_value, '${SRCDIR}', '${DSTDIR}');" |mysql -u $USERMYSQL --password=$PASSWORDSQL $DSTSQL # on défini la nouvelle base à utiliser dans la conf de wordpress sed -i "s@define('DB_NAME', '${SRCSQL}');@define('DB_NAME', '${DSTSQL}');@" ${DSTDIR}/wp-config.php