Cloner WordPress sous Linux

Ce que vous allez créer

Dupliquer WordPress ne semble jamais facile

J'aime souvent lancer un nouveau site WordPress basé sur un site existant, en tant que modèle. Les configurations pour les thèmes, les plugins et les paramètres peuvent être très utiles pour commencer, par opposition à une installation propre où vous devez tout répéter depuis le début.

Lors de la création d’une image d’application à revendre chez Digital Ocean, j’ai exploré la construction d’un droplet WordPress installable, préconfiguré et pré-optimisé. Il s’agit essentiellement d’une image de Digital Ocean pouvant lancer un site WordPress entièrement chargé en quelques minutes. Mais le plus souvent, je veux ajouter un site WordPress à l'un de mes propres serveurs préexistants.

Il y a plusieurs façons de le faire, mais je trouve souvent qu'elles nécessitent une approche spécifique et détaillée que je semble devoir réapprendre à chaque fois. J'ai décidé qu'il était temps de créer un script shell Linux qui ferait tout en quelques minutes pour moi.. 

Dans ce tutoriel, je vais vous présenter mes recherches et le script de clonage obtenu pour WordPress. J'espère que vous l'aimez - je pensais que cela fonctionnait plutôt bien quand j'en avais fini.

Avant de commencer, rappelez-vous que j’essaie de participer aux discussions ci-dessous. Si vous avez une question ou une suggestion de sujet, veuillez poster un commentaire ci-dessous ou contactez-moi sur Twitter @reifman. Vous pouvez également m'envoyer un email directement. J'espère qu'un certain nombre d'entre vous auront de meilleures idées et améliorations pour ce script. J'apprécierais de vos nouvelles.

Autres approches de la migration de WordPress

Vous pouvez souvent démarrer un nouveau site Web en migrant un site existant vers un nouveau serveur, en le copiant essentiellement et en vous basant sur la copie tout en laissant le site source intact. Il y a un certain nombre d'approches à cette.

Dans Déplacement de WordPress vers un nouveau serveur de publication avec WordPress, j'ai écrit sur l'utilisation du plug-in Duplicator pour le faire, mais j'ai trouvé le processus fastidieux. Me familiariser avec Duplicator chaque fois que je dois déplacer un site a également été difficile. 

Récemment, j'ai écrit à ce sujet dans Sauvegarde et restauration de votre site WordPress avec CodeGuard pour Envato Tuts +. C'est un service qui facilite un peu ce processus. Et, bientôt, Comment simplifier la gestion de plusieurs sites WordPress sera publié, décrivant un certain nombre d'avantages puissants liés à l'utilisation de ManageWP. Il a une fonctionnalité de clonage mais nécessite FTP pour des raisons de sécurité, j'évite d'exécuter FTP sur mes serveurs.

Il existe également la série Envato Tuts + en deux parties de Rachel McCollin: Déplacement de WordPress: Introduction et déplacement de WordPress: utilisation de plug-ins pour déplacer votre site. Et il y a ce tutoriel chez WPBeginner qui utilise BackupBuddy. Enfin, WPClone ne nécessite pas de FTP mais nécessite une installation propre de WordPress pour pouvoir être construit.

Vous pouvez apprendre beaucoup de tous ces tutoriels et services, mais je voulais voir si je pouvais créer un script en ligne de commande qui clonait un site WordPress plus rapidement et plus facilement, à chaque fois..

Planifier le script

Pour écrire ce didacticiel, je me suis beaucoup appuyé sur les travaux antérieurs d'autres personnes pour améliorer mes connaissances des scripts bash et de la manipulation de sites WordPress. Je ne me suis jamais considéré comme un administrateur système expert en Linux. Finalement, j'ai décidé de construire mon script de clone sur le script d'installation WordPress Bash de Brian Gallagher. 

Remarque: Ce sont des scripts d'installation basés sur Debian; d'autres versions de Linux telles que RedHat et CentOS ont des chemins différents pour Apache et des utilitaires différents.

Voici la description de son script de base par Gallagher:

Téléchargements dernière version de WP, met à jour wp-config avec le nom de la base de données, le nom d'utilisateur et le mot de passe fournis par l'utilisateur, crée et le répertoire de téléchargement CHMOD, copie tous les fichiers dans le répertoire racine à partir duquel vous exécutez le script, puis se supprime!

Il y a beaucoup de script bien organisé ici pour commencer, mais je voulais faire quelque chose qui pourrait cloner un site actif. Passons en revue l'architecture d'une configuration typique de WordPress.

Les composants initiaux d'un site WordPress

Une installation typique de WordPress comprend quatre composants principaux pour le clonage:

  1. Arborescence du site 
  2. Base de données 
  3. Configuration du serveur Web, par exemple Fichier de configuration Apache
  4. Cartographie de domaine

Nous aurons également besoin des paramètres d’information, d’accès et de sécurité suivants:

  • Compte d'administration et mot de passe du serveur
  • Nom d'utilisateur et mot de passe du serveur MySql
  • Répertoire source du site
  • Fichier de configuration du serveur Web du site
  • Nom de la base de données, nom d'utilisateur et mot de passe

Voici ce que nous devrons spécifier pour le site cloné:

  • Répertoire cible du site cloné
  • Nom de la base de données clonée, nom d'utilisateur et mot de passe
  • Fichier de configuration du serveur Web des sites clonés

Ce que le script doit faire

  • Acquérir tous les paramètres via des variables de configuration ou une entrée utilisateur.
  • Copiez le répertoire du site et restaurez-le dans un répertoire cible..
  • Exporter la base de données source et l'importer dans une base de données cible.
  • Assurer les autorisations appropriées sur ces répertoires.
  • Copiez le fichier de configuration du serveur et mettez à jour les paramètres de domaine et de répertoire..
  • Recharger le serveur web.

Manuellement, nous devrons mettre à jour le DNS pour le nouveau domaine cible. Je recommande de créer des enregistrements DNS avant de commencer afin qu'ils soient prêts une fois votre site cloné. Rien de tel que le clonage d'un site et l'impossibilité de tester le nom de domaine car vous attendez le DNS.

L'approche du script de clonage

Nous sommes maintenant prêts à analyser le fonctionnement de l'architecture du script. Encore une fois, j'ai utilisé le script d'installation WordPress de Gallagher pour commencer, et vous avez besoin de cette ligne initiale bash:

#! / bin / bash -e # Cloner un site WordPress via le script Bash clear echo "=============================== =================== "echo" Script de clonage WordPress "echo" ==================== ============================== " 

Préparer vos paramètres DNS

Avant de dupliquer un site, vous devez configurer le DNS pour le site cloné. Vous pouvez en savoir plus sur la configuration DNS pour un nouveau site WordPress ici. Je suis également enthousiasmé par ce tutoriel Envato Tuts +, Introduction à l’apprentissage et à l’utilisation des enregistrements DNS..

Fondamentalement, vous devez créer un enregistrement A ou CNAME qui achemine votre URL de clonage souhaitée vers le serveur sur lequel nous dupliquons..

Définition des autorisations

Sur mon serveur, je crée un script bash appelé clonewp.sh. Il aura besoin d'autorisations exécutables:

chmod + x clonewp.sh

Ensuite, une fois terminé, vous pouvez le lancer comme ceci:

sudo bash clonewp.sh

Je recommande d'exécuter le script en tant que sudo afin d'éviter les problèmes d'autorisation de fichiers..

Définition des valeurs par défaut

À des fins de test, j'ai créé la possibilité de pré-charger le script avec les paramètres par défaut. Cela m'a aidé à passer à travers les tests à plusieurs reprises sans avoir à tout taper à maintes reprises. J'ai également pensé que cela pourrait être utile aux personnes qui souhaitent modifier le script ultérieurement ou l'utiliser d'une autre manière..

Voici tous les paramètres par défaut:

# Définir les paramètres par défaut (utile pour les tests) default_mysql_user = $ "root-admin" default_mysql_pass = $ "mot de passe super-fort" default_source_domain = $ "gardening.io" default_target_domain = $ "cycling.io" default_source_directory = $ "/ var / www / gardening "default_target_directory = $" / var / www / cycling "default_apache_directory = $" / etc / apache2 / sites-available "default_source_conf = $" gardening.conf "default_target_conf = $" cyclisme_conf "default_source_conf" default_source_dbname = "" entretenu " default_source_dbuser = $ "user_for_garden" default_source_dbpass = $ "pwd_garden" default_target_dbname = $ "cyclisme" default_target_dbuser = $ "user_for_cycling" default_target_dbpass = $ "pwd_cycling" NOW ") 

Je sais que cela semble beaucoup, mais j’ai trouvé utile de disposer d’un utilisateur principal et d’un mot de passe MySQL pour les sauvegardes, la création et l’import des bases de données. Cependant, il était également utile de disposer de l'utilisateur de la base de données spécifique au site et des mots de passe permettant de définir les privilèges de la base de données cible, ainsi que de rechercher et de remplacer le fichier wp-config.php. Cela rend le processus de clonage ultime très transparent.

J'ai utilisé l'horodatage NOW pour m'assurer que les archives que nous créons sont uniques..

Demander les paramètres

Le code suivant montre la valeur par défaut à l'utilisateur et lui permet de l'accepter (en appuyant sur Entrée) ou de le remplacer:

# Request Source Settings read -p "Domaine source (par exemple," $ default_source_domain "):" source_domain source_domain = $ domaine_source: - $ default_source_domain echo $ source_domaine read -p "Répertoire source (sans barre oblique de fin, par exemple" $ default_source_directory "): "source_directory source_directory = $ répertoire_source: - $ default_source_directory echo $ source_directory read -p" Nom de la base de données source (par exemple "$ default_source_dbname"): "source_dbname source_dbname = $ source_dbname: - $ default_source_base. Utilisateur de la base de données (par exemple "$ default_source_dbuser"): "source_dbuser source_dbuser = $ source_dbuser: - $ default_source_dbuser echo $ source_dbuser read -p" Source Database Pass (par exemple, "$ default_source_dbpass"): "source_dbpass source_dbpass = $ d default_source_dbpass echo $ source_dbpass # Demande Source Paramètres read -p "Fichier de configuration source (par exemple" $ default_source_conf "):" source_conf source_conf = $ source_conf: - $ default_source_conf echo $ source_conf # Request Targe t Paramètres read -p "Domaine cible (par exemple, "$ default_target_domain"): "target_domain target_domain = $ target_domain: - $ default_target_domain echo $ target_domain read -p" Répertoire cible (sans barre oblique, par exemple "$ default_target_directory"): "target_directory target_directory = name_directory: :_donnee_date echo $ target_directory read -p "Nom de la base de données cible (par exemple" $ default_target_dbname "):" target_dbname target_dbname = $ target_dbname: - $ default_target_dbname echo $ target_dbname read -p "Utilisateur de la base de données cible (par exemple," $ default_target_dbuser ") target_dbuser = $ target_dbuser: - $ default_target_dbuser echo $ target_dbuser read -p "Pass de la base de données cible (par exemple," $ default_target_dbpass "):" target_dbpass target_dbpass = $ target_dbpass: - $ default_target_dbpass echo $ cible_dbd (par exemple, "$ default_target_conf"): "target_conf target_conf = $ target_conf: - $ default_target_conf echo $ target_conf

Une fois que l'utilisateur a collecté tous les paramètres, nous lui demandons s'il souhaite commencer:

echo "Cloner maintenant? (y / n)" read -e run if ["$ run" == n]; puis quittez echo "=========================================== ====== "echo" Le clonage de WordPress commence "echo" ================================= ================= " 

Copier l'arborescence

Maintenant, les choses avancent un peu plus vite. Nous créons des archives du site source, créons un répertoire cible et extrayons l'archive ici:

#backup source_directory cd $ source_directory # ajoutez l'option -v à celles-ci si vous voulez voir des listes de fichiers détaillées tar -czf source_clone_ $ NOW.tar.gz. #unzip clone dans le répertoire cible mkdir -p $ target_directory tar -xzf source_clone_ $ NOW.tar.gz -C $ target_directory #remove d'archive de la source rm source_clone_ $ NOW.tar.gz cd $ target_directory 

Nous exécutons également les autorisations de fichier standard pour WordPress afin de nous assurer que tout est configuré correctement et en toute sécurité:

# Réinitialiser les autorisations du répertoire find $ répertoire_cible -type d -exec chmod 755  \; find $ répertoire_cible -type f -exec chmod 644  \; 

Mettre à jour le fichier WP-Config

Ensuite, nous utilisons perl pour rechercher et remplacer l'authentification de la base de données source par les informations de la base de données de destination:

#set les détails de la base de données avec perl trouver et remplacer perl -pi -e "s / $ nom_bdd source / $ nom_bdd cible / g" wp-config.php perl -pi -e "s / $ source_dbuser / $ target_dbuser / g" wp-config. php perl -pi -e "s / $ source_dbpass / $ cible_dbpass / g" wp-config.php echo "define ('RELOCATE', true);" | tee -a wp-config.php #echo "define ('WP_HOME', 'http: // $ target_domain');" | tee -a wp-config.php #echo "define ('WP_SITEURL', 'http: // $ target_domain');" | tee -a wp-config.php echo "================================" echo "Répertoire dupliqué" echo " ================================ "

J'ajoute aussi le Relocaliser mise à la fin du fichier. Si vous aimez, vous pouvez le remplacer par statique WP_HOME et WP_SITEURL réglages.

Copier la base de données

Ensuite, nous vidons la base de données, créons une nouvelle base de données avec les autorisations fournies par l'utilisateur, puis importons la base de données dans celle-ci:

# Commencez la duplication de la base de données # Exportez la base de données mysqldump -u $ mysql_user -p $ mysql_pass $ nom_source> source_directory / clone_ $ NOW.sql # Créez la base de données cible et les autorisations mysql -u $ mysql_user -p $ mysql_pass -e "create database" target_dbname; GRANT TOUS LES PRIVILÈGES SUR $ target_dbname. * TO '$ target_dbuser' @ 'localhost' IDENTIFIED BY '$ target_dbpass' "# Importe la base de données source dans la cible mysql -u $ mysql_user -p $ mysql_pass $ target_dqname < $target_directory/clone_$NOW.sql echo "================================" echo "Database duplicated" echo "================================" 

Encore une fois, il m'a semblé préférable d'utiliser l'authentification principale de MySQL pour ces activités lors de la configuration des paramètres de base de données en fonction des paramètres de site source et de clonage d'un site.

Copier la configuration du serveur Web

Enfin, nous sommes prêts à conclure et à appuyer sur le bouton de lancement. Il est rare que ces types de scripts gèrent l'étape supplémentaire de configuration du serveur Web. Donc, je voulais faire ça aussi.

J'ai copié le fichier .conf Apache du site source dans un nouveau fichier .conf pour le clone. J'ai utilisé Perl pour une chaîne de remplacement pour les domaines et les chemins de répertoire. Ensuite, j'ai activé le site avec Apache et rechargé le serveur Web:

#Activer la configuration Web cp $ répertoire_para_de_façon / $ source_conf $ répertoire_de_Apache_parfait / $ target_conf #set les détails de la base de données avec perl trouver et remplacer le perl -pi -e "s / $ domaine_source / cible_domaine / g" $ default_apache_directory / $ target_conf_perl -pi "s | $ répertoire_source | $ répertoire_cible | g" $ répertoire_défaut_apache / $ cible_conf a2ensite $ service apache2 de cible_conf recharger echo "=========================== ========== "echo" Configuration Web ajoutée "echo" =============================== = "echo" Le clone est terminé. " echo "Testez à http: //" $ target_domain echo "===============================" fi

Et c'est tout. Voici à quoi ressemble une analyse du script dans la vie réelle:

=============================================== = Cloner le script WordPress ============================================ ===== Nom d'utilisateur MySQL Master (par exemple, root-admin): harry_potter harry_potter Mot de passe MySQL Master (par exemple, mot de passe super-fort): voldemoort ~ jenny7! voldemoort ~ jenny7! Domaine source (par exemple, jardinage.io): répertoire de jardinage.io (pas de barre oblique, par exemple, / var / www / jardinage): / var / www / gardening Nom de la base de données source (par exemple, jardinage): database_gardening database_gardening Utilisateur de la base de données (par exemple, utilisateur_pour_garden) Pass: base de données source hermione hermione (par exemple pwd_garden):! 987654321abcdefgh #! 987654321abcdefgh # Fichier de configuration source (par exemple, gardening.conf): gardening.conf gardening.conf Domaine cible (p.ex. cyclage.io): cyclisme.io Répertoire cible (cyclisme.io) barre oblique, par exemple / var / www / cyclisme): / var / www / cyclisme / var / www / cyclisme Nom de la base de données cible (par exemple, cycliste): database_cycling database_cycling Utilisateur de la base de données cible (par exemple, user_for_cycling): hedwig hedwig Pass de base de données cible (par exemple, pwd_cycling): pwd_for_cycling_not_hogwartz Fichier Conf. cible (par exemple, cyclisme.conf): 0007b-cyclisme.conf 0007b-cyclisme.conf Cloner maintenant? (y / n) y =========================================== ======= Le clonage de WordPress commence ====================================== ============ tar:.: le fichier a été modifié au fur et à mesure que nous le lisons define ('RELOCATE', true); =============================== Répertoire dupliqué =============== =============================================== Base de données dupliquée ================================ Activation du site 0007b-cyclisme. Pour activer la nouvelle configuration, vous devez exécuter: service apache2 reload * Rechargement du serveur Web apache2 * ============================= == Configuration Web ajoutée ================================= Le clonage est terminé. Testez à http://cycling.io ================================

Sur mes petits sites WordPress, la duplication n'a pris que 30 à 90 secondes!

Petits caractères

Il y a quelques autres choses que vous devez savoir.

Chemin de connexion directe au début

Tout d'abord, pour vous connecter à votre site cloné, vous devez utiliser le chemin wp-login.php plutôt que wp-admin, qui redirige vers l'URL du site source, par exemple. http://clone.io/wp-login.php comme indiqué ci-dessous:

Changer de domaine

Depuis que WordPress code une grande partie de votre domaine source dans la base de données, j'ai découvert qu'en utilisant le Relocaliser le paramétrage dans wp-config.php facilite la mise à jour par le biais de Général> Paramètres. Vous venez de sauvegarder le formulaire avec la nouvelle URL de destination:

Une fois que vous avez enregistré l'URL cible clonée, vous pouvez supprimer le Relocaliser configuration de wp-config.php manuellement.

Cependant, un collègue suggère que vous souhaitiez utiliser un outil tel que la recherche et le remplacement des bases de données WordPress d'InterconnectIT. Il a également été documenté sur Envato Tuts + dans Migration de WordPress sur des hôtes, des serveurs et des URL..  

Le script final

Voici le script final pour wpclone.sh-feel gratuit pour changer les valeurs par défaut:

#! / bin / bash -e # Cloner un site WordPress via le script Bash clear echo "=============================== =================== "echo" Script de clonage WordPress "echo" ==================== ============================ "Définir les paramètres par défaut (utile pour les tests) default_mysql_user = $" root-admin "default_mysql_pass = $ "mot de passe super-fort" default_source_domain = $ "gardening.io" default_target_domain = $ "cyclisme.io" default_source_directory = $ "/ var / www / gardening" default_target_directory = $ "/ var / www / cycling" default_apache_directory = $ " / etc / apache2 / sites-available "default_source_conf = $" gardening.conf "default_target_conf = $" cyclo.conf "default_source_dbname = $" gardening "default_source_dbuser = $" user_for_garden "default_source_dbpass = $" pwd_site ". = $ "user_for_cycling" default_target_dbpass = $ "pwd_cycling" NOW = $ (date + "% Y-% m-% d-% H% M") #Request Admin MySQL en lecture -p "Nom d'utilisateur principal de MySQL (par exemple," $ default_mysql_user " ): "mysql_user mysql_user = $ mysql_user : - $ default_mysql_user echo $ mysql_user read -p "Mot de passe maître MySQL (par exemple, "$ default_mysql_pass"): "mysql_pass mysql_pass = $ mysql_pass: - $ default_mysql_pass echo $ mysql_pass # Demande les paramètres source read -p" Domaine source (par exemple, "$ default_source_domain"): "source_domain source__domaine source_ $ domaine_dernier:"  echo $ source_domain read -p "Répertoire source (pas de barre oblique finale, par exemple" $ répertoire_source_par défaut "):" répertoire_source répertoire_source = $ répertoire_source: $ $ répertoire_source_de_source répertoire_source_lecture "-p" : "source_dbname source_dbname = $ source_dbname: - $ default_nom_source echo $ source_dbname read -p" Utilisateur de base de données source (par exemple "$ default_source_dbuser"): "source_dbuser source_dbuser = $ source_dbuser: $ default_dbuser Passeport de base de données source (par exemple "$ default_source_dbpass"): "source_dbpass source_dbpass = $ source_dbpass: - $ default_source_dbpass echo $ source_dbpass # Request Source Settings read -p" Fichier de config source (par exemple "$ default_source_conf "):" source_conf source_conf = $ source_conf: - $ default_source_conf echo $ source_conf # Demander les paramètres de cible lus -p "Domaine cible (par exemple. "$ default_target_domain"): "target_domain target_domain = $ target_domain: - $ default_target_domain echo $ target_domain read -p" Répertoire cible (sans barre oblique, par exemple "$ default_target_directory"): "target_directory target_directory = name_directory: :_donnee_date echo $ target_directory read -p "Nom de la base de données cible (par exemple" $ default_target_dbname "):" target_dbname target_dbname = $ target_dbname: - $ default_target_dbname echo $ target_dbname read -p "Utilisateur de la base de données cible (par exemple," $ default_target_dbuser ") target_dbuser = $ target_dbuser: - $ default_target_dbuser echo $ target_dbuser read -p "Pass de la base de données cible (par exemple," $ default_target_dbpass "):" target_dbpass target_dbpass = $ target_dbpass: - $ default_target_dbpass echo $ cible_dbd (par exemple, "$ default_target_conf"): "target_conf target_conf = $ target_conf: - $ default_target_conf echo $ target_conf echo" Cloner maintenant? (y / n) "read -e run if [" $ run "== n]; quitte alors else echo" ======================== ========================== "echo" Le clonage de WordPress commence "echo" ============= ==================================== "#backup source_directory cd $ source_directory # option add -v à ceux-ci si vous voulez voir des listes de fichiers détaillées tar -czf source_clone_ $ NOW.tar.gz. #unzip clone dans le répertoire cible mkdir -p $ répertoire_cible tar -xzf source_clone_ $ NOW.tar.gz -C $ répertoire_détecteur # cible source rm source_clone_ $ NOW.tar.gz cd $ target_directory # Réinitialisation des autorisations de répertoire find $ répertoire_ target -type d -exec chmod 755  \; find $ répertoire_directory_type f -exec chmod 644  \; #etablir les details de la base de données avec perl recherchez et remplacez perl -pi -e "s / $ nom_bdd source / $ nom_bdd_objectif / g" wp-config.php perl -pi -e "s / $ source_dbuser / $ target_dbuser / g" wp-config.php perl -pi -e "s / $ source_dbpass / $ cible_dbpass / g" wp-config.php echo "define ('RELOCATE', true);" | tee -a wp-config.php #echo "define ('WP_HOME', ' http: // $ target_domain '); "| tee -a wp-config.php #echo "define ('WP_SITEURL', 'http: // $ target_domain');" | tee -a wp-config.php echo "================================" echo "Répertoire dupliqué" echo " ============================== "# Commencez la duplication de la base de données # Exportez la base de données mysqldump -u $ mysql_user -p $ mysql_pass $ source_dbname> $ target_directory / clone_ $ NOW.sql # Créer la base de données cible et les autorisations mysql -u $ mysql_user -p $ mysql_pass -e "créer la base de données $ target_dbname; DONNER TOUT PRIVILÈGES À $ target_dbname. * TO '$ target_dbuser' @ ' localhost 'IDENTIFIED BY' $ target_dbpass '"# Importe la base de données source dans la cible mysql -u $ mysql_user -p $ mysql_pass $ target_dbname < $target_directory/clone_$NOW.sql echo "================================" echo "Database duplicated" echo "================================" #Activate Web Configuration cp $default_apache_directory/$source_conf $default_apache_directory/$target_conf #set database details with perl find and replace perl -pi -e "s/$source_domain/$target_domain/g" $default_apache_directory/$target_conf perl -pi -e "s|$source_directory|$target_directory|g" $default_apache_directory/$target_conf a2ensite $target_conf service apache2 reload echo "================================" echo "Web configuration added" echo "================================" echo "Clone is complete." echo "Test at http://"$target_domain echo "================================" fi

Si vous avez des suggestions et des personnalisations, merci de me le faire savoir. Postez vos pensées ci-dessous dans les commentaires.

Nettoyage pour tests étendus

Les lignes suivantes peuvent vous être utiles pour supprimer et annuler des sites de test que vous clonez. Vous pouvez le personnaliser selon vos besoins:

 sudo rm -ifr / var / www / clone sudo a2dissite clone.conf service sudo apache2 recharge sudo rm /etc/apache2/sites-available/clone.conf mysql -u racine -p -e "drop database clone;"

Changer les clés de sécurité dans Wp-Config.php

Vous pouvez également mieux sécuriser votre nouveau site WordPress en remplaçant manuellement les clés d'authentification et les sels dans le fichier de destination wp-config.php:

/ ** # @ + * Authentification Clés et sels uniques. * * Changez-les en différentes phrases uniques! * Vous pouvez les générer à l'aide du @link https://api.wordpress.org/secret-key/1.1/salt/ service de clé secrète WordPress.org *. Vous pouvez les modifier à tout moment pour invalider toutes les informations existantes. biscuits. Cela obligera tous les utilisateurs à se reconnecter. * * @ depuis 2.6.0 * / define ('AUTH_KEY', '+ 9% S? YVnr% 5Vr! Et4J, @ 9 / Z ^ .kT_Lu ~ 5SGwr9 = | Y & D-ARSWf $ mF # J_3U: / iE> -R '); define ('SECURE_AUTH_KEY', 'e3Wr7% Aa7H1, f:! 5 @ y: Q; c01dL '); define ('LOGGED_IN_KEY', '1I% pW% UyjRMqy__Da) siA) + V] Ur $ 9uXPmxv | eBjM ~ -m &-9kC<%59rB7sbe1)jW0GCnfupJT+8z-z#%o@b|[QH=i@h|-/t!9S'); define('SECURE_AUTH_SALT', 'ON8K<,WSy8+F ~XaQpCwC8(a/HksMhZIo |% | cisp1R 9cJ< Rz-J;H|:O2A7$+*aGXMH!+KvD+tZ/I*U5$'); define('NONCE_SALT', '[ytQ;C)BvgU!#>a ,, g |) ~ EKBQUig7Uv.-8? q% lmFte, P>,] f #. i'Wx8S + _S @ &. ('); / ** # @ - * /

Vous pouvez simplement visiter https://api.wordpress.org/secret-key/1.1/salt/ et les copier-coller dans votre fichier wp-config.php:

Maintenant, si vous êtes un puriste de scripts Linux, je vous laisserai mettre à jour le script d’installation WordPress Bash de Gallagher. Son script copié sur le WordPress wp-config.php par défaut afin qu'il ait des chaînes source prévisibles à remplacer par des clés que son script a généré:

#set WP sels perl -i -pe 'BEGIN @chars = ("a"… "z", "A" ... "Z", 0 ... 9); push @chars, split //, "! @ # $% ^ & * () -_ []  <> ~ \ '+ = ,.;: /? |"; sub salt join "", map $ chars [rand @chars], 1… 64 s / mettez votre phrase unique ici / salt () / ge 'wp-config.php

Je n'ai jamais écrit de regex pour remplacer les valeurs de clé dans les fichiers dynamiques préexistants wp-config.php de nos sites sources. Si vous en décidez, merci de le partager dans les commentaires et merci d'avance.

Des questions?

J'ai beaucoup aimé faire fonctionner ce script. Ou, je devrais au moins dire que j'aimais le lancer quand j'avais fini. J'aurais aimé l'avoir créé il y a longtemps, car il est incroyablement efficace et performant. Je pourrais cloner de petits sites WordPress et les faire fonctionner sur mon serveur en environ 60 secondes. Aucun des autres plugins ou options de duplication n'est aussi transparent.

Si vous avez des questions, merci de les poster ci-dessous. Ou bien, vous pouvez me contacter sur Twitter @reifman ou m'envoyer un email directement. S'il vous plaît consulter ma page d'instructeur Envato Tuts + pour voir d'autres tutoriels que j'ai écrits, tels que ma série de démarrage (Construire votre démarrage avec PHP).

Liens connexes

  • WordPress Bash Installer Script de Brian Gallagher
  • Déplacement de WordPress
  • Un script shell pour une sauvegarde complète de WordPress par Konstantin Kovshenin
  • Plugins WordPress disponibles sur CodeCanyon