Maison >Tutoriel CMS >WordPresse >Cloner WordPress sous Linux

Cloner WordPress sous Linux

王林
王林original
2023-09-03 08:25:06816parcourir

Cloner WordPress sous Linux

Copier WordPress n'a jamais semblé aussi simple

J'aime souvent lancer un nouveau site Web WordPress basé sur un site Web existant comme modèle. La configuration des thèmes, des plugins et des paramètres est utile dès le début, contrairement à une nouvelle installation où vous devez tout répéter à partir de zéro.

Dans Création d'une image d'application pour la revente sur Digital Ocean, je détaille le processus de création d'un droplet WordPress installable, préconfiguré et pré-optimisé. Il s’agit essentiellement d’un océan numérique d’images qui permet de lancer un site Web WordPress entièrement chargé en quelques minutes. Le plus souvent, cependant, je souhaite ajouter un site Web WordPress à l’un de mes propres serveurs existants.

Il existe de nombreuses façons de procéder, mais je trouve souvent qu'elles nécessitent une approche spécifique et détaillée qu'il me semble devoir réapprendre à chaque fois. J'ai décidé qu'il était temps d'écrire un script shell Linux qui ferait tout le travail à ma place en quelques minutes.

Dans ce tutoriel, je vais vous guider à travers mes recherches et le script de clonage WordPress généré. J'espère que vous l'aimerez - quand je l'ai terminé, j'ai trouvé que cela fonctionnait plutôt bien.

Avant de commencer, n'oubliez pas que j'essaie de participer à la discussion ci-dessous. Si vous avez des questions ou des suggestions de sujets, veuillez laisser un commentaire ci-dessous ou contactez-moi sur Twitter @reifman. Vous pouvez également m'envoyer un email directement. J'espère que beaucoup d'entre vous auront de meilleures idées et améliorations à apporter à ce script. Je suis heureux d'avoir de vos nouvelles.

Autres méthodes de migration WordPress

En règle générale, vous pouvez lancer un nouveau site Web en migrant votre site Web existant vers un nouveau serveur (essentiellement en le copiant) et en vous appuyant sur la copie tout en conservant le site Web source intact. Il existe plusieurs façons d'y parvenir.

Dans Migration de WordPress vers une nouvelle version de serveur avec WordPress, j'ai écrit sur l'utilisation du plugin Duplicator pour ce faire, mais j'ai trouvé le processus fastidieux. Il était également difficile de me familiariser à nouveau avec le réplicateur à chaque fois que je devais déplacer le site.

J'ai récemment écrit à ce sujet dans Sauvegarde et restauration de votre site WordPress avec CodeGuard pour Envato Tuts+ . Ce service facilite le processus. Bientôt, nous publierons Comment simplifier la gestion de plusieurs sites Web WordPress , qui décrit les nombreux avantages puissants de l'utilisation de ManageWP. Il possède des capacités de clonage, mais nécessite FTP. J'évite d'exécuter FTP sur mon serveur pour des raisons de sécurité.

Également avec la série Envato Tuts+ en deux parties de Rachel McCollin : WordPress mobile : une introduction et WordPress mobile : déplacer votre site Web avec des plugins. Il existe un didacticiel sur l'utilisation de BackupBuddy sur WPBeginner. Enfin, WPClone ne nécessite pas FTP, mais nécessite une nouvelle installation de WordPress pour être construit.

Vous pouvez apprendre beaucoup de tous ces tutoriels et services, mais je voulais voir si je pouvais créer un script de ligne de commande qui rendrait le clonage d'un site WordPress plus rapide et plus facile à chaque fois.

Script de planification

Pour écrire ce tutoriel, je me suis largement appuyé sur les travaux antérieurs d’autres personnes pour me familiariser avec les scripts bash et les opérations du site Web WordPress. Je ne me suis jamais considéré comme un administrateur système Linux professionnel. En fin de compte, j'ai décidé de créer mon script de clonage sur le script d'installation WordPress Bash de Brian Gallagher.

Remarque : Il s'agit de 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 différents utilitaires.

Voici la description par Gallagher de son script de base :

Téléchargez la dernière version de WP, mettez à 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éez et CHMOD le répertoire de téléchargement, copiez tous les fichiers dans le répertoire racine où le script est en cours d'exécution, puis supprimez-le !

Il existe de nombreux scripts bien organisés, mais je voulais créer quelque chose qui clonerait un site en direct. Passons en revue l’architecture d’une configuration WordPress typique.

Composants initiaux d'un site WordPress

Une installation WordPress typique comporte quatre composants principaux pour le clonage :

  1. Arborescence du répertoire du site
  2. Base de données
  3. Configuration du serveur Web, telle que le fichier de configuration Apache
  4. Cartographie de domaine

Nous avons également besoin d'informations, de droits d'accès et de paramètres de sécurité :

  • Comptes et mots de passe de gestion du serveur
  • Nom d'utilisateur et mot de passe du serveur MySQL
  • Annuaire source du site
  • fichier de configuration du serveur Web pour le site Web
  • Nom de la base de données, nom d'utilisateur et mot de passe

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

  • Cloner le répertoire cible du site
  • Cloner le nom, le nom d'utilisateur et le mot de passe de la base de données
  • Cloner le fichier de configuration du serveur Web d'un site Web

Ce que le script doit faire

  • Obtenez tous les paramètres via des variables de configuration ou une entrée utilisateur.
  • Copiez le répertoire du site Web et restaurez-le dans le répertoire cible.
  • Exportez la base de données source et importez-la dans la base de données cible.
  • Assurez-vous que ces répertoires disposent des autorisations appropriées.

  • Copiez les fichiers de configuration du serveur et mettez à jour les paramètres de domaine et de répertoire.
  • Rechargez le serveur Web.

Nous devons mettre à jour manuellement le DNS du nouveau domaine cible. Je vous recommande de créer des enregistrements DNS avant de commencer afin qu'ils soient prêts à être utilisés une fois que vous aurez cloné votre site Web. Il n'y a rien de mieux que de cloner votre site et de ne pas pouvoir tester le nom de domaine car vous attendez le DNS.

Comment implémenter le script de clonage

Maintenant, nous sommes prêts à expliquer le fonctionnement de l'architecture du script. Encore une fois, j'ai commencé par utiliser le script d'installation WordPress de Gallagher, et vous avez besoin de la ligne bash initiale en haut :

#!/bin/bash -e
# Clone a WordPress site via Bash script
clear
echo "==================================================="
echo "Clone WordPress Script"
echo "==================================================="

Préparez vos paramètres DNS

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

Fondamentalement, vous devez créer un enregistrement A ou CNAME qui achemine l'URL de clonage souhaitée vers le serveur que nous répliquons.

Définir les autorisations

Sur mon serveur, je crée un script bash appelé clnewp.sh. Cela nécessitera des autorisations exécutables :

chmod +x clonewp.sh

Ensuite, une fois terminé, vous pouvez l'exécuter comme ceci :

sudo bash clonewp.sh

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

Définir la valeur par défaut

À des fins de tests, j'ai créé une fonction qui précharge les scripts avec les paramètres par défaut. Cela m'aide à exécuter des tests encore et encore sans avoir à tout saisir encore et encore. Je pense également que cela pourrait être utile à quiconque souhaite modifier le script ou l'utiliser d'une autre manière à l'avenir.

Voici tous les paramètres par défaut :

# Set Default Settings (helpful for testing)
default_mysql_user=$"root-admin"
default_mysql_pass=$"super-strong-password"
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=$"cycling.conf"
default_source_dbname=$"gardening"
default_source_dbuser=$"user_for_garden"
default_source_dbpass=$"pwd_garden"
default_target_dbname=$"cycling"
default_target_dbuser=$"user_for_cycling"
default_target_dbpass=$"pwd_cycling"
NOW=$(date +"%Y-%m-%d-%H%M")

Je sais que cela semble beaucoup, mais je trouve utile d'avoir un utilisateur principal MySQL et un mot de passe pour les sauvegardes, la création et les importations de bases de données. Cependant, il est également utile d'avoir un utilisateur et un mot de passe de base de données spécifiques au site pour définir les autorisations de la base de données cible et rechercher et remplacer dans le fichier wp-config.php. Cela rend le processus de clonage final très transparent.

J'utilise les horodatages NOW pour m'assurer que les archives que nous créons sont uniques.

Paramètres de demande

Le code suivant affiche une valeur par défaut à l'utilisateur et lui permet de l'accepter (appuyez sur entrée) ou de la remplacer :

# Request Source Settings
read -p "Source Domain (e.g. "$default_source_domain"): " source_domain
source_domain=${source_domain:-$default_source_domain}
echo $source_domain
read -p "Source Directory (no trailing slash e.g. "$default_source_directory"): " source_directory
source_directory=${source_directory:-$default_source_directory}
echo $source_directory
read -p "Source Database Name (e.g. "$default_source_dbname"): " source_dbname
source_dbname=${source_dbname:-$default_source_dbname}
echo $source_dbname
read -p "Source Database User (e.g. "$default_source_dbuser"): " source_dbuser
source_dbuser=${source_dbuser:-$default_source_dbuser}
echo $source_dbuser
read -p "Source Database Pass (e.g. "$default_source_dbpass"): " source_dbpass
source_dbpass=${source_dbpass:-$default_source_dbpass}
echo $source_dbpass
# Request Source Settings
read -p "Source Conf File (e.g. "$default_source_conf"): " source_conf
source_conf=${source_conf:-$default_source_conf}
echo $source_conf
# Request Target Settings
read -p "Target Domain (e.g. "$default_target_domain"): " target_domain
target_domain=${target_domain:-$default_target_domain}
echo $target_domain
read -p "Target Directory (no trailing slash e.g. "$default_target_directory"): " target_directory
target_directory=${target_directory:-$default_target_directory}
echo $target_directory
read -p "Target Database Name (e.g. "$default_target_dbname"): " target_dbname
target_dbname=${target_dbname:-$default_target_dbname}
echo $target_dbname
read -p "Target Database User (e.g. "$default_target_dbuser"): " target_dbuser
target_dbuser=${target_dbuser:-$default_target_dbuser}
echo $target_dbuser
read -p "Target Database Pass (e.g. "$default_target_dbpass"): " target_dbpass
target_dbpass=${target_dbpass:-$default_target_dbpass}
echo $target_dbpass
read -p "Target Conf File (e.g. "$default_target_conf"): " target_conf
target_conf=${target_conf:-$default_target_conf}
echo $target_conf

Une fois que nous avons collecté tous les paramètres de l'utilisateur, nous lui demandons s'il souhaite se lancer :

echo "Clone now? (y/n)"
read -e run
if [ "$run" == n ] ; then
exit
else
echo "==================================================="
echo "WordPress Cloning is Beginning"
echo "==================================================="

Copier l'arborescence des répertoires

Les choses avancent plus vite maintenant. Nous créons une archive tar du site source, créons le répertoire cible et y extrayons l'archive tar :

#backup source_directory
cd $source_directory
# add -v option to these if you want to see verbose file listings
tar -czf source_clone_$NOW.tar.gz .
#unzip clone in target directory
mkdir -p $target_directory
tar -xzf source_clone_$NOW.tar.gz -C $target_directory
#remove tarball of source
rm source_clone_$NOW.tar.gz
cd $target_directory

Nous exécutons également les autorisations de fichiers standard de WordPress pour nous assurer que tout est correctement configuré et sécurisé :

# Reset Directory Permissions
find $target_directory -type d -exec chmod 755 {} \;
find $target_directory -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 cible :

#set database details with perl find and replace
perl -pi -e "s/$source_dbname/$target_dbname/g" wp-config.php
perl -pi -e "s/$source_dbuser/$target_dbuser/g" wp-config.php
perl -pi -e "s/$source_dbpass/$target_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 "Directory duplicated"
echo "================================"

Je vais aussi RELOCATE 设置添加到文件末尾。如果您愿意,可以将其替换为静态 WP_HOMEWP_SITEURL l'installer.

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 et y importons la base de données :

# Begin Database Duplication
# Export the database
mysqldump -u$mysql_user -p$mysql_pass $source_dbname > $target_directory/clone_$NOW.sql
# Create the target database and permissions
mysql -u$mysql_user -p$mysql_pass -e "create database $target_dbname; GRANT ALL PRIVILEGES ON $target_dbname.* TO '$target_dbuser'@'localhost' IDENTIFIED BY '$target_dbpass'"
# Import the source database into the target
mysql -u$mysql_user -p$mysql_pass $target_dbname < $target_directory/clone_$NOW.sql
echo "================================"
echo "Database duplicated"
echo "================================"

Encore une fois, je trouve préférable d'utiliser l'authentification MySQL primaire pour ces activités tout en configurant les paramètres de la base de données en fonction du site source et des paramètres de clonage d'un site unique.

Copier la configuration du serveur Web

Enfin, nous sommes prêts à conclure et à appuyer sur le bouton Démarrer. Je vois rarement de tels scripts franchir une étape supplémentaire consistant à gérer la configuration d'un serveur Web. Donc je veux faire ça aussi.

J'ai copié le fichier Apache .conf du site source dans le nouveau fichier .conf cloné. J'utilise Perl pour remplacer les chaînes des chemins de domaine et de répertoire. J'ai ensuite activé le site via Apache et rechargé le serveur web :

#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

Et c’est tout. Voici comment le script fonctionne dans la vraie vie :

===================================================
Clone WordPress Script
===================================================
MySQL Master Username (e.g. root-admin): harry_potter
harry_potter
MySQL Master Password (e.g. super-strong-password): voldemoort~jenny7!
voldemoort~jenny7!
Source Domain (e.g. gardening.io): 
gardening.io
Source Directory (no trailing slash e.g. /var/www/gardening): 
/var/www/gardening
Source Database Name (e.g. gardening): database_gardening
database_gardening
Source Database User (e.g. user_for_garden): hermione
hermione
Source Database Pass (e.g. pwd_garden): !987654321abcdefgh#
!987654321abcdefgh#
Source Conf File (e.g. gardening.conf): gardening.conf
gardening.conf
Target Domain (e.g. cycling.io): 
cycling.io
Target Directory (no trailing slash e.g. /var/www/cycling): /var/www/cycling
/var/www/cycling
Target Database Name (e.g. cycling): database_cycling
database_cycling
Target Database User (e.g. user_for_cycling): hedwig
hedwig
Target Database Pass (e.g. pwd_cycling): 
pwd_for_cycling_not_hogwartz
Target Conf File (e.g. cycling.conf): 0007b-cycling.conf               
0007b-cycling.conf
Clone now? (y/n)
y
===================================================
WordPress Cloning is Beginning
===================================================
tar: .: file changed as we read it
define('RELOCATE',true);
================================
Directory duplicated
================================
================================
Database duplicated
================================
Enabling site 0007b-cycling.
To activate the new configuration, you need to run:
  service apache2 reload
 * Reloading web server apache2                                                                                     * 
================================
Web configuration added
================================
Clone is complete.
Test at http://cycling.io
================================

Sur mon petit site WordPress, la copie ne prend que 30 à 90 secondes !

Impression exquise

Il y a d'autres choses que vous devez savoir.

Connectez-vous d'abord directement

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

Cloner WordPress sous Linux

Changer de nom de domaine

Étant donné que WordPress code en dur la plupart des domaines sources de la base de données, j'ai constaté que l'utilisation des paramètres RELOCATE dans wp-config.php peut être facilement mise à jour via Général > Paramètres. Enregistrez simplement le formulaire avec votre nouvelle URL de destination :

Cloner WordPress sous Linux

Après avoir enregistré l'URL cible clonée, vous pouvez supprimer RELOCATE settings-config.php de wp manuellement.

但是,一位同事建议您可能需要使用 InterconnectIT 的 WordPress 数据库搜索和替换等工具。 Envato Tuts+ 中的“跨主机、服务器和 URL 迁移 WordPress”中也对此进行了记录。

最终脚本

这是 wpclone.sh 的最终脚本 - 请随意更改默认值:

#!/bin/bash -e
# Clone a WordPress site via Bash script
clear
echo "==================================================="
echo "Clone WordPress Script"
echo "==================================================="
# Set Default Settings (helpful for testing)
default_mysql_user=$"root-admin"
default_mysql_pass=$"super-strong-password"
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=$"cycling.conf"
default_source_dbname=$"gardening"
default_source_dbuser=$"user_for_garden"
default_source_dbpass=$"pwd_garden"
default_target_dbname=$"cycling"
default_target_dbuser=$"user_for_cycling"
default_target_dbpass=$"pwd_cycling"
NOW=$(date +"%Y-%m-%d-%H%M")

#Request MySQL Admin
read -p "MySQL Master Username (e.g. "$default_mysql_user"): " mysql_user
mysql_user=${mysql_user:-$default_mysql_user}
echo $mysql_user
read -p "MySQL Master Password (e.g. "$default_mysql_pass"): " mysql_pass
mysql_pass=${mysql_pass:-$default_mysql_pass}
echo $mysql_pass

# Request Source Settings
read -p "Source Domain (e.g. "$default_source_domain"): " source_domain
source_domain=${source_domain:-$default_source_domain}
echo $source_domain
read -p "Source Directory (no trailing slash e.g. "$default_source_directory"): " source_directory
source_directory=${source_directory:-$default_source_directory}
echo $source_directory
read -p "Source Database Name (e.g. "$default_source_dbname"): " source_dbname
source_dbname=${source_dbname:-$default_source_dbname}
echo $source_dbname
read -p "Source Database User (e.g. "$default_source_dbuser"): " source_dbuser
source_dbuser=${source_dbuser:-$default_source_dbuser}
echo $source_dbuser
read -p "Source Database Pass (e.g. "$default_source_dbpass"): " source_dbpass
source_dbpass=${source_dbpass:-$default_source_dbpass}
echo $source_dbpass
# Request Source Settings
read -p "Source Conf File (e.g. "$default_source_conf"): " source_conf
source_conf=${source_conf:-$default_source_conf}
echo $source_conf
# Request Target Settings
read -p "Target Domain (e.g. "$default_target_domain"): " target_domain
target_domain=${target_domain:-$default_target_domain}
echo $target_domain
read -p "Target Directory (no trailing slash e.g. "$default_target_directory"): " target_directory
target_directory=${target_directory:-$default_target_directory}
echo $target_directory
read -p "Target Database Name (e.g. "$default_target_dbname"): " target_dbname
target_dbname=${target_dbname:-$default_target_dbname}
echo $target_dbname
read -p "Target Database User (e.g. "$default_target_dbuser"): " target_dbuser
target_dbuser=${target_dbuser:-$default_target_dbuser}
echo $target_dbuser
read -p "Target Database Pass (e.g. "$default_target_dbpass"): " target_dbpass
target_dbpass=${target_dbpass:-$default_target_dbpass}
echo $target_dbpass
read -p "Target Conf File (e.g. "$default_target_conf"): " target_conf
target_conf=${target_conf:-$default_target_conf}
echo $target_conf
echo "Clone now? (y/n)"
read -e run
if [ "$run" == n ] ; then
exit
else
echo "==================================================="
echo "WordPress Cloning is Beginning"
echo "==================================================="
#backup source_directory
cd $source_directory
# add -v option to these if you want to see verbose file listings
tar -czf source_clone_$NOW.tar.gz .
#unzip clone in target directory
mkdir -p $target_directory
tar -xzf source_clone_$NOW.tar.gz -C $target_directory
#remove tarball of source
rm source_clone_$NOW.tar.gz
cd $target_directory
# Reset Directory Permissions
find $target_directory -type d -exec chmod 755 {} \;
find $target_directory -type f -exec chmod 644 {} \;
#set database details with perl find and replace
perl -pi -e "s/$source_dbname/$target_dbname/g" wp-config.php
perl -pi -e "s/$source_dbuser/$target_dbuser/g" wp-config.php
perl -pi -e "s/$source_dbpass/$target_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 "Directory duplicated"
echo "================================"
# Begin Database Duplication
# Export the database
mysqldump -u$mysql_user -p$mysql_pass $source_dbname > $target_directory/clone_$NOW.sql
# Create the target database and permissions
mysql -u$mysql_user -p$mysql_pass -e "create database $target_dbname; GRANT ALL PRIVILEGES ON $target_dbname.* TO '$target_dbuser'@'localhost' IDENTIFIED BY '$target_dbpass'"
# Import the source database into the target
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

如果您有建议和定制,请告诉我。在下面的评论中发表您的想法。

清理以进行扩展测试

以下行可能有助于您删除和撤消克隆的测试站点。您可以根据您的需要对其进行自定义:

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

更改 Wp-Config.php 中的安全密钥

您还可以通过手动替换目标站点的 wp-config.php 中的身份验证密钥和盐来更好地保护您的新 WordPress 站点:

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key 
service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have 
to log in again.
 *
 * @since 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<SR[Sp&g.kJw,.)bR-9jz{uU&[R{[J]ITK8q>:!5@y:Q;c01dL ');
define('LOGGED_IN_KEY',    '1I%pW%UyjRMqy__Da)siA)+V]Ur$9uXPmxv|eBjM~-m&-<WEy&+XXb43uh8&aP+U');
define('NONCE_KEY',        'A9]+PFgvxYa^<B}_.F?9A,!&i-.b6E.I?&?U*)X.Vh+fq`SfE[XJG+MG|pg;y%Ah');
define('AUTH_SALT',        'gT (4]L{mm!|>9kC<%59rB7sbe1)jW0GCnfupJT+8z-z#%o@b|[QH=i@h|-/t!9S');
define('SECURE_AUTH_SALT', 'ON8K<,WSy8+F ~XaQpCwC8(a/{HksMh<T)QLD]s[-:yv+fx8!`<!*~mgB32X:w5k');
define('LOGGED_IN_SALT',   'vHJ%{=X6$ue>ZIo|%|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@&.(');
/**#@-*/

您只需访问 https://api.wordpress.org/secret-key/1.1/salt/ 并将它们剪切并粘贴到您的 wp-config.php 文件中即可:

Cloner WordPress sous Linux

现在,如果您是 Linux 脚本纯粹主义者,我将允许您更新 Gallagher 的 WordPress Bash 安装脚本。他的脚本复制了默认的 WordPress wp-config.php,因此他可以使用可预测的源字符串来替换他的脚本生成的密钥:

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

我从未编写过正则表达式来替换我们源站点的动态预先存在的 wp-config.php 文件中的键值。如果您决定这样做,请在评论中分享并提前致谢。

有疑问吗?

我非常喜欢让这个脚本工作。或者,我至少应该说我喜欢在完成后运行它。我希望我很久以前就创建了它,因为它非常有效和高效。我可以克隆小型 WordPress 网站,并在大约 60 秒内让它们在我的服务器上运行。其他插件或复制选项都不是那么无缝。

如果您有任何疑问,请在下面发布。或者,您可以通过 Twitter @reifman 联系我或直接给我发电子邮件。请查看我的 Envato Tuts+ 讲师页面,查看我编写的其他教程,例如我的创业系列(使用 PHP 构建您的创业公司)。

相关链接

  • WordPress Bash 安装脚本,作者:Brian Gallagher
  • 移动 WordPress
  • 用于完整 WordPress 备份的 Shell 脚本,作者:Konstantin Kovshenin
  • CodeCanyon 上提供 WordPress 插件

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn