Advertisement
  1. Code
  2. WordPress

Clone WordPress in Linux

Scroll to top
Read Time: 18 min

Italian (Italiano) translation by Loris Pizii (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Duplicazione di WordPress non sembra mai facile

Spesso mi piace lanciare un nuovo sito di WordPress basato su un sito esistente, come un modello. Le configurazioni per temi, plugin e le impostazioni possono essere molto utile per cominciare, al contrario di un'installazione pulita dove devi ripetere tutto dall'inizio.

Nella costruzione di un'immagine di App da rivendere all'oceano digitale, ho camminato attraverso la costruzione di una gocciolina di WordPress installabile, pre-configurata e pre-ottimizzata. In sostanza, è un'immagine digitale dell'oceano che può lanciare un sito WordPress a pieno carico in pochi minuti. Ma, più spesso, voglio aggiungere un sito WordPress a uno dei miei server pre-esistenti.

Ci sono un certo numero di modi per fare questo, ma trovo spesso che richiedono un approccio specifico e dettagliato, che mi sembra di dover imparare di nuovo ogni volta. Ho deciso che era tempo di venire con uno script di shell di Linux che avrebbe fatto tutto in pochi minuti per me.

In questo tutorial, vi guiderò attraverso la mia ricerca e risultante script clone per WordPress. Spero che vi piaccia — ho pensato ha funzionato piuttosto bene quando ero finito con esso.

Prima che otteniamo cominciati, si prega di ricordare che tenta di partecipare alle discussioni qui sotto. Se avete una domanda o un suggerimento di argomento, si prega di postare un commento qui sotto o contattatemi su Twitter @reifman. Potete anche scrivermi direttamente. Mi aspetto che molti di voi avranno meglio idee e miglioramenti per questo script. Mi piacerebbe sentire da voi.

Altri approcci alla migrazione di WordPress

Spesso è possibile avviare un nuovo sito Web di migrazione uno esistente in un nuovo server, essenzialmente copiarlo e costruzione sulla copia lasciando intatto il sito di origine. Ci sono una serie di approcci a questo.

In WordPress in movimento per una nuova pubblicazione di Server con WordPress, ho scritto circa usando il plugin duplicatore per farlo — ma ho trovato il processo per essere ingombrante. Refamiliarizing me stesso con duplicatore ogni volta che ho bisogno di spostare un sito è stato anche difficile.

Recentemente, ho scritto su questo in backup e ripristinare il tuo sito WordPress con CodeGuard per Envato Tuts +. È un servizio che rende questo processo un po' più facile. E, presto, come per semplificare la gestione di più siti WordPress sarà rilasciato, che descrive una serie di potenti vantaggi nell'utilizzo di ManageWP. Ha una funzione di clonazione, ma richiede FTP — per motivi di sicurezza, evitare in esecuzione FTP sul mio server.

C'è anche la serie Envato Tuts + due parti di Rachel McCollin: spostare s: An Introduction and Moving WordPress: uso dei plugin per spostare il tuo sito. E c'è questo tutorial sul WPBeginner che utilizza BackupBuddy. Infine, WPClone non richiede FTP ma richiede un pulito WordPress installare per costruire su.

Si può imparare molto da tutti questi tutorial e servizi, ma volevo vedere se potevo creare uno script da linea di comando che clonato un sito WordPress più rapidamente e facilmente, ogni volta.

Pianificazione dello Script

Per scrivere questo tutorial, ho contato molto su opere precedenti di altri Jumpstart mia conoscenza di script bash e manipolazione sito WordPress. Non ho mai considerato un esperto amministratore di sistema Linux. In definitiva, ho deciso di costruire il mio script clone in cima WordPress Bash Script di Brian Gallagher di installazione.

Nota: Questi sono gli script di installazione basata su Debian; Altre versioni di Linux come RedHat e CentOS hanno percorsi diversi per Apache e diverse utilità.

Ecco la descrizione di Gallagher del suo script di base:

Download ultima versione di WP, aggiornamenti wp-config con nome DB fornito dall'utente, username e password, crea e di CHMOD carica dir, copia tutti i file nella dir principale da che si esegue lo script, quindi Elimina stesso!

C'è un sacco di script ben organizzata qui per cominciare, ma volevo fare qualcosa che potrebbe clonare un sito attivo. Rivediamo l'architettura di una tipica configurazione di WordPress.

I componenti iniziali di un sito WordPress

Una tipica installazione di WordPress ha quattro componenti principali per la clonazione:

  1. Albero di directory del sito
  2. Database
  3. Configurazione del server Web, ad esempio file conf di Apache
  4. Mappatura del dominio

Ci sono anche informazioni, accesso e sicurezza impostazioni di che avremo bisogno:

  • Password e account di amministrazione del server
  • Password e nome utente del server MySql
  • Directory di origine del sito
  • File di configurazione del server del sito web
  • Nome del database, nome utente e password

Ecco che cosa abbiamo bisogno di specificare per il sito clonato:

  • Directory di destinazione del sito clonato
  • Nome database clonato, la username e la password
  • File di configurazione clonata siti web server

Ciò che lo Script deve eseguire

  • Acquisire tutte le impostazioni tramite variabili di configurazione o l'input dell'utente.
  • Copiare la directory del sito e ripristinarlo in una directory di destinazione.
  • Esportare il database di origine e importarlo in un database di destinazione.
  • Assicurarsi che le autorizzazioni appropriate su queste directory.
  • Copiare il file di configurazione del server e aggiornare le impostazioni del dominio e la directory.
  • Ricaricare il server web.

Manualmente, dovremo aggiornare il DNS per il nuovo dominio di destinazione. Si raccomanda di creare record DNS prima di iniziare così sono pronti, una volta che il tuo sito è clonato. Non c'è niente come la clonazione di un sito e di non essere in grado di verificare il dominio nome perché stai aspettando che il DNS.

L'approccio dello Script clonazione

Ora, siamo pronti a camminare attraverso il funzionamento dell'architettura dello script. Ancora una volta, sfruttato lo script di installazione di WordPress di Gallagher per cominciare, e hai bisogno di quella linea di bash iniziale nella parte superiore:

1
#!/bin/bash -e

2
# Clone a WordPress site via Bash script

3
clear
4
echo "==================================================="
5
echo "Clone WordPress Script"
6
echo "==================================================="

Preparare le impostazioni DNS

Prima di duplicare un sito, è necessario configurare il DNS per il sito clonato. È possibile leggere informazioni sulla configurazione di DNS per un nuovo sito di WordPress qui. Anche io sono entusiasta di questo Envato Tuts + tutorial, un'introduzione all'apprendimento e utilizzo dei record DNS.

Fondamentalmente, è necessario creare un record o CNAME che indirizza il tuo clone desiderato URL al server ci stiamo duplicando il.

Impostazione delle autorizzazioni

Sul mio server, sto creando uno script di bash chiamato clonewp.sh. Avrà bisogno delle autorizzazioni eseguibile:

1
chmod +x clonewp.sh

Poi, una volta che è completo, è possibile eseguirlo come questo:

1
sudo bash clonewp.sh

Vi consiglio di esecuzione dello script come sudo, in modo da non incorrere in problemi di autorizzazione file.

Impostazione di valori predefiniti

Per scopi di test, ho creato la possibilità di pre-caricare lo script con le impostazioni predefinite. Lo ha aiutato in esecuzione attraverso test ripetutamente senza dover digitare tutto più e più volte. Ho anche pensato che potrebbe essere utile per chi vuole più successivamente modificare lo script o usarlo in altri modi.

Qui ci sono tutte le impostazioni predefinite:

1
# Set Default Settings (helpful for testing)

2
default_mysql_user=$"root-admin"
3
default_mysql_pass=$"super-strong-password"
4
default_source_domain=$"gardening.io"
5
default_target_domain=$"cycling.io"
6
default_source_directory=$"/var/www/gardening"
7
default_target_directory=$"/var/www/cycling"
8
default_apache_directory=$"/etc/apache2/sites-available"
9
default_source_conf=$"gardening.conf"
10
default_target_conf=$"cycling.conf"
11
default_source_dbname=$"gardening"
12
default_source_dbuser=$"user_for_garden"
13
default_source_dbpass=$"pwd_garden"
14
default_target_dbname=$"cycling"
15
default_target_dbuser=$"user_for_cycling"
16
default_target_dbpass=$"pwd_cycling"
17
NOW=$(date +"%Y-%m-%d-%H%M")

So che sembra che piace molto, ma mi è sembrato utile avere un master MySQL user e password per i backup di database, creazione di database e le importazioni. Eppure era anche utile avere l'utente del database del sito e la password per impostare i privilegi di database di destinazione e la ricerca e la sostituzione nel file wp-config. php. Rende il massimo molto senza soluzione di continuità del processo di duplicazione.

Ho usato il timestamp di ora per assicurarsi che gli archivi che creiamo sono unici.

Richiedere le impostazioni

Il codice riportato di seguito viene illustrato il valore predefinito per l'utente e permette loro di accettarlo (premendo ritorno) o sostituirlo:

1
# Request Source Settings

2
read -p "Source Domain (e.g. "$default_source_domain"): " source_domain
3
source_domain=${source_domain:-$default_source_domain}
4
echo $source_domain
5
read -p "Source Directory (no trailing slash e.g. "$default_source_directory"): " source_directory
6
source_directory=${source_directory:-$default_source_directory}
7
echo $source_directory
8
read -p "Source Database Name (e.g. "$default_source_dbname"): " source_dbname
9
source_dbname=${source_dbname:-$default_source_dbname}
10
echo $source_dbname
11
read -p "Source Database User (e.g. "$default_source_dbuser"): " source_dbuser
12
source_dbuser=${source_dbuser:-$default_source_dbuser}
13
echo $source_dbuser
14
read -p "Source Database Pass (e.g. "$default_source_dbpass"): " source_dbpass
15
source_dbpass=${source_dbpass:-$default_source_dbpass}
16
echo $source_dbpass
17
# Request Source Settings

18
read -p "Source Conf File (e.g. "$default_source_conf"): " source_conf
19
source_conf=${source_conf:-$default_source_conf}
20
echo $source_conf
21
# Request Target Settings

22
read -p "Target Domain (e.g. "$default_target_domain"): " target_domain
23
target_domain=${target_domain:-$default_target_domain}
24
echo $target_domain
25
read -p "Target Directory (no trailing slash e.g. "$default_target_directory"): " target_directory
26
target_directory=${target_directory:-$default_target_directory}
27
echo $target_directory
28
read -p "Target Database Name (e.g. "$default_target_dbname"): " target_dbname
29
target_dbname=${target_dbname:-$default_target_dbname}
30
echo $target_dbname
31
read -p "Target Database User (e.g. "$default_target_dbuser"): " target_dbuser
32
target_dbuser=${target_dbuser:-$default_target_dbuser}
33
echo $target_dbuser
34
read -p "Target Database Pass (e.g. "$default_target_dbpass"): " target_dbpass
35
target_dbpass=${target_dbpass:-$default_target_dbpass}
36
echo $target_dbpass
37
read -p "Target Conf File (e.g. "$default_target_conf"): " target_conf
38
target_conf=${target_conf:-$default_target_conf}
39
echo $target_conf

Una volta che abbiamo raccolto tutte le impostazioni da parte dell'utente, chiediamo se desiderano iniziare:

1
echo "Clone now? (y/n)"
2
read -e run
3
if [ "$run" == n ] ; then

4
exit

5
else

6
echo "==================================================="
7
echo "WordPress Cloning is Beginning"
8
echo "==================================================="

Copiare la struttura di Directory

Ora le cose si muovono un po' più veloce. Creiamo gli archivi del sito di origine, creare una directory di destinazione ed estrarre il tarball di ci:

1
#backup source_directory

2
cd $source_directory
3
# add -v option to these if you want to see verbose file listings

4
tar -czf source_clone_$NOW.tar.gz .
5
#unzip clone in target directory

6
mkdir -p $target_directory
7
tar -xzf source_clone_$NOW.tar.gz -C $target_directory
8
#remove tarball of source

9
rm source_clone_$NOW.tar.gz
10
cd $target_directory

Abbiamo anche eseguito le autorizzazioni di file standard per WordPress per assicurarsi che tutto è impostato correttamente e in modo sicuro:

1
# Reset Directory Permissions

2
find $target_directory -type d -exec chmod 755 {} \;
3
find $target_directory -type f -exec chmod 644 {} \;

Aggiornare il file WP-Config.

Quindi, utilizziamo perl per cercare e sostituire l'autenticazione del database di origine con le informazioni del database di destinazione:

1
#set database details with perl find and replace

2
perl -pi -e "s/$source_dbname/$target_dbname/g" wp-config.php
3
perl -pi -e "s/$source_dbuser/$target_dbuser/g" wp-config.php
4
perl -pi -e "s/$source_dbpass/$target_dbpass/g" wp-config.php
5
echo "define('RELOCATE',true);" | tee -a wp-config.php
6
#echo "define('WP_HOME','http://$target_domain');" | tee -a wp-config.php

7
#echo "define('WP_SITEURL','http://$target_domain');" | tee -a wp-config.php

8
echo "================================"
9
echo "Directory duplicated"
10
echo "================================"

Aggiungo anche l'impostazione di trasferirsi alla fine del file. Se si desidera, è possibile sostituire questo con impostazioni statiche di WP_HOME e WP_SITEURL.

Copiare il Database

Successivamente, abbiamo dump del database, creare un nuovo database con autorizzazioni fornito dall'utente e quindi importare il database ad esso:

1
# Begin Database Duplication

2
# Export the database

3
mysqldump -u$mysql_user -p$mysql_pass $source_dbname > $target_directory/clone_$NOW.sql
4
# Create the target database and permissions

5
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'"
6
# Import the source database into the target

7
mysql -u$mysql_user -p$mysql_pass $target_dbname < $target_directory/clone_$NOW.sql
8
echo "================================"
9
echo "Database duplicated"
10
echo "================================"

Ancora una volta, mi è sembrato migliore all'utente l'autenticazione del MySQL Maestro per queste attività, configurare le impostazioni del database basate sul sito di origine e le impostazioni di singolo sito clone.

Copiare la configurazione del Server Web

Infine, siamo pronti a concludere le cose e premere il pulsante di lancio. È raro che vedere questi tipi di script gestire il passaggio aggiuntivo per la configurazione del server web. Così, ho voluto fare anche questo.

Ho copiato il file Apache. conf del sito origine sopra in un nuovo file. conf per il clone. Ho usato perl per una sostituzione di stringa per i domini e i percorsi di directory. Quindi, ho attivato il sito con Apache e ricaricato il server web:

1
#Activate Web Configuration

2
cp $default_apache_directory/$source_conf $default_apache_directory/$target_conf
3
#set database details with perl find and replace

4
perl -pi -e "s/$source_domain/$target_domain/g" $default_apache_directory/$target_conf
5
perl -pi -e "s|${source_directory}|${target_directory}|g" $default_apache_directory/$target_conf
6
a2ensite $target_conf
7
service apache2 reload
8
echo "================================"
9
echo "Web configuration added"
10
echo "================================"
11
echo "Clone is complete."
12
echo "Test at http://"$target_domain
13
echo "================================"
14
fi

E questo è tutto. Ecco quello che sembra una prova generale dello script nella vita reale:

1
===================================================
2
Clone WordPress Script
3
===================================================
4
MySQL Master Username (e.g. root-admin): harry_potter
5
harry_potter
6
MySQL Master Password (e.g. super-strong-password): voldemoort~jenny7!
7
voldemoort~jenny7!
8
Source Domain (e.g. gardening.io): 
9
gardening.io
10
Source Directory (no trailing slash e.g. /var/www/gardening): 
11
/var/www/gardening
12
Source Database Name (e.g. gardening): database_gardening
13
database_gardening
14
Source Database User (e.g. user_for_garden): hermione
15
hermione
16
Source Database Pass (e.g. pwd_garden): !987654321abcdefgh#
17
!987654321abcdefgh#
18
Source Conf File (e.g. gardening.conf): gardening.conf
19
gardening.conf
20
Target Domain (e.g. cycling.io): 
21
cycling.io
22
Target Directory (no trailing slash e.g. /var/www/cycling): /var/www/cycling
23
/var/www/cycling
24
Target Database Name (e.g. cycling): database_cycling
25
database_cycling
26
Target Database User (e.g. user_for_cycling): hedwig
27
hedwig
28
Target Database Pass (e.g. pwd_cycling): 
29
pwd_for_cycling_not_hogwartz
30
Target Conf File (e.g. cycling.conf): 0007b-cycling.conf               
31
0007b-cycling.conf
32
Clone now? (y/n)
33
y
34
===================================================
35
WordPress Cloning is Beginning
36
===================================================
37
tar: .: file changed as we read it
38
define('RELOCATE',true);
39
================================
40
Directory duplicated
41
================================
42
================================
43
Database duplicated
44
================================
45
Enabling site 0007b-cycling.
46
To activate the new configuration, you need to run:
47
  service apache2 reload
48
 * Reloading web server apache2                                                                                     * 
49
================================
50
Web configuration added
51
================================
52
Clone is complete.
53
Test at http://cycling.io
54
================================

Il mio piccoli siti WordPress, duplicazione ha preso solo 30-90 secondi!

Stampa fine

Ci sono un paio di cose più che avrai bisogno di sapere.

Percorso di accesso diretto in un primo momento

In primo luogo, per accedere al tuo sito clonato, è necessario utilizzare il percorso di wp-login. php invece di wp-admin che reindirizza all'URL del sito di origine, ad esempio http://clone.io/wp-login.php, come illustrato di seguito:

Clone WordPress Use the wp-login php pathClone WordPress Use the wp-login php pathClone WordPress Use the wp-login php path

Cambiando rispetto ai domini

Dal WordPress hardcodes molto del tuo dominio di origine nel database, ho trovato che utilizzando l'impostazione di DELOCALIZZARE in wp-config. php rende facile di aggiornare questo attraverso generale>; Impostazioni. Si salva solo il modulo con il nuovo URL di destinazione:

Clone WordPress General Domain SettingsClone WordPress General Domain SettingsClone WordPress General Domain Settings

Una volta che hai salvato l'URL di destinazione clonato, è possibile rimuovere manualmente l'impostazione di trasferirsi da wp-config. php.

Tuttavia, un collega suggerisce che si desideri utilizzare uno strumento come di InterconnectIT ricerca e sostituzione per i database di WordPress. È anche stato documentato presso Envato Tuts + in migrazione WordPress attraverso host, server e URL.

Lo Script finale

Ecco lo script finale per wpclone.sh—feel libero di modificare le impostazioni predefinite:

1
#!/bin/bash -e

2
# Clone a WordPress site via Bash script

3
clear
4
echo "==================================================="
5
echo "Clone WordPress Script"
6
echo "==================================================="
7
# Set Default Settings (helpful for testing)

8
default_mysql_user=$"root-admin"
9
default_mysql_pass=$"super-strong-password"
10
default_source_domain=$"gardening.io"
11
default_target_domain=$"cycling.io"
12
default_source_directory=$"/var/www/gardening"
13
default_target_directory=$"/var/www/cycling"
14
default_apache_directory=$"/etc/apache2/sites-available"
15
default_source_conf=$"gardening.conf"
16
default_target_conf=$"cycling.conf"
17
default_source_dbname=$"gardening"
18
default_source_dbuser=$"user_for_garden"
19
default_source_dbpass=$"pwd_garden"
20
default_target_dbname=$"cycling"
21
default_target_dbuser=$"user_for_cycling"
22
default_target_dbpass=$"pwd_cycling"
23
NOW=$(date +"%Y-%m-%d-%H%M")
24
25
#Request MySQL Admin

26
read -p "MySQL Master Username (e.g. "$default_mysql_user"): " mysql_user
27
mysql_user=${mysql_user:-$default_mysql_user}
28
echo $mysql_user
29
read -p "MySQL Master Password (e.g. "$default_mysql_pass"): " mysql_pass
30
mysql_pass=${mysql_pass:-$default_mysql_pass}
31
echo $mysql_pass
32
33
# Request Source Settings

34
read -p "Source Domain (e.g. "$default_source_domain"): " source_domain
35
source_domain=${source_domain:-$default_source_domain}
36
echo $source_domain
37
read -p "Source Directory (no trailing slash e.g. "$default_source_directory"): " source_directory
38
source_directory=${source_directory:-$default_source_directory}
39
echo $source_directory
40
read -p "Source Database Name (e.g. "$default_source_dbname"): " source_dbname
41
source_dbname=${source_dbname:-$default_source_dbname}
42
echo $source_dbname
43
read -p "Source Database User (e.g. "$default_source_dbuser"): " source_dbuser
44
source_dbuser=${source_dbuser:-$default_source_dbuser}
45
echo $source_dbuser
46
read -p "Source Database Pass (e.g. "$default_source_dbpass"): " source_dbpass
47
source_dbpass=${source_dbpass:-$default_source_dbpass}
48
echo $source_dbpass
49
# Request Source Settings

50
read -p "Source Conf File (e.g. "$default_source_conf"): " source_conf
51
source_conf=${source_conf:-$default_source_conf}
52
echo $source_conf
53
# Request Target Settings

54
read -p "Target Domain (e.g. "$default_target_domain"): " target_domain
55
target_domain=${target_domain:-$default_target_domain}
56
echo $target_domain
57
read -p "Target Directory (no trailing slash e.g. "$default_target_directory"): " target_directory
58
target_directory=${target_directory:-$default_target_directory}
59
echo $target_directory
60
read -p "Target Database Name (e.g. "$default_target_dbname"): " target_dbname
61
target_dbname=${target_dbname:-$default_target_dbname}
62
echo $target_dbname
63
read -p "Target Database User (e.g. "$default_target_dbuser"): " target_dbuser
64
target_dbuser=${target_dbuser:-$default_target_dbuser}
65
echo $target_dbuser
66
read -p "Target Database Pass (e.g. "$default_target_dbpass"): " target_dbpass
67
target_dbpass=${target_dbpass:-$default_target_dbpass}
68
echo $target_dbpass
69
read -p "Target Conf File (e.g. "$default_target_conf"): " target_conf
70
target_conf=${target_conf:-$default_target_conf}
71
echo $target_conf
72
echo "Clone now? (y/n)"
73
read -e run
74
if [ "$run" == n ] ; then

75
exit

76
else

77
echo "==================================================="
78
echo "WordPress Cloning is Beginning"
79
echo "==================================================="
80
#backup source_directory

81
cd $source_directory
82
# add -v option to these if you want to see verbose file listings

83
tar -czf source_clone_$NOW.tar.gz .
84
#unzip clone in target directory

85
mkdir -p $target_directory
86
tar -xzf source_clone_$NOW.tar.gz -C $target_directory
87
#remove tarball of source

88
rm source_clone_$NOW.tar.gz
89
cd $target_directory
90
# Reset Directory Permissions

91
find $target_directory -type d -exec chmod 755 {} \;
92
find $target_directory -type f -exec chmod 644 {} \;
93
#set database details with perl find and replace

94
perl -pi -e "s/$source_dbname/$target_dbname/g" wp-config.php
95
perl -pi -e "s/$source_dbuser/$target_dbuser/g" wp-config.php
96
perl -pi -e "s/$source_dbpass/$target_dbpass/g" wp-config.php
97
echo "define('RELOCATE',true);" | tee -a wp-config.php
98
#echo "define('WP_HOME','http://$target_domain');" | tee -a wp-config.php

99
#echo "define('WP_SITEURL','http://$target_domain');" | tee -a wp-config.php

100
echo "================================"
101
echo "Directory duplicated"
102
echo "================================"
103
# Begin Database Duplication

104
# Export the database

105
mysqldump -u$mysql_user -p$mysql_pass $source_dbname > $target_directory/clone_$NOW.sql
106
# Create the target database and permissions

107
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'"
108
# Import the source database into the target

109
mysql -u$mysql_user -p$mysql_pass $target_dbname < $target_directory/clone_$NOW.sql
110
echo "================================"
111
echo "Database duplicated"
112
echo "================================"
113
#Activate Web Configuration

114
cp $default_apache_directory/$source_conf $default_apache_directory/$target_conf
115
#set database details with perl find and replace

116
perl -pi -e "s/$source_domain/$target_domain/g" $default_apache_directory/$target_conf
117
perl -pi -e "s|${source_directory}|${target_directory}|g" $default_apache_directory/$target_conf
118
a2ensite $target_conf
119
service apache2 reload
120
echo "================================"
121
echo "Web configuration added"
122
echo "================================"
123
echo "Clone is complete."
124
echo "Test at http://"$target_domain
125
echo "================================"
126
fi

Se avete suggerimenti e personalizzazioni, per favore fatemelo sapere. Postare i tuoi pensieri qui sotto nei commenti.

Pulitura per esteso di test

Le seguenti righe potrebbero essere utile a voi per l'eliminazione e annullamento di siti di test che si clonano. È possibile personalizzarlo alle vostre esigenze:

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

Cambiare le chiavi di sicurezza in Wp-config. php

È possibile proteggere anche meglio il tuo nuovo sito di WordPress sostituendo manualmente le chiavi di autenticazione e i sali all'interno wp del sito di destinazione-config. php:

1
/**#@+

2
 * Authentication Unique Keys and Salts.
3
 *
4
 * Change these to different unique phrases!
5
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key 
6
service}
7
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have 
8
to log in again.
9
 *
10
 * @since 2.6.0
11
 */
12
define('AUTH_KEY',         '+9%S?YVnr%5Vr!Et4J,@9/Z^.kT_Lu~5SGwr9=|Y &D-ARSWf$mF#J_3U:/iE>-R');
13
define('SECURE_AUTH_KEY',  'e3Wr7%Aa7H1,f<SR[Sp&g.kJw,.)bR-9jz{uU&[R{[J]ITK8q>:!5@y:Q;c01dL ');
14
define('LOGGED_IN_KEY',    '1I%pW%UyjRMqy__Da)siA)+V]Ur$9uXPmxv|eBjM~-m&-<WEy&+XXb43uh8&aP+U');
15
define('NONCE_KEY',        'A9]+PFgvxYa^<B}_.F?9A,!&i-.b6E.I?&?U*)X.Vh+fq`SfE[XJG+MG|pg;y%Ah');
16
define('AUTH_SALT',        'gT (4]L{mm!|>9kC<%59rB7sbe1)jW0GCnfupJT+8z-z#%o@b|[QH=i@h|-/t!9S');
17
define('SECURE_AUTH_SALT', 'ON8K<,WSy8+F ~XaQpCwC8(a/{HksMh<T)QLD]s[-:yv+fx8!`<!*~mgB32X:w5k');
18
define('LOGGED_IN_SALT',   'vHJ%{=X6$ue>ZIo|%|cisp1R}9cJ< Rz-J;H|:O2A7$+*aGXMH!+KvD+tZ/I*U5$');
19
define('NONCE_SALT',       '[ytQ;C)BvgU!#>a,,g|)~EKBQUig7Uv.-8?q%lmFte,P>,]f#.}i`Wx8S+_S@&.(');
20
/**#@-*/

Si può solo visitare https://api.wordpress.org/secret-key/1.1/salt/ e tagliare e incollarli nel file wp-config. php:

WordPress Authentication Key and Salt GeneratorWordPress Authentication Key and Salt GeneratorWordPress Authentication Key and Salt Generator

Ora se sei un purista di script Linux, farò aggiornare WordPress Bash Script di Gallagher di installazione. Suo script copiato sopra il default WordPress wp-config. php così avrebbe stringhe sorgente prevedibile da sostituire con tasti suo script generato:

1
#set WP salts

2
perl -i -pe'

3
  BEGIN {

4
    @chars = ("a" .. "z", "A" .. "Z", 0 .. 9);

5
    push @chars, split //, "!@#$%^&*()-_ []{}<>~\`+=,.;:/?|";

6
    sub salt { join "", map $chars[ rand @chars ], 1 .. 64 }

7
  }

8
  s/put your unique phrase here/salt()/ge

9
' wp-config.php

Non ho mai scritto su un oggetto regex sostituire i valori di chiave nel file wp-config. php dinamici preesistenti dei nostri siti di origine. Se si decide di, ti invitiamo a condividere nei commenti e grazie in anticipo.

Domande?

Ho apprezzato molto per far funzionare questo script. O almeno dovrei dire che mi è piaciuto in esecuzione che quando mi è stato fatto. Avrei voluto che avevo creato molto tempo fa come è incredibilmente efficace ed efficiente. Ho potuto clonare piccoli siti WordPress e li hanno in esecuzione sul mio server in circa 60 secondi. Nessuna delle altre opzioni plugin o duplicazione sono così fluida.

Se avete domande, lascia un commento qui sotto. In alternativa, è possibile contattare me su Twitter @reifman o scrivermi direttamente. Si prega di consultare la mia pagina di istruttore Envato Tuts + per vedere altri tutorial che ho scritto, come la mia serie di avvio (Startup il tuo edificio con PHP).

Link correlati

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.