Outils pour utilisateurs

Outils du site


wordpress:wordpress_clone_script

Ceci est une ancienne révision du document !


Script pour cloner une instance Wordpress

Information

Ce script permet de cloner une instance Wordpress, afin d'en avoir une copie de test (test de plugins, essai de thèmes, …). Elle ne sera accessible que depuis l'IP indiquée dans le script.

Une seconde base de données mysql doit être créée pour la nouvelle instance Wordpress, avec un second user.

Tout les plugins sont désactivés dans cette nouvelle instance. A vous de les réactiver un par un et corriger les éventuels problèmes de changement d'URL.

Les changements sont effectués en BDD et .htaccess pour faire fonctionner cette nouvelle instance, le fichier wp-config.php est modifié avec les nouvelles infos de BDD.

Script

#!/bin/bash

set +x

#================================= START CONFIG ===============================

#IP de filtrage pour connexion web
allow_ip="192.168.0.1"

#Dossier temporaire de travail où sera dumpé la BDD
tmp_dir="/tmp"

#Dossier d'origine wordpress
old_dir="/var/www/wordpress/"

#Infos BDD d'origine
old_mys_host="localhost"
old_mys_base="base1"
old_mys_user="user1"
old_mys_pass="pass1"

#Préfixe des noms de table en bdd, sous la forme "prefix_"
prefix="prefix_"



#Dossier d'arrivée du wordpress de test
new_dir="/var/www/wordpress-test/"

#Infos BDD d'arrivée
new_mys_host="localhost"
new_mys_base="base2"
new_mys_user="user2"
new_mys_pass="pass2"

#URL de la copie Wordpress
new_url="http://test.monsite.com"

#Nom du nouveau site
new_title="!!!!TEST!!!!"

#================================= END CONFIG =================================

#Nom des tables avec prefix
options_table=$prefix"options"

#Synchronisation du dossier de prod vers test
echo "Rsync en cours"
nice -n 19 rsync -a --delete --info=progress2 $old_dir $new_dir
echo "Fin de rsync"

#Configuration du .htaccess pour accès uniquement depuis une IP spécifique
echo "Restriction des acces"
echo "Require ip "$allow_ip >> $new_dir/.htaccess

#Backup BDD SQL Wordpress monsite.com
echo "Backup base"
mysqldump --user=${old_mys_user} --password=${old_mys_pass} ${old_mys_base} > $tmp_dir/migration.sql

#Import dans la nouvelle base
echo "Import dans la nouvelle base"
mysql --user=${new_mys_user} --password=${new_mys_pass} ${new_mys_base} < $tmp_dir/migration.sql

#Suppression du fichier de base de transition
echo "Suppression des fichiers temporaires"
rm $tmp_dir/migration.sql

#Mise à jour d'informations en nouvelle BDD
echo "MAJ des infos en BDD"
mysql --user=${new_mys_user} --password=${new_mys_pass} -e "UPDATE $options_table SET option_value = '$new_url' WHERE option_name = 'siteurl';" ${new_mys_base}
mysql --user=${new_mys_user} --password=${new_mys_pass} -e "UPDATE $options_table SET option_value = '$new_url' WHERE option_name = 'home';" ${new_mys_base}
mysql --user=${new_mys_user} --password=${new_mys_pass} -e "UPDATE $options_table SET option_value = '$new_title' WHERE option_name = 'blogname';" ${new_mys_base}

#Désactivgation des plugins wordpress en nouvelle BDD
echo "Desactivation des plugins" 
mysql --user=${new_mys_user} --password=${new_mys_pass} -e "UPDATE bg_wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';" ${new_mys_base}

#Modification du fichier de configuration du nouveau wordpress
echo "Correction du wp-config.php"
sed -i "s/('DB_NAME', '$old_mys_base')/('DB_NAME', '$new_mys_base')/g" $new_dir/wp-config.php
sed -i "s/('DB_USER', '$old_mys_user')/('DB_USER', '$new_mys_user')/g" $new_dir/wp-config.php
sed -i "s/('DB_PASSWORD', '$old_mys_pass')/('DB_PASSWORD', '$new_mys_pass')/g" $new_dir/wp-config.php

#Modification du .htaccess pour certain plugins
echo "Correction du .htaccess"
sed -i '/# BEGIN All In One WP Security/,/# END All In One WP Security/d' $new_dir.htaccess
sed -i '/# BEGIN HTTPS Redirection Plugin/,/# END HTTPS Redirection Plugin/d' $new_dir.htaccess

echo "Fin !"

wordpress/wordpress_clone_script.1513358057.txt.gz · Dernière modification : 2020/07/24 22:03 (modification externe)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki