Adesea îmi place să lansez un nou site WordPress bazat pe un site existent, ca șablon. Configurațiile pentru teme, pluginuri și setări pot fi foarte utile pentru a începe, spre deosebire de o instalare curată unde trebuie să repetați totul de la început.
În construirea unei imagini de aplicație pentru a revinde la Oceanul Digital, am trecut prin construirea unei picături instalate, preconfigurate și pre-optimizate WordPress. În esență, este o imagine a Oceanului digital care poate lansa un site WordPress complet încărcat în câteva minute. Dar, mai des, vreau să adaug un site WordPress la unul din serverele mele existente.
Există o serie de modalități de a face acest lucru, dar de multe ori am constatat că acestea necesită o abordare specifică și detaliată, pe care par să o revin de fiecare dată. Am decis că a venit timpul să vină cu un script de shell Linux care să facă totul în câteva minute pentru mine.
În acest tutorial, vă voi trece prin cercetarea mea și rezultatul clone script pentru WordPress. Sper că îți place - am crezut că a funcționat destul de bine când am terminat cu asta.
Înainte de a începe, amintiți-vă, încerc să particip la discuțiile de mai jos. Dacă aveți o întrebare sau o sugestie de subiect, vă rugăm să postați un comentariu de mai jos sau să mă contactați pe Twitter @reifman. De asemenea, puteți să-mi trimiteți un e-mail direct. Mă aștept la o serie de idei și îmbunătățiri pentru acest scenariu. Aș aprecia să aud de la dvs..
Deseori puteți să începeți un nou site web prin migrarea unui site existent pe un server nou, copiindu-l în esență și construindu-l pe copie în timp ce părăsiți site-ul sursă intact. Există o serie de abordări în acest sens.
În deplasarea WordPress pe o nouă ediție a serverului cu WordPress, am scris despre utilizarea pluginului Duplicator pentru a face acest lucru - dar am descoperit că procesul este greoi. Refamiliarizarea mea cu Duplicator de fiecare dată când am nevoie pentru a muta un site a fost, de asemenea, dificil.
Recent am scris despre acest lucru în Backing Up și restaurarea site-ului dvs. WordPress cu CodeGuard pentru Envato Tuts +. Este un serviciu care face acest proces un pic mai ușor. Și, în curând, va fi lansat modul de simplificare a gestionării mai multor site-uri WordPress, care descriu o serie de avantaje puternice în utilizarea programului ManageWP. Are o caracteristică de clonare, dar necesită FTP - din motive de securitate, evit să rulez FTP pe serverele mele.
Există, de asemenea, seria Envato Tuts + din două părți a lui Rachel McCollin: Moving WordPress: Introducere și WordPress în mișcare: Folosind pluginuri pentru a vă muta site-ul. Și există acest tutorial la WPBeginner care folosește BackupBuddy. În cele din urmă, WPClone nu are nevoie de FTP, dar necesită o instalare curată WordPress pe care să o construiți.
Puteți învăța multe din toate aceste tutoriale și servicii, dar am vrut să văd dacă aș putea crea un script de linie de comandă care clonă un site WordPress mai repede și mai ușor, de fiecare dată.
Pentru a scrie acest tutorial, m-am bazat foarte mult pe lucrările anterioare ale altora pentru a-mi începe să cunosc cunoștințele de script-uri bash și de manipulare a site-urilor WordPress. Nu m-am considerat niciodată un expert administrator de sistem Linux. În cele din urmă, am decis să construiesc scriptul meu de clonare în partea de sus a lui WordPress Bash Installer Script al lui Brian Gallagher.
Notă: Acestea sunt scripturi de instalare bazate pe Debian; alte arome de Linux precum RedHat și CentOS au căi diferite pentru Apache și diferite utilitare.
Iată descrierea lui Gallagher a scriptului său de bază:
Descărcați cea mai recentă versiune WP, actualizările wp-config cu numele de utilizator furnizat de utilizator, numele de utilizator și parola, creează și încărcăturile CHMOD, copiază toate fișierele în directorul rădăcină pe care îl executați, apoi se șterge!
Există o mulțime de scenarii bine organizate aici pentru început, dar am vrut să fac ceva care să cloneze un site activ. Să analizăm arhitectura unei configurații tipice WordPress.
O instalare tipică WordPress are patru componente primare pentru clonare:
Există, de asemenea, setări de informații, acces și securitate de care avem nevoie:
Iată ce trebuie să specificăm pentru site-ul clonat:
În mod manual, va trebui să actualizăm DNS pentru noul domeniu țintă. Vă recomandăm să creați înregistrări DNS înainte de a începe, astfel încât acestea să fie gata odată ce site-ul dvs. este clonat. Nu este nimic de genul clonării unui site și imposibilitatea de a testa numele de domeniu, deoarece așteptați DNS-ul.
Acum, suntem gata să vedem cum funcționează arhitectura scenariului. Din nou, am început să folosesc scriptul de instalare WordPress al lui Gallagher pentru început și aveți nevoie de linia inițială de bash în partea de sus:
#! / bin / bash -e # Clonați un site WordPress prin ecoul ecou clar Bash "=============================== ==================== "echo" Clone WordPress Script "echo" ===================== ==============================“
Înainte de a duplica un site, trebuie să configurați DNS pentru site-ul clonat. Puteți citi despre configurația DNS pentru un nou site WordPress aici. Sunt, de asemenea, încântat de acest tutorial Envato Tuts +, Introducere în învățarea și utilizarea înregistrărilor DNS.
Practic, trebuie să creați o înregistrare A sau CNAME care să direcționeze URL-ul dvs. de clonă dorit către serverul pe care îl duplicăm.
Pe serverul meu, creez un script de bash numit clonewp.sh. Va avea nevoie de permisiuni executabile:
chmod + x clonewp.sh
Apoi, după ce este completă, o puteți executa astfel:
sudo bash clonewp.sh
Vă recomandăm să rulați scriptul ca sudo, astfel încât să nu rulați în probleme de permisiune de fișiere.
În scopul testării, am creat abilitatea de a preîncărca scriptul cu setările implicite. Mi-a ajutat să alerg prin teste în mod repetat, fără să trebuiască să repet totul. De asemenea, am crezut că ar putea fi util pentru persoanele care vor să modifice mai târziu scenariul sau să o folosească în alte moduri.
Iată toate setările implicite:
# Setări implicite pentru testarea default_mysql_user = $ "root-admin" default_mysql_pass = $ "parola super-puternică" default_source_domain = $ "gardening.io" default_target_domain = $ "cycling.io" default_source_directory = www / grădinărit "default_target_directory = $" / var / www / ciclism "default_apache_directory = $" / etc / apache2 / sites-available "default_source_conf = $" gardening.conf "default_target_conf = default_source_dbuser = $ "user_for_garden" implicit_source_dbpass = $ "pwd_garden" default_target_dbname = $ "ciclism" default_target_dbuser = $ "user_for_cycling" default_target_dbpass = $ "pwd_cycling" NOW = $ (date% „)
Știu că pare o mulțime, dar mi-am dat seama că este util să ai un utilizator și o parolă MySQL master pentru backup-uri de baze de date, crearea de baze de date și importuri. Cu toate acestea, a fost de asemenea util să aveți utilizatorul bazei de date și parolele bazei de date specifice site-ului pentru a stabili privilegii bazei de date țintă și pentru a căuta și înlocui în fișierul wp-config.php. Aceasta face ca procesul final de clonare să fie foarte simplu.
Am folosit marcajul TIMP pentru a vă asigura că arhivele create sunt unice.
Următorul cod afișează implicit utilizatorului și îi permite să-l accepte (apăsând pe returnare) sau înlocuindu-l:
# Sursa de domenii (de exemplu "$ default_source_domain"): "source_domain source_domain = $ source_domain: - $ default_source_domain echo $ source_domain read -p" "source_directory source_directory = $ source_directory: - $ default_source_directory echo $ source_directory read -p" Numele bazei de date sursă (de exemplu "$ default_source_dbname"): "source_dbname source_dbname = $ source_dbname: - $ default_source_dbname Utilizatorul bazei de date (de exemplu, "$ default_source_dbuser"): "source_dbuser source_dbuser = $ source_dbuser: - $ default_source_dbuser echo $ source_dbuser read -p" default_source_dbpass echo $ source_dbpass # Setați setările sursă read -p "Source File Conf (de exemplu" $ default_source_conf "):" source_conf source_conf = $ source_conf: - $ default_source_conf echo $ source_conf # t Setări citiți -p "Domeniul țintă (de ex. "target_directory target_directory = $ target_directory: - $ default_target_directory):" target_domain target_domain = $ target_domain: $ default_target_domain echo $ target_domain read -p " echo $ target_directory read -p "Numele targetului de bază de date (de exemplu" $ default_target_dbname "):" target_dbname target_dbname = $ target_dbname: - $ default_target_dbname echo $ target_dbname read -p " target_dbuser = $ target_dbuser: - $ default_target_dbpass - $ default_target_dbpass echo $ target_dbpass read -p "Target Configuration File (de exemplu" $ default_target_dbpass " (de exemplu, "$ default_target_conf"): "target_conf target_conf = $ target_conf: - $ default_target_conf echo $ target_conf
Odată ce colectăm toate setările de la utilizator, întrebăm dacă doresc să înceapă:
echo "clona acum? (y / n)" citește -e executați dacă ["$ run" == n]; apoi ieșiți din alt ecou "============================================= ====== "echo" Clonarea WordPress începe "ecou" ================================== =================“
Acum, lucrurile se mișcă puțin mai repede. Creăm tarbale ale site-ului sursă, facem un director țintă și extragem tarball acolo:
#backup source_directory cd $ source_directory # add -v opțiune pentru acestea, dacă doriți să vedeți fișiere de fișiere verbale tar -czf source_clone_ $ NOW.tar.gz. #unzip clone în directorul țintă mkdir -p $ target_directory tar -xzf source_clone_ $ NOW.tar.gz -C $ target_directory #reduce tarball al sursei rm source_clone_ $ NOW.tar.gz cd $ target_directory
De asemenea, rulați permisiunile standard pentru fișiere pentru WordPress pentru a vă asigura că totul este configurat corect și sigur:
# Resetare Permisiuni director găsiți $ target_directory -type d -exec chmod 755 \; găsi $ target_directory -type f -exec chmod 644 \;
Apoi, folosim perl pentru a căuta și înlocui autentificarea bazei de date sursă cu informațiile din baza de date destinație:
#set detalii despre baza de date cu perl găsi și înlocui 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 "definiți ('WP_HOME', 'http: // $ target_domain');" | tee -a wp-config.php #echo "definiți ('WP_SITEURL', 'http: // $ target_domain');" | tee -a wp-config.php echo "================================" echo "director duplicat" ecou " ================================“
De asemenea, adaug adăugarea reloca
setarea la sfârșitul fișierului. Dacă doriți, puteți înlocui acest lucru cu static WP_HOME
și WP_SITEURL
setări.
Apoi, dumpăm baza de date, creăm o bază de date nouă cu permisiuni pe care utilizatorul le-a furnizat și apoi le importăm:
# Începeți duplicarea bazei de date # Exportați baza de date mysqldump -u $ mysql_user -p $ mysql_pass $ source_dbname> $ target_directory / clone_ $ NOW.sql # Creați baza de date țintă și permisiuni mysql -u $ mysql_user -p $ mysql_pass -e " target_dbname; GRANT ALL PRIVILEGES pe $ target_dbname. * TO '$ target_dbuser' @ 'localhost' IDENTIFICAT DE '$ target_dbpass' "# Importați baza de date sursă în mysql țintă -u $ mysql_user -p $ mysql_pass $ target_dbname < $target_directory/clone_$NOW.sql echo "================================" echo "Database duplicated" echo "================================"
Din nou, mi sa părut că este mai bine să folosiți autentificarea master MySQL pentru aceste activități în timp ce configurați setările bazei de date pe baza site-ului sursă și a setărilor pentru clone unice.
În cele din urmă, suntem gata să încheiem și să apăsăm butonul de lansare. Este rar văd că aceste tipuri de script-uri gestionează pasul suplimentar pentru configurarea serverului web. Și eu am vrut să fac asta.
Am copiat fișierul Apache de pe site-ul sursă al fișierului sursă într-un fișier .conf nou pentru clona. Am folosit perl pentru un șir de înlocuire pentru domeniile și căile de director. Apoi, am activat site-ul cu Apache și am reîncărcat serverul web:
#Activate Configurația Web cp $ default_apache_directory / $ source_conf $ default_apache_directory / $ target_conf #set detalii despre baza de date cu perl găsi și înlocui perl -pi -e "s / $ source_domain / $ target_domain / g" $ default_apache_directory / $ target_conf perl -pi -e "$ source_directory | $ target_directory | g" $ default_apache_directory / $ target_conf serviciu a2ensite $ target_conf apache2 reload echo "====================== ========== "echo" Configurația Web a adăugat "echo" =============================== = "ecou" Clona este completă. " echo "Test la http: //" $ target_domain echo "================================" fi
Si asta e. Iată ce arată un scenariu al scenariului în viața reală:
================================================== = Clone WordPress Script ============================================== ===== MySQL Master Utilizator (de exemplu, root-admin): harry_potter harry_potter Parola Master MySQL (de ex. Parola super-puternica): voldemoort ~ jenny7! voldemoort ~ jenny7! Sursa de domeniu (de exemplu, gardening.io): gardening.io Sursa Directory (nr slash de exemplu / var / www / grădinărit): / var / www / grădinărit Sursa Numele bazei de date (de exemplu, grădinărit): database_gardening database_gardening Sursa Baza de date de utilizator (de exemplu, user_for_garden) : hermione hermione Sursa bazei de date a sursei (de exemplu, pwd_garden): 987654321abcdefgh #! 987654321abcdefgh # Sursa Conf File (de exemplu, gardening.conf): gardening.conf gardening.conf Domeniul țintă (de exemplu cycling.io): cycling.io Director țintă (de ex., var / www / ciclism): / var / www / ciclism / var / www / ciclism Numele bazei de date țintă (de exemplu ciclism): database_cycling database_cycling Utilizator baze de date țintă (de exemplu user_for_cycling) pwd_for_cycling_not_hogwartz Fișier Conf File țintă (de ex. cycling.conf): 0007b-cycling.conf 0007b-cycling.conf Clona acum? (y / n) y ============================================ ======= Clonarea WordPress este începutul ======================================= ============ tar:.: fișierul sa schimbat pe măsură ce l-am citit definit ('RELOCATE', true); ================================ Directorul duplicat ================ ================================================= Bază de date duplicată ================================ Activarea site-ului 0007b-ciclism. Pentru a activa noua configurație, trebuie să rulați: service apache2 reload * Reîncărcarea serverului web apache2 * ============================== == Configurația Web adăugată ================================ Clona este finalizată. Testați la http://cycling.io ============================
Pe micile mele site-uri WordPress, duplicarea a durat doar 30-90 de secunde!
Există încă câteva lucruri pe care trebuie să le cunoașteți.
Mai întâi, pentru a vă conecta la site-ul dvs. clonat, va trebui să utilizați mai degrabă calea wp-login.php decât wp-admin care redirecționează către adresa URL a site-ului sursă, de ex. http://clone.io/wp-login.php după cum se arată mai jos:
Din moment ce WordPress hardcodes o mare parte din domeniul dvs. sursă în baza de date, am constatat că utilizarea reloca
setarea în wp-config.php ușurează actualizarea acestui lucru General> Setări. Salvați formularul cu noua adresă URL de destinație:
Odată ce ați salvat URL-ul țintă clonat, îl puteți elimina reloca
setarea de la wp-config.php manual.
Cu toate acestea, un coleg sugerează că este posibil să doriți să utilizați un instrument precum Search and replace for WordPress de baze de date InterconnectIT. De asemenea, a fost documentat la Envato Tuts + în migrarea WordPress între gazde, servere și adrese URL.
Iată scriptul final pentru wpclone.sh - nu ezitați să modificați valorile prestabilite:
#! / bin / bash -e # Clonați un site WordPress prin ecoul ecou clar Bash "=============================== ==================== "echo" Clone WordPress Script "echo" ===================== ==============================“# Setări Setare implicite (utile pentru testare) default_mysql_user = $ "root-admin" default_mysql_pass = $ "parola super-puternică" default_source_domain = $ "gardening.io" default_target_domain = $ "cycling.io" default_source_directory = $ "/ var / www / gardening" default_target_directory = / etc / apache2 / site-uri disponibile "default_source_conf = $" gardening.conf "default_target_conf = $" ciclare.conf "default_source_dbname = $" grădinărit "default_source_dbuser = $" user_for_garden "default_target_dbname = = $ "user_for_cycling" default_target_dbpass = $ "pwd_cycling" ACUM = $ (data + "% Y-% m-% d-% H% M") #Request MySQL Admin read -p " ): "mysql_user mysql_user = $ mysql_user : - $ default_mysql_user echo $ mysql_user citiți -p "Parola Master MySQL (de ex. "$ default_mysql_pass"): "mysql_pass mysql_pass = $ mysql_pass: - $ default_mysql_pass echo $ mysql_pass # Setați setările sursă read -p" Domeniul sursă (de exemplu "$ default_source_domain"): "source_domain source_domain = $ default_source_domain echo $ source_domain read -p "Directorul sursă (fără slash, de exemplu," $ default_source_directory "):" source_directory source_directory = $ source_directory: $ default_source_directory echo $ source_directory read -p " : "source_dbname sursă_dbname = $ source_dbname: - $ default_source_dbname echo $ source_dbname citire -p" Utilizator bază de date sursă (de exemplu "$ default_source_dbuser"): "source_dbuser source_dbuser = $ source_dbuser echo $ source_dbuser read -p" (De exemplu, "$ default_source_dbpass"): "source_dbpass source_dbpass = $ source_dbpass: - $ default_source_dbpass echo $ source_dbpass # "):" sursa_conf sursă_conf = $ source_conf: - $ default_source_conf echo $ source_conf # Solicitați setările țintă citiți -p "Domeniul țintă (de ex. "target_directory target_directory = $ target_directory: - $ default_target_directory):" target_domain target_domain = $ target_domain: $ default_target_domain echo $ target_domain read -p " echo $ target_directory read -p "Numele targetului de bază de date (de exemplu" $ default_target_dbname "):" target_dbname target_dbname = $ target_dbname: - $ default_target_dbname echo $ target_dbname read -p " target_dbuser = $ target_dbuser: - $ default_target_dbpass - $ default_target_dbpass echo $ target_dbpass read -p "Target Configuration File (de exemplu" $ default_target_dbpass " (de exemplu, "$ default_target_conf"): "target_conf target_conf = $ target_conf: - $ default_target_conf echo $ target_conf echo" Clona acum? (y / n) "citiți -e executați dacă [" $ run "== n]; apoi ieșiți alt ecou" ================================================ =========================== "echo" Clonarea WordPress începe "ecou" ============= ======================================“#backup source_directory cd $ source_directory # adăuga opțiunea -v dacă doriți să vedeți fișiere complexe de fișiere tar -czf source_clone_ $ NOW.tar.gz. #unzip clone în directorul destinație mkdir -p $ target_directory tar -xzf source_clone_ $ NOW.tar.gz -C $ target_directory #remove tarball pentru sursă rm source_clone_ $ NOW.tar.gz cd $ target_directory # Resetați permisiunile directorului găsi $ target_directory -type d -exec chmod 755 \; găsi $ target_directory -type f -exec chmod 644 \; găsi și înlocui 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 # http: // $ target_domain ");" tee -a wp-config.php #echo "definiți ('WP_SITEURL', 'http: // $ target_domain');" | tee -a wp-config.php echo "================================" echo "director duplicat" ecou " ================================“# Inceput baza de date Dublarea # Export baza de date mysqldump -u $ mysql_user -p $ mysql_pass $ source_dbname> $ target_directory / clone_ $ NOW.sql # Creați baza de date țintă și permisiuni mysql -u $ mysql_user -p $ mysql_pass -e "creați baza de date $ target_dbname; GRANTAȚI TOATE PRIVILEGIILE pe $ target_dbname. * TO '$ target_dbuser' @ ' localhost 'IDENTIFICAT DE' $ target_dbpass '"# Importați baza de date sursă în mysql țintă -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
Dacă aveți sugestii și personalizări, anunțați-ne. Postați-vă gândurile de mai jos în comentarii.
Următoarele rânduri vă pot fi utile pentru ștergerea și anularea site-urilor de testare pe care le clonați. Puteți să o personalizați după nevoile dvs.:
sudo rm -ifr / var / www / clona sudo a2dissite clone.conf serviciu sudo apache2 reload sudo rm /etc/apache2/sites-available/clone.conf mysql -u root -p -e "drop clona de baze de date";
De asemenea, puteți să vă asigurați mai bine noul site WordPress prin înlocuirea manuală a cheilor de autentificare și a sărurilor în wp-config.php site-ului de destinație:
/ ** # @ + * Authentication Unic Keys and Salts. * * Schimbă-le la diferite fraze unice! * Puteți să le generați utilizând serviciul cheie @link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org * Puteți modifica aceste informații în orice moment pentru a invalida toate cele existente cookie-uri. Acest lucru va obliga toți utilizatorii să se conecteze din nou. * * @ din 2.6.0 * / define ('AUTH_KEY', '+ 9% S? YVnr% 5Vr! Et4J, @ 9 / Z ^ .kT_Lu ~ 5SGwr9 = -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/HksMh Zio |% | cisp1R 9cJ< Rz-J;H|:O2A7$+*aGXMH!+KvD+tZ/I*U5$'); define('NONCE_SALT', '[ytQ;C)BvgU!#>o ,, g |) ~ EKBQUig7Uv.-8 q% lmFte, P>,] f # i'Wx8S + _S @ & ( ')?..; / ** # @ - * /
Puteți să vizitați https://api.wordpress.org/secret-key/1.1/salt/ și să le tăiați și să le inserați în fișierul wp-config.php:
Acum, dacă sunteți un purist script de Linux, vă voi lăsa să actualizați programul WordPress Bash Install Script al lui Gallagher. Scriptul său a fost copiat peste WordPress implicit wp-config.php, astfel încât el ar avea șiruri de surse previzibile care să înlocuiască cu cheile generate de scriptul său:
#set sare WP perl -i -pe 'BEGIN @chars = ("a" ... "z", "A" ... "Z", 0 ... 9); împingeți @chars, împărțiți //, "! @ # $% ^ & * () -_ [] <> ~ \ '+ = ;.;: /? |"; sub sare join "", harta $ chars [rand @chars], 1 ... 64 s / puneți aici fraza unică / salt () / ge 'wp-config.php
N-am scris nici un regex pentru a înlocui valorile cheie în fișierele wp-config.php dinamice pre-existente ale site-urilor noastre sursă. Dacă vă decideți, vă rugăm să-l împărtășiți în comentarii și mulțumesc în prealabil.
Mi-a plăcut foarte mult să lucrez acest scenariu. Sau, ar trebui cel puțin să spun că mi-a plăcut să alerg atunci când am terminat. Mi-aș fi dorit să fi creat-o cu mult timp în urmă, fiind incredibil de eficientă și eficientă. Aș putea clona site-uri mici WordPress și le-aș putea rula pe serverul meu în aproximativ 60 de secunde. Niciunul dintre celelalte plugin-uri sau opțiuni de dublare nu este la fel de simplu.
Dacă aveți întrebări, vă rugăm să le postați mai jos. Sau, puteți să mă contactați pe Twitter @reifman sau să mă trimiteți direct prin e-mail. Vă rugăm să consultați pagina de instructor Envato Tuts + pentru a vedea alte tutoriale pe care le-am scris, cum ar fi seria de pornire (Building Your Startup With PHP).