Clona WordPress in Linux

Cosa starai creando

La duplicazione di WordPress non sembra mai facile

Mi piace spesso lanciare un nuovo sito WordPress basato su un sito esistente, come modello. Le configurazioni per temi, plugin e impostazioni possono essere molto utili per iniziare, al contrario di un'installazione pulita in cui devi ripetere tutto dall'inizio.

Nella creazione di un'immagine di un'applicazione da rivendere in Digital Ocean, sono passato alla realizzazione di un droplet WordPress installabile, preconfigurato e pre-ottimizzato. Essenzialmente, è un'immagine dell'oceano digitale che può avviare un sito WordPress completamente caricato in pochi minuti. Ma, più spesso, voglio aggiungere un sito WordPress a uno dei miei server preesistenti.

Ci sono diversi modi per farlo, ma spesso trovo che richiedono un approccio specifico e dettagliato che mi sembra di dover imparare di nuovo ogni volta. Ho deciso che era ora di inventare uno script di shell Linux che avrebbe fatto tutto in pochi minuti per me. 

In questo tutorial, ti guiderò attraverso la mia ricerca e il conseguente script clone per WordPress. Spero che ti piaccia, ho pensato che funzionasse piuttosto bene quando avevo finito.

Prima di iniziare, ricorda, cerco di partecipare alle discussioni di seguito. Se hai una domanda o un suggerimento sull'argomento, per favore pubblica un commento qui sotto o contattami su Twitter @reifman. Puoi anche scrivermi direttamente via email. Mi aspetto che molti di voi avranno idee e miglioramenti migliori per questo script. Mi piacerebbe sentirti da te.

Altri approcci alla migrazione di WordPress

Spesso è possibile avviare un nuovo sito Web migrando uno esistente in un nuovo server, essenzialmente copiandolo e sviluppando la copia lasciando intatto il sito di origine. Ci sono un certo numero di approcci a questo.

Spostando WordPress in una nuova pubblicazione server con WordPress, ho scritto sull'uso del plugin Duplicator per farlo, ma ho trovato il processo ingombrante. Anche familiarizzare con Duplicator ogni volta che ho bisogno di spostare un sito è stato difficile. 

Recentemente, ho scritto su questo in Backup e ripristino del tuo sito WordPress con CodeGuard per Envato Tuts +. È un servizio che rende questo processo un po 'più semplice. E presto, come semplificare la gestione di più siti WordPress verrà rilasciato, descrivendo una serie di potenti vantaggi nell'uso di ManageWP. Ha una funzione di clonazione ma richiede FTP: per motivi di sicurezza, evito di eseguire FTP sui miei server.

C'è anche la serie Envato Tuts + in due parti di Rachel McCollin: Moving WordPress: Introduzione e spostamento di WordPress: utilizzo di plugin per spostare il tuo sito. E c'è questo tutorial su WPBeginner che usa BackupBuddy. Infine, WPClone non richiede FTP, ma richiede un'installazione pulita di WordPress da compilare.

Puoi imparare molto da tutti questi tutorial e servizi, ma volevo vedere se potevo creare uno script da riga di comando che clonasse un sito WordPress più velocemente e facilmente, ogni volta.

Pianificazione dello script

Per scrivere questo tutorial, ho fatto molto affidamento su precedenti lavori di altri per far partire la mia conoscenza degli script di bash e della manipolazione del sito di WordPress. Non mi sono mai considerato un amministratore di sistema Linux esperto. Alla fine, ho deciso di creare il mio script clone su WordPress Bash Install Script di Brian Gallagher. 

Nota: Questi sono script di installazione basati su Debian; altri tipi di Linux come RedHat e CentOS hanno percorsi diversi per Apache e diverse utilità.

Ecco la descrizione di Gallagher del suo script di base:

Scarica la versione più recente di WP, aggiorna wp-config con il nome DB fornito dall'utente, nome utente e password, crea la directory di upload di CHMOD, copia tutti i file nella directory principale da cui si esegue lo script, quindi si elimina!

C'è un sacco di script ben organizzati qui per cominciare, ma volevo fare qualcosa che potesse clonare un sito attivo. Esaminiamo 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 della directory del sito 
  2. Banca dati 
  3. Configurazione del server Web, ad es. File di configurazione di Apache
  4. Mappatura del dominio

Ci sono anche le informazioni, l'accesso e le impostazioni di sicurezza di cui avremo bisogno:

  • Account di amministrazione del server e password
  • Nome utente e password del server MySql
  • Directory di origine del sito
  • File di configurazione del server Web del sito
  • Nome del database, nome utente e password

Ecco cosa dovremo specificare per il sito clonato:

  • Directory di destinazione del sito clonato
  • Nome del database clonato, nome utente e password
  • File di configurazione del server web dei siti clonati

Ciò che lo script deve fare

  • Acquisire tutte le impostazioni tramite variabili di configurazione o input dell'utente.
  • Copia la directory del sito e ripristinala in una directory di destinazione.
  • Esportare il database di origine e importarlo in un database di destinazione.
  • Garantire le autorizzazioni appropriate su queste directory.
  • Copia il file di configurazione del server e aggiorna le impostazioni del dominio e della directory.
  • Ricarica il web server.

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

L'approccio dello script di clonazione

Ora siamo pronti per illustrare come funziona l'architettura della sceneggiatura. Ancora una volta, ho sfruttato lo script di installazione di WordPress di Gallagher per cominciare, e hai bisogno di quella linea di bash iniziale in alto:

#! / bin / bash -e # Clona un sito WordPress tramite script Bash clear echo "=============================== ==================== "echo" Script WordPress clone "echo" ===================== ==============================" 

Preparazione delle tue impostazioni DNS

Prima di duplicare un sito, è necessario configurare il DNS per il sito clonato. Puoi leggere la configurazione DNS per un nuovo sito WordPress qui. Sono anche entusiasta di questo tutorial di Envato Tuts +, Un'introduzione all'apprendimento e all'utilizzo di record DNS.

Fondamentalmente, devi creare un record A o CNAME che instradi l'URL clone desiderato al server su cui stiamo duplicando.

Impostazione delle autorizzazioni

Sul mio server, sto creando uno script di bash chiamato clonewp.sh. Richiede autorizzazioni eseguibili:

chmod + x clonewp.sh

Quindi, una volta completato, puoi eseguirlo in questo modo:

sudo bash clonewp.sh

Raccomando di eseguire lo script come sudo in modo da non incorrere in problemi di autorizzazione dei file.

Impostazione dei valori predefiniti

A scopo di test, ho creato la possibilità di precaricare lo script con le impostazioni predefinite. Mi ha aiutato a eseguire ripetutamente i test senza dover digitare tutto ripetutamente. Ho anche pensato che potesse essere utile per le persone che vogliono modificare in seguito lo script o usarlo in altri modi.

Ecco tutte le impostazioni predefinite:

# Imposta impostazioni predefinite (utile per il test) 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 = $" giardinaggio " 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 ") 

So che sembra molto, ma ho trovato utile avere un utente e una password di MySQL per backup di database, creazione di database e importazioni. Tuttavia è stato anche utile avere l'utente e le password del database specifici del sito per impostare i privilegi del database di destinazione e cercare e sostituire nel file wp-config.php. Rende il processo di clonazione finale molto semplice.

Ho usato il timestamp NOW per assicurarmi che gli archivi che creiamo siano unici.

Richiesta delle impostazioni

Il codice seguente mostra il valore predefinito all'utente e consente loro di accettarlo (premendo return) o di sostituirlo:

# Richiedi impostazioni sorgente read -p "Dominio origine (es." $ Default_source_domain "):" origine_dominio dominio_origine = $ dominio_destinazione: - $ dominio_origine_predefinito echo $ dominio_destinazione lettura -p "Directory di origine (nessuna barra finale es." $ Default_source_directory "): "source_directory source_directory = $ source_directory: - $ default_source_directory echo $ source_directory read -p" Nome del database di origine (ad es. "$ default_source_dbname"): "nome_destinato_origine nome_db sorgente = $ nome_database_origine: - $ nome_destinazione_predefinita echo $ nome_db_origine read -p" Source Utente del database (ad es. "$ Default_source_dbuser"): "source_dbuser source_dbuser = $ source_dbuser: - $ default_source_dbuser echo $ source_dbuser read -p" Source Database Pass (es. "$ Default_source_dbpass"): "source_dbpass source_dbpass = $ source_dbpass: - $ default_source_dbpass echo $ source_dbpass # Richiedi impostazioni sorgente read -p "Source Conf File (es." $ default_source_conf "):" source_conf source_conf = $ source_conf: - $ default_source_conf echo $ source_conf # richiesta Targe t Impostazioni read -p "Target Domain (ad es. "$ default_target_domain"): "target_domain target_domain = $ target_domain: - $ default_target_domain echo $ target_domain read -p" Directory di destinazione (nessuna barra finale es. "$ default_target_directory"): "target_directory target_directory = $ target_directory: - $ default_target_directory echo $ target_directory read -p "Nome del database di destinazione (ad esempio" $ default_target_dbname "):" target_dbname target_dbname = $ target_dbname: - $ default_target_dbname echo $ target_dbname read -p "Utente del database di destinazione (ad esempio" $ default_target_dbuser "):" target_dbuser target_dbuser = $ target_dbuser: - $ default_target_dbuser echo $ target_dbuser leggi -p "Target Database Pass (es." $ default_target_dbpass "):" target_dbpass target_dbpass = $ target_dbpass: - $ default_target_dbpass echo $ target_dbpass read -p "Target Conf File (ad esempio "$ default_target_conf"): "target_conf target_conf = $ target_conf: - $ default_target_conf echo $ target_conf

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

echo "Clona ora? (y / n)" leggi -e corri se ["$ run" == n]; quindi exit else echo "============================================= ====== "echo" WordPress Clonazione inizia "echo" ================================== =================" 

Copia l'albero delle directory

Ora le cose si muovono un po 'più velocemente. Creiamo tarball del sito di origine, creiamo una directory di destinazione ed estraiamo il tarball lì:

#backup source_directory cd $ source_directory # aggiungi l'opzione -v a questi se vuoi vedere elenchi di file dettagliati tar -czf source_clone_ $ NOW.tar.gz. #unzip clone nella directory di destinazione mkdir -p $ target_directory tar -xzf source_clone_ $ NOW.tar.gz -C $ target_directory #remove tarball di origine rm source_clone_ $ NOW.tar.gz cd $ target_directory 

Eseguiamo anche i permessi standard di file per WordPress per assicurarci che tutto sia configurato correttamente e in sicurezza:

# Reimposta directory Autorizzazioni trova $ target_directory -type d -exec chmod 755  \; trova $ target_directory -type f -exec chmod 644  \; 

Aggiorna il file di configurazione WP

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

#set dettagli del database con perl trovare e sostituire perl -pi -e "s / $ nome_destinazione / $ nome_destinazione / 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 duplicata" echo " ================================"

Aggiungo anche il RELOCATE impostazione alla fine del file. Se ti piace, puoi sostituirlo con statico WP_HOME e WP_SITEURL impostazioni.

Copia il database

Successivamente, eseguiamo il dump del database, creiamo un nuovo database con le autorizzazioni fornite dall'utente e quindi importiamo il database su di esso:

# Begin Database Duplication # Esporta il database mysqldump -u $ mysql_user -p $ mysql_pass $ source_dbname> $ target_directory / clone_ $ NOW.sql # Crea il database di destinazione e le autorizzazioni mysql -u $ mysql_user -p $ mysql_pass -e "crea il database $ target_dbname; GRANT ALL PRIVILEGES SU $ target_dbname. * TO '$ target_dbuser' @ 'localhost' IDENTIFIED BY '$ target_dbpass' "# Importa il database di origine nel mysql di destinazione -u $ mysql_user -p $ mysql_pass $ target_dbname < $target_directory/clone_$NOW.sql echo "================================" echo "Database duplicated" echo "================================" 

Ancora una volta, ho trovato la cosa migliore per l'utente l'autenticazione master MySQL per queste attività durante la configurazione delle impostazioni del database in base al sito di origine e alle impostazioni del clone a sito singolo.

Copia la configurazione del server Web

Finalmente, siamo pronti per concludere le cose e premere il pulsante di avvio. È raro che questo tipo di script gestisca il passaggio extra per la configurazione del server web. Quindi, volevo farlo anche io.

Ho copiato il file .conf di Apache del sito sorgente 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 ho ricaricato il server web:

#Activate Web Configuration cp $ default_apache_directory / $ source_conf $ default_apache_directory / $ target_conf #set dettagli del database con perl find e 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" Aggiunta configurazione Web "echo" =============================== = "echo" Il clone è completo. " echo "Test all'indirizzo http: //" $ target_domain echo "================================" fi

E questo è tutto. Ecco come appare un run-through della sceneggiatura nella vita reale:

================================================== = Clone WordPress Script ============================================== ===== Nome utente master MySQL (ad es. Root-admin): harry_potter harry_potter Password master MySQL (ad es. Super-strong-password): voldemoort ~ jenny7! voldemoort ~ jenny7! Dominio di origine (ad es. Gardening.io): giardinaggio.io Directory di origine (senza barra finale es. / Var / www / giardinaggio): / var / www / giardinaggio Nome database di origine (ad es. Giardinaggio): database_gardening Database_gardening Utente database di origine (ad esempio user_for_garden) : hermione hermione Source Database Pass (ad es. pwd_garden):! 987654321abcdefgh #! 987654321abcdefgh # Source Conf File (ad es. gardening.conf): giardinaggio.conf gardening.conf Dominio di destinazione (ad esempio cycling.io): cycling.io Directory di destinazione (senza coda slash eg / var / www / cycling): / var / www / cycling / var / www / cycling Nome del database di destinazione (ad es. in bicicletta): database_cycling database_cycling Utente del database di destinazione (ad esempio user_for_cycling): hedwig hedwig Target Database Pass (es. pwd_cycling): pwd_for_cycling_not_hogwartz Target Conf File (es. cycling.conf): 0007b-cycling.conf 0007b-cycling.conf Clona ora? (sì / no) y ============================================ ======= WordPress Clonazione sta iniziando ======================================= ============ tar:.: file modificato mentre lo leggiamo define ('RELOCATE', true); ================================ Directory duplicata ================ ================================================ Database duplicato ================================ Abilitare il sito 0007b-cycling. Per attivare la nuova configurazione, è necessario eseguire: service apache2 reload * Ricaricamento del server web apache2 * ============================== == Aggiunta configurazione Web ================================ Il clone è completo. Test all'indirizzo http://cycling.io ================================

Nei miei piccoli siti WordPress, la duplicazione richiedeva solo da 30 a 90 secondi!

Stampa fine

Ci sono ancora un paio di cose che devi sapere.

Percorso di accesso diretto in primo luogo

Per prima cosa, per accedere al tuo sito clonato, dovrai utilizzare il percorso wp-login.php piuttosto che wp-admin che reindirizza all'URL del sito di origine, ad es. http://clone.io/wp-login.php come mostrato di seguito:

Modifica dei domini

Dal momento che WordPress esegue l'hardcode di gran parte del dominio di origine nel database, ho scoperto che l'utilizzo di RELOCATE impostando in wp-config.php è facile aggiornarlo Generale> Impostazioni. Hai appena salvato il modulo con il nuovo URL di destinazione:

Una volta salvato l'URL di destinazione clonato, puoi rimuovere il RELOCATE impostazione manuale da wp-config.php.

Tuttavia, un collega suggerisce che potresti voler utilizzare uno strumento come Ricerca e sostituzione di InterconnectIT per i database WordPress. È anche stato documentato su Envato Tuts + in Migrazione di WordPress tra host, server e URL.  

The Final Script

Ecco lo script finale per wpclone.sh-sentiti libero di cambiare i valori di default:

#! / bin / bash -e # Clona un sito WordPress tramite script Bash clear echo "=============================== ==================== "echo" Script WordPress clone "echo" ===================== ============================== "# Imposta le impostazioni predefinite (utile per il test) 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_target_conf = $" gardening.conf "default_source_dbname = $" giardinaggio "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 = $ (data + "% Y-% m-% d-% H% M") #Request MySQL Admin read -p "Nome utente MySQL Master (es." $ default_mysql_user " ): "mysql_user mysql_user = $ mysql_user : - $ default_mysql_user echo $ mysql_user read -p "MySQL Master Password (ad es. "$ default_mysql_pass"): "mysql_pass mysql_pass = $ mysql_pass: - $ default_mysql_pass echo $ mysql_pass # Richiedi impostazioni sorgente read -p" Dominio sorgente (es. "$ default_source_domain"): "source_domain source_domain = $ source_domain: - $ default_source_domain  echo $ source_domain read -p "Source Directory (nessuna barra finale es." $ default_source_directory "):" source_directory source_directory = $ source_directory: - $ default_source_directory echo $ source_directory read -p "Nome del database di origine (ad esempio" $ default_source_dbname ") : "source_dbname source_dbname = $ source_dbname: - $ default_source_dbname echo $ source_dbname read -p" Utente del database di origine (ad esempio "$ default_source_dbuser"): "source_dbuser source_dbuser = $ source_dbuser: - $ default_source_dbuser echo $ source_dbuser read -p" Passo del database sorgente (es. "$ Default_source_dbpass"): "source_dbpass source_dbpass = $ source_dbpass: - $ default_source_dbpass echo $ source_dbpass # Richiedi impostazioni sorgente read -p" File conf sorgente (es. "$ Default_source_conf "):" source_conf source_conf = $ source_conf: - $ default_source_conf echo $ source_conf # Richiedi impostazioni di destinazione read -p "Dominio di destinazione (ad es. "$ default_target_domain"): "target_domain target_domain = $ target_domain: - $ default_target_domain echo $ target_domain read -p" Directory di destinazione (nessuna barra finale es. "$ default_target_directory"): "target_directory target_directory = $ target_directory: - $ default_target_directory echo $ target_directory read -p "Nome del database di destinazione (ad esempio" $ default_target_dbname "):" target_dbname target_dbname = $ target_dbname: - $ default_target_dbname echo $ target_dbname read -p "Utente del database di destinazione (ad esempio" $ default_target_dbuser "):" target_dbuser target_dbuser = $ target_dbuser: - $ default_target_dbuser echo $ target_dbuser leggi -p "Target Database Pass (es." $ default_target_dbpass "):" target_dbpass target_dbpass = $ target_dbpass: - $ default_target_dbpass echo $ target_dbpass read -p "Target Conf File (ad esempio "$ default_target_conf"): "target_conf target_conf = $ target_conf: - $ default_target_conf echo $ target_conf echo" Clona ora? (y / n) "leggi -e corri se [" $ corri "== n]; quindi esci echo altro" ======================== =========================== "echo" WordPress Clonazione inizia "echo" ============= ====================================== "#backup source_directory cd $ source_directory # aggiungi l'opzione -v a questi se vuoi vedere elenchi di file dettagliati tar -czf source_clone_ $ NOW.tar.gz. #unzip clone nella directory di destinazione mkdir -p $ target_directory tar -xzf source_clone_ $ NOW.tar.gz -C $ target_directory #remove tarball di source rm source_clone_ $ NOW.tar.gz cd $ target_directory # Reimposta directory Permessi trovare $ target_directory -tipo d -exec chmod 755  \; trova $ target_directory -tipo f -exec chmod 644  \; #set dettagli del database con perl trova e sostituisci perl -pi -e "s / $ nome_database / $ nome_destinazione / 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', vero);" | 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 duplicata" echo " ================================ "# Inizia la duplicazione del database # Esporta il database mysqldump -u $ mysql_user -p $ mysql_pass $ source_dbname> $ target_directory / clone_ $ NOW.sql # Creare il database di destinazione e le autorizzazioni mysql -u $ mysql_user -p $ mysql_pass -e "creare il database $ target_dbname; GRANT ALL PRIVILEGES SU $ target_dbname. * TO '$ target_dbuser' @ ' localhost 'IDENTIFICATO DA' $ target_dbpass '"# Importa il database sorgente nel mysql di destinazione -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

Se hai suggerimenti e personalizzazioni, faccelo sapere. Pubblica i tuoi pensieri qui sotto nei commenti.

Pulizia per test estesi

Le seguenti linee potrebbero essere utili per l'eliminazione e l'annullamento dei siti di test clonati. Puoi personalizzarlo in base alle tue esigenze:

 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;"

Modifica delle chiavi di sicurezza in Wp-Config.php

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

/ ** # @ + * Authentication Unique Keys and Sts. * * Cambia questi in diverse frasi uniche! * Puoi generarli utilizzando il @link https://api.wordpress.org/secret-key/1.1/salt/ servizio di chiave segreta di WordPress.org * Puoi cambiarli in qualsiasi momento per invalidare tutti gli esistenti biscotti. Ciò costringerà tutti gli utenti a dover accedere di nuovo. * * @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:! 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!#>un ,, g |) ~ EKBQUig7Uv.-8 q% lmFte, P>,] f # i'Wx8S + _S @ & ( ')?..; / ** # @ - * /

Puoi semplicemente visitare https://api.wordpress.org/secret-key/1.1/salt/ e tagliarli e incollarli nel tuo file wp-config.php:

Ora, se sei un purista di script di Linux, ti permetterò di aggiornare lo script di installazione Bash di WordPress di Gallagher. Il suo copione è stato copiato sul file WordPress predefinito di wp-config.php, in modo da avere delle stringhe di fonte prevedibili da sostituire con i tasti generati dallo script:

#set WP salts perl -i -pe 'BEGIN @chars = ("a" ... "z", "A" ... "Z", 0 ... 9); spingere @chars, split //, "! @ # $% ^ & * () -_ []  <> ~ \ '+ = ,.;: /? |"; sub salt join "", mappa $ chars [rand @chars], 1 ... 64 s / inserisci la tua frase unica qui / salt () / ge 'wp-config.php

Non ho mai scritto una regex per sostituire i valori chiave nei file wp-config.php preesistenti dinamici dei nostri siti di origine. Se decidi di farlo, per favore condividilo nei commenti e grazie in anticipo.

Domande?

Mi è piaciuto molto far funzionare questo script. Oppure, dovrei almeno dire che mi è piaciuto farlo funzionare quando ho finito. Ho desiderato di averlo creato molto tempo fa perché è incredibilmente efficace ed efficiente. Potrei clonare piccoli siti WordPress e farli funzionare sul mio server in circa 60 secondi. Nessuno degli altri plug-in o delle opzioni di duplicazione è altrettanto semplice.

Se hai domande, per favore pubblicale qui sotto. Oppure puoi contattarmi su Twitter @reifman o scrivermi direttamente via email. Si prega di controllare la mia pagina Envato Tuts + istruttore per vedere altri tutorial che ho scritto, come ad esempio la mia serie di avvio (Building Your Startup With PHP).

Link correlati

  • Script di installazione di WordPress Bash di Brian Gallagher
  • Spostamento di WordPress
  • Uno script di shell per un completo backup di WordPress di Konstantin Kovshenin
  • Plugin WordPress disponibili su CodeCanyon