wordpress:wordpress_clone_script
Ceci est une ancienne révision du document !
Table des matières
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 baka-gamer.net 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.1487885526.txt.gz · Dernière modification : 2020/07/24 22:03 (modification externe)