Cum să: Muți ușor o instalare WordPress de pe Development pe Production?
Fac dezvoltarea pe o mașină și folosesc o a doua pentru producție. În prezent, pur și simplu export baza de date și apoi fac un find și replace pentru schimbările de URL-uri; apoi copiez fișierele și import noul SQL.
Există modalități mai bune de a face acest lucru?

@Insanity5902: Migrarea unui site WordPress de pe un server pe altul a fost întotdeauna o durere de cap încă de la începutul lucrului cu WordPress. (Să fiu sincer, a fost la fel de dificil și cu Drupal timp de 2 ani înainte să încep cu WordPress, deci problema nu este exclusivă WordPress-ului.)
Mă enerva faptul că de fiecare dată când trebuia să mut un site, petreceam atât de mult efort, adesea duplicat, și asta m-a împiedicat să fac deploy la mediu de testare cât de des aș fi vrut. Așa că acum 4-6 luni am început să lucrez la un plugin pentru a rezolva problema migrării între gazde web și am menționat ideile mele pe forumul WP Tavern.
Ei bine, acum am reușit să-l fac funcțional și l-am numit "WP Migrate Webhosts". Chiar dacă pluginul este încă în stadiu beta (poate chiar alpha), având în vedere întrebarea ta, cred că sunt gata să permit altor oameni să îl testeze.
Cazul de utilizare imaginat este următorul:
- mai întâi, dezvoltatorul încarcă toate fișierele modificate ale temei și pluginurilor prin FTP,
- apoi încarcă întreaga bază de date MySQL pe serverul de testare,
- și abia apoi rulează pluginul pentru a migra toate referințele de la domeniul anterior la cel nou. (Pluginul meu nu încearcă să rezolve problema combinării noilor câmpuri sau tabele din baza de date cu datele live; ACELEA sunt probleme mult mai mari pentru care încă nu am o soluție.)
Puteți descărca pluginul de pe site-ul meu și să-l dezarhivați în directorul de pluginuri (dacă nu știți cum să faceți asta, atunci acest plugin nu este pentru voi, deoarece necesită cineva care știe ce face). Voi păstra acest plugin online până când îl voi lansa pe WordPress.org, moment în care ar trebui să-l căutați acolo.
Pentru a-l folosi, aveți o abordare diferită în wp-config.php
față de cea obișnuită, comentând cele patru (4) definiții DB_NAME
, DB_USER
, DB_PASSWORD
și DB_HOST
și în schimb înregistrând valorile implicite pentru gazdele web, apoi înregistrând informații despre fiecare gazdă. Iată cum ar putea arăta acel segment din wp-config.php
(observați că prima secțiune este codul inutil comentat și că am configurat fișierul hosts pe mașina locală cu domenii de nivel superior .dev
care nu pot fi rutate, pentru a ușura dezvoltarea zilnică. Pe Mac, VirtualHostX face asta foarte ușor):
// ** Setări MySQL - Puteți obține aceste informații de la gazda web ** //
/** Numele bazei de date pentru WordPress */
//define('DB_NAME', 'wp30');
/** Numele utilizatorului MySQL */
//define('DB_USER', 'wp30_anon');
/** Parola MySQL */
//define('DB_PASSWORD', '12345');
/** Gazda MySQL */
//define('DB_HOST', '127.0.0.1:3306');
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
'database' => 'example_db',
'user' => 'example_user',
'password' => '12345',
'host' => 'localhost',
'sitepath' => '', // '' dacă WordPress este instalat în root
));
register_webhost('dev',array(
'name' => 'Example Local Development',
'host' => '127.0.0.1:3306',
'domain' => 'example.dev',
'rootdir' => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
'name' => 'Example Test Server',
'rootdir' => '/home/example/public_html/test',
'domain' => 'test.example.com',
));
register_webhost('stage',array(
'name' => 'Example Staging Server',
'rootdir' => '/home/example/public_html/stage',
'domain' => 'stage.example.com',
));
register_webhost('live',array(
'name' => 'Example Live Site',
'rootdir' => '/home/example/public_html/',
'password' => '%asd59kar12*fr',
'domain' => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');
Sper că acest lucru este (în mare parte) auto-explicativ. Am încercat să fac codul cât mai curat posibil, dar din păcate necesită acele două linii criptice require_once()
înainte și după blocul de înregistrare a gazdelor web, deoarece nu am avut cum să "agăț" WordPress înainte ca wp-config.php
să fie apelat.
După ce ați actualizat wp-config.php
, puteți folosi direct scurtătura URL wp-migrate-webhosts
pentru a accesa ecranul de administrare, astfel:
Acest lucru vă va duce la un ecran de administrare similar cu următorul, care conține destul de mult text descriptiv și vă permite să migrați DE LA oricare dintre celelalte domenii ale gazdelor web cu un singur click după selectarea domeniilor de migrat (NOTĂ: acest exemplu arată migrarea ÎN JOS de la serverele de testare/staging/live la mediul local de dezvoltare, dar asigurați-vă că poate migra CĂTRE orice domeniu în care se află. Asta înseamnă că pluginul va fi excelent pentru a prelua un site live existent și a obține rapid un mediu local de dezvoltare funcțional!):
Dacă nu este clar, "migrarea" în acest context înseamnă actualizarea tuturor referințelor din baza de date curentă pentru a fi potrivite pentru gazda web definită (iar "curenta" este detectată prin inspectarea $_SERVER['SERVER_NAME']
).
Ce este interesant la acest plugin este că implementează câteva migrări de bază, dar oricine poate să-l agațe și să efectueze propriile migrări. De exemplu, dacă adăugați un plugin de galerie care stochează căi complete către imagini în baza de date, puteți agăța acțiunea migrate_webhosts
care va primi gazda web "de la" și gazda "către" ca array-uri de metadate și vă va permite să efectuați orice operațiuni sunt necesare în baza de date folosind SQL sau orice funcții API WordPress aplicabile pentru a face migrarea. Da, oricare dintre noi am putea face asta fără plugin, dar fără el am constatat că scrierea întregului cod necesar era mai mult efort decât merită. Cu pluginul, este mult mai ușor să scrieți aceste mici agățări și să terminați rapid.
Este posibil să descoperiți că migrările mele eșuează în cazuri pe care nu le-am testat și poate mă puteți ajuta să îmbunătățesc pluginul? Oricine poate să mă contacteze prin contul meu de gmail (aliasul meu este "mikeschinkel.")
De asemenea, pluginul a fost conceput să accepte metadate definite de utilizator în plus față de cele recunoscute, cum ar fi database
, user
, password
, host
, domain
, etc. Un exemplu perfect ar fi googlemaps_apikey
, unde puteți stoca diferite chei API pentru fiecare domeniu de care pluginul vostru Google Maps are nevoie pentru a funcționa corect (cine dintre voi care a folosit un plugin Google Maps nu a implementat o aplicație pe un server live și a uitat să schimbe codul cu cheia API corectă? Haideți, fiți sinceri... :) Cu acest plugin, un element googlemaps_apikey
în array-ul register_webhost() și un mic hook personalizat migrate_webhosts
, puteți elimina efectiv această preocupare!
Cam asta este tot. Lansez acest plugin aici pe WordPress Answers Exchange pentru că întrebarea lui @Insanity5902 l-a determinat. Spuneți-mi dacă vă este util, aici dacă este cazul sau prin email dacă nu.
P.S. Dacă decideți să îl folosiți, amintiți-vă că este în stadiu alpha/beta, ceea ce înseamnă că se va schimba, așa că pregătiți-vă pentru o mică "intervenție chirurgicală" dacă doriți să îl folosiți acum și apoi să treceți la versiunea finală după ce a fost testat de mulți.
P.P.S. Care sunt obiectivele mele cu acest plugin? Mi-ar plăcea să văd acest lucru integrat în nucleul WordPress, astfel încât toată lumea să aibă acces la el. Dar înainte ca acest lucru să poată fi luat în considerare, mulți oameni trebuie să fie interesați să îl folosească pentru a asigura că rezolvă mai multe probleme decât ar putea crea. Așadar, dacă vă place ideea, nu ezitați să îl folosiți și să mă ajutați să câștig impuls pentru o posibilă includere în viitor în nucleul WordPress.

Soluții interesante, am câteva întrebări totuși: 1) Mai este nevoie să definești WP_SITEURL pentru a accesa zona de administrare? 2) Instrumentul este afișat doar pentru Utilizatorii Administrator? (nu sunt sigur dacă secțiunea Instrumente apare pentru non-admini)

Salut @Insanity5902:
1) Nu este nevoie să setezi WP_SITEURL, plugin-ul o face pentru tine. De fapt, îl setezi când "înregistrezi" un "domeniu" și "sitepath" pentru un webhost. În modul normal de funcționare al WordPress, WP_SITEURL trebuie setat fie în cod, fie în baza de date pentru a te asigura că nimeni nu poate falsifica URL-ul și să facă lucruri nefaste din cauza unei valori neașteptate în $_SERVER['SERVER_NAME']. Plugin-ul WP Migrate Websites setează WP_SITEURL indirect pe baza $_SERVER['SERVER_NAME'], dar VA FACE acest lucru DOAR dacă domeniul curent se potrivește cu unul dintre domeniile pe care le-ai definit în fișierul wp-config.php, nimic altceva.

2.) Scurtătura URL pe care am menționat-o face de fapt o redirecționare către consola de administrare, deci este doar pentru persoanele conectate în admin. Însă încă nu am implementat verificări specifice doar pentru administratori. Nu am adăugat încă capabilități într-un plugin, dar va trebui să cercetez cum se face în următoarele săptămâni, așa că pot lucra la asta în luna următoare. Totuși, plugin-ul nu este distructiv; poate migra DOAR către domeniul curent, iar procesul este repetabil, așa că chiar dacă un non-admin ar ajunge acolo, nu ar putea face niciun rău cu el, cel puțin nu așa cum îmi imaginez eu.

@Mike: Poți să-l adaugi în repository-ul de plugin-uri WordPress? Cred că asta ar aduce feedback suplimentar și sprijin din partea dezvoltatorilor.

@harke - Plănuiesc să o fac când va fi mai matur. Vreau să am 5-10 persoane care să-l folosească pentru a mă asigura că este robust și pentru a verifica validitatea cazurilor de utilizare înainte de a-l supune sistemului de rating din forumul de plugin-uri, deoarece cred că acest plugin are potențialul de a fi semnificativ dacă este gestionat corespunzător. De asemenea, vreau să-l documentez complet înainte de publicare, iar documentarea mă va obliga să validez multe dintre presupunerile făcute în timpul dezvoltării.

Mulțumesc pentru acest plugin. Îl testez în acest moment și pare să funcționeze foarte bine. Aș dori să-ți trimit feedback, unde este cel mai bun loc pentru asta?

@Sam Murray-Sutton - Văd în inbox-ul meu de email că ai reușit să îmi trimiți un email, dar dacă și alții doresc, am adresa de email pe pagina mea de profil.

Cu siguranță voi încerca asta. Momentan configurez primul meu mediu complet și sper să pot să-l conectez cu repository-ul meu de pe bitbucket. Oricum: Mulțumesc mult pentru a) explicații clare (din nou) și b) pentru împărtășirea de lucruri utile (din nou). Numai bine, Mike!

Acesta este în esență același proces pe care îl urmăm și cu wp-config.php. Abilitatea de a trimite cod pe un server de staging fără a strica totul este singura modalitate corectă de lucru. Noi nu facem transferul bazei de date prin WP, ci folosim un client mysql, care este la fel de eficient, deși poate puțin mai lent.

@mike cum aș putea folosi această metodă pentru a migra un singur site dintr-o configurație multisite (locală)?

@MikeSchinkel - poate ar fi bine să includem și asta în discuție: http://wordpress.stackexchange.com/questions/24314/wordpress-database-synch-between-dev-and-prod/24982#24982

/wp-migrate-webhosts returnează eroarea 404, iar /wp-admin afișează 'eroare la stabilirea conexiunii cu baza de date'

Când este posibil, definesc WP_HOME
și WP_SITEURL
în wp-config.php
. Această metodă, combinată cu un export și import al bazei de date, este cea mai simplă soluție din cele pe care le cunosc.
http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php

Când nu ar fi posibil să setăm acestea? Pare puțin mai simplu decât să modificăm lucruri în baza de date.

@jfklein Aproape întotdeauna lucrez cu o rețea WordPress, care este incompatibilă cu aceste constante.

Fac la fel. Din păcate, nu toate temele respectă acest lucru. De exemplu, 'Repsonsive Theme' de la ThemeID. Căutarea în dump/toate tabelele după 'http://localhost' (sau orice alt nume local ales), în special wp_options și efectuarea de înlocuiri este adesea inevitabilă.

@FranKee Am creat un plugin https://wordpress.org/plugins/pitta-migration/ care folosește constante pentru a actualiza tabelul wp_options, care ar trebui să acopere majoritatea temelor și pluginurilor

@icc97: Minunat. O să mă uit la el. PS: Frumoasă imagine în antet, ilustrează perfect situația.

Trucul meu preferat; adaugă o setare în /etc/hosts
pentru a face ca domeniul de producție să indice către mașina ta de dezvoltare, doar pe calculatorul tău. Pentru a implementa în producție, sincronizezi toate fișierele cu rsync și transferi baza de date.
Riscurile acestei strategii sunt evidente; ai putea confunda mediul de dezvoltare cu cel de producție.
Totuși, este o soluție ușoară.

Da! Sunt foarte bucuros că nu am fost singurul care s-a gândit la asta! orice diferență între dev și prod este proastă. Eliminarea completă a acelei diferențe este mult mai bună decât încercarea de a o ocoli. Și această configurație nu necesită deloc efort. Se poate face testarea chiar și pe o mașină virtuală cu fișierul hosts modificat dacă este necesar.

Îmi place foarte mult această metodă, dar cum gestionați transferul bazei de date (push/pull)?

Am dorit ceva similar când am migrat la WP acum câteva luni, așa că am scris un script shell destul de simplu care utilizează rsync și mysqldump prin ssh:
http://snarfed.org/sync_wordpress
Nu este sofisticat sau bazat pe web, dar sunt mulțumit de el.

WP Engine este un serviciu nou care oferă "Staging cu Un Singur Click":
WPEngine are o funcționalitate exclusivă numită "staging". Iată cum funcționează: Înainte de a face o modificare riscantă pe blogul tău, apasă butonul "snapshot". Noi facem o copie completă a blogului tău și o configurăm într-o zonă separată și sigură. Poți experimenta cu orice dorești; nimic nu este live. Numai atunci când ești gata să faci modificările live, atingi site-ul principal.
Pare o metodă foarte ușoară pentru a trece rapid de la dezvoltare la producție, mai ales cu un site deja live.

Aceasta este într-adevăr o opțiune foarte bună și va fi excelentă pentru mulți oameni! Desigur, nu funcționează pentru URL-uri încorporate și nici nu ajută persoanele care lucrează local, astfel încât să poată folosi un IDE cu debugger. Dacă WPEngine ar putea crea o interacțiune care să includă și o implementare locală, atunci ar fi cu adevărat ceva special (Technosailor, asculți?)

Funcția de snapshot copiază doar de la producție spre staging, nu și invers. Este excelentă pentru testarea modificărilor, dar nu ajută la implementarea în producție.

@sam de fapt, au început recent să ofere posibilitatea de a copia de la staging la producție. http://wpengine.com/2013/04/user-portal-v2-and-staging-to-production/

Pluginul Duplicator: Iată un plugin la care am lucrat. Este încă în fază beta, dar își face treaba pentru majoritatea site-urilor. În prezent, este destinat în special instalărilor WordPress mai mici. http://wordpress.org/extend/plugins/duplicator/
Resurse: Resurse suplimentare pentru acest plugin pot fi găsite aici: http://lifeinthegrid.com/duplicator/
Comunitate: Vă rugăm să ne spuneți despre succesul dumneavoastră sau despre orice probleme cu care ați întâmpinat! Pentru a gestiona mai ușor discuțiile, vă rugăm să postați problemele pe forumurile de pluginuri de la WordPress.org. Vă rugăm să nu postați date din jurnalele pluginului pe forumurile online. Datele din jurnale pot fi trimise pe site-ul nostru de suport.

Puteți arunca o privire asupra unui produs de la iThemes, numit BackUpBuddy. L-am folosit doar de două ori, de fiecare dată am întâmpinat câte o problemă, dar în general pare promițător.

Începând cu 2017, iată cele mai bune două metode pe care le-am descoperit pentru transferul unei baze de date WordPress de la mediul de dezvoltare la cel de producție.
WP Migrate DB Pro / WP Sync DB
https://wordpress.org/plugins/wp-migrate-db/
Aceste plugin-uri WordPress vă permit să transferați, să sincronizați și să actualizați tabelele bazei de date între instalații WordPress. Această metodă este mult mai bună decât un simplu înlocuire de text din mai multe motive, deoarece:
- Exportă baza de date ca un dump MySQL (similar cu phpMyAdmin)
- Realizează înlocuirea URL-urilor și a cailor fișierelor
- Gestionează datele serializate
- Vă permite să salvați fișierul SQL pe computer
Eu sunt un susținător al ideii de a fi plătit pentru munca depusă, așa că vă recomand să-l susțineți pe domnul Brad Touesnard și să cumpărați o licență pentru versiunea originală. WP Sync DB este o replică și, ca urmare, întotdeauna rămâne în urmă în ceea ce privește suportul. Cu acest plugin, procesul este extrem de simplu:
- Instalați/activați plugin-ul pe localhost și pe mediul de producție
- Configurați un transfer push de la serverul de dezvoltare/localhost către producție
- Definiți reguli pentru ce tabele să fie transferate și ce înlocuiri să fie efectuate
- Gata!
Database Search & Replace for WordPress Databases by InterconnectIT
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
Acest instrument gratuit nu este un plugin, ci este instalat în directorul rădăcină al instalației WordPress de pe mediul de producție. Nu este la fel de bun ca WP Migrate DB Pro deoarece necesită câțiva pași manuali, dar este totuși o opțiune excelentă care funcționează constant. Când folosiți această abordare, procesul arată astfel:
- Faceți o copie de rezervă a bazei de date locale – acest lucru este absolut necesar, deoarece o vom reimporta în curând
- Adăugați scriptul într-un folder din directorul rădăcină al instalației
- Rulați căutarea și înlocuirea în baza de date
- Exportați baza de date și salvați-o pentru mediul de producție
- Reimportați copia de rezervă din pasul #1 pentru a restaura localhost-ul
- Conectați-vă la baza de date de producție și faceți o copie de rezervă (așa cum ar trebui să faceți întotdeauna înainte de astfel de operații)
- Importați exportul creat după rularea rutinei de căutare/înlocuire din pasul #4
Puteți utiliza o metodă mai rapidă, dar aceasta implică întreruperea funcționării site-ului de producție, ceea ce, în opinia mea, este inacceptabil. La urma urmei, de aceea îl numim mediu de producție, nu-i așa?

Acest lucru pare promițător. Lucrăm la unele scripturi pentru a gestiona migrarea unora dintre date, de exemplu wp-options, schimbarea căilor în baza de date și copierea mediilor.
Problema pe care o am este că site-ul live continuă să crească în timp ce celălalt este în dezvoltare. Un site la care lucrăm are 20 de postări pe zi și peste 3.000 de comentarii pe zi. Aceasta este o cantitate prea mare de date pentru a fi mutată prin phpmyadmin sau prin linia de comandă. De asemenea, mutarea datelor întotdeauna cauzează probleme UTF din nu știu ce motiv.
În plus, acum că se pare că opțiunile de meniu sunt stocate în baza de date, am și mai multe de gestionat.
Verific tot codul meu în SVN și implementez codul prin FTP de pe server (Beanstalk). Acest lucru nu face însă modificările în baza de date pentru mine și nici nu activează pluginurile noi.
Planul meu în acest moment este să creez un fișier manifest în timp ce dezvolt, pentru a face toate modificările pe site-ul live.
De exemplu, fișierul ar avea linii ușor de citit
Ar include pluginuri de activat, wp-options de mutat, imagini de mutat, pagini de mutat. Apoi, pluginul meu ar detecta fișierul manifest și ar face toate modificările pe site-ul de staging.
Odată ce am testat acest lucru și am fost sigur că am acoperit tot, aș putea fi sigur că va funcționa și în producție.
Acest plugin este încă doar o idee, dar am scris deja o parte din cod pentru el.
De asemenea, dacă doriți să faceți modificări doar la URL în baza de date, puteți utiliza următorul SQL.
doar înlocuiți $old$
cu vechiul domeniu și $new$
cu noul
update wp_postmeta set meta_value = replace(meta_value, '$old$' , '$new$') ;
update wp_posts set post_content = replace(post_content, '$old$' , '$new$') ;
update wp_options set option_value = replace(option_value, '$old$' , '$new$') ;

Doar o notă, apelul meu SQL poate afecta datele serializate.
s:14:blogs.prod.com are lungimea codificată ca 14. După rularea codului, acum avem
s:14:dev.prod.com
care este corupt. Ar trebui să fie
s:12:dev.prod.com
folosiți cu prudență.

Abordez personal această problemă cu proiectul meu de pe Github, numit Autopress. Încă nu am o soluție perfectă, dar mă apropii, în special cu plugin-ul wpstage de la oamenii de la wpengine.

Tocmai am verificat scriptul tău. Foarte bun. După cum am înțeles, instalează o versiune nouă de WP pe server. Întrebarea este cum să migrezi de la mediul de dezvoltare la cel de producție. Poate ajuta și cu asta?

Ăsta este? http://github.com/vluther/Autopress Sugerez să creezi link-uri în răspunsurile tale ca oamenii să poată accesa direct!

@Mike Lee: Da, poți vota comentarii. Vezi, eu am votat comentariul lui artlung. Caută săgeata în sus care apare la hover în stânga comentariului.

Lucrez la o metodă de a păstra totul în controlul versiunilor, apoi să deplasez de la dezvoltare la producție. Am reușit să fac asta fără probleme pentru câteva site-uri deja, dar mai sunt câteva ajustări pe care trebuie să le rezolv.

Nu sunt sigur dacă asta e, dar există un plugin WP Engine care este folosit pentru migrarea site-urilor între gazde. Se numește Snapshot (Link direct).

http://plugins.wpengine.com/wpengine-snapshot.zip nu mai este disponibil :(

Două proiecte Google Summer of Code care au un obiectiv similar:
- Migrare automată (GSoC 2010)
- WordPress Move (propunere) (GSoC 2011)

Am folosit http://wordpress.org/plugins/wp-clone-by-wp-academy/. Funcționează excelent!
Doar 3 pași simpli:
- Instalează plugin-ul pe ambele site-uri.
- Folosește plugin-ul pentru a genera o copie de rezervă pe vechiul site.
- Ia URL-ul copiei de rezervă generat și introdu-l în pagina plugin-ului pe noul site, apasă "Start", iar migrarea se va finaliza în câteva secunde!
Plugin-ul ajustează automat toate URL-urile - inclusiv înlocuirea șirurilor serializate - astfel încât nu există riscul de a pierde configurațiile widget-urilor etc.
Singurele probleme întâlnite au fost la unele site-uri cu baze de date mari (~300MB), care au cauzat întreruperi ale execuției scriptului PHP în timpul importului copiei de rezervă.

De obicei, mă autentific în phpMyAdmin, încarc baza de date și editez conținutul din wp_options>siteurl și wp_options>home pentru a le seta la domeniul dorit. Dacă trebuie să actualizați URL-urile din conținutul postărilor și paginilor, puteți efectua o căutare/înlocuire pentru URL și calea către media/uploads în fișierul .SQL înainte de a-l încărca. Este o sarcină rapidă.

Eu folosesc comanda de export din Subversion pentru a instala fișierele WordPress (http://core.svn.wordpress.org/tags//) precum și toate plugin-urile din depozit (http://plugins.svn.wordpress.org//tags//), apoi doar arhivez tema și plugin-urile personalizate și le instalez în mod normal. După ce totul este funcțional fără conținut, export baza de date de test și fac un search/replace pentru URL și calea fișierelor (stocate pentru media) și import într-o bază de date goală, apoi doar schimb informațiile despre baza de date în wp-config.php. În general, îmi ia aproximativ 10 - 20 de minute.

Deși nu lipsesc soluții bune aici, în spiritul de colaborare, am vrut să adaug și scriptul meu de deploy bash la colecție: https://github.com/jplew/SyncDB
SyncDB este un script bash de deploy menit să elimine plictiseala din sincronizarea versiunilor locale și de la distanță ale unui site Wordpress. Permite dezvoltatorilor care lucrează într-un mediu local (ex. MAMP) să "împingă" sau să "tragă" rapid modificări către sau de pe serverul lor de producție cu o singură comandă în terminal.
Acest script funcționează bine cu WP-Skeleton al lui Mark Jaquith și utilizează mysqldump
, git
și rsync
pentru a vă sincroniza întregul site - baza de date, codul și media - în doi pași simpli:
./syncdb
git push hub master

Acesta este cel mai simplu mod posibil:
https://themes.artbees.net/docs/website-migration/
Durează doar două clicuri. Unul pentru export, unul pentru import.
Este posibil prin utilizarea plugin-ului All in one WP Migration. Link-ul de mai sus arată cum să-l folosești.

Un alt instrument util pentru gestionarea migrărilor de server pentru site-uri este WordPress CLI. Acest articol oferă o prezentare bună a ceea ce poate face, dar în mod special secțiunea pentru "Căutare și înlocuire" este utilă pentru a găsi toate referințele către vechea adresă URL a site-ului de dezvoltare:

Deoarece rulez site-urile mele pe IIS (folosesc și asp.net, așa că am nevoie de Windows), folosesc WebPI de la Microsoft pentru a instala o nouă instanță, apoi copiez șablonul și folosesc funcția de import/export pentru a transfera datele.
Nu este perfect, dar întregul proces durează mai puțin de o oră.
Evident, ar fi minunat să existe o soluție cu un singur clic, dar aceasta este metoda pe care am găsit-o drept cea mai ușoară pentru mine.

Folosesc plugin-ul BackupBuddy de ceva timp. Acesta îți permite să faci o copie de siguranță atât a bazei de date, cât și a tuturor fișierelor, să o descarci sub formă de arhivă ZIP sau să o trimiți direct pe un alt server prin FTP. De asemenea, face automat înlocuirea URL-urilor atunci când este necesar. În mod obișnuit, întregul proces îmi ia cam 5 minute. Și pentru că toate fișierele sunt comprimate în format ZIP, procesul de încărcare/descărcare este mult mai rapid. Și nu, nu lucrez pentru ei, dar acest plugin a făcut cu adevărat întregul proces mult mai ușor.

Permiteți-mi să vă ofer unul dintre preferatele mele :-)
// cod de bifurcare local<->live testat (acoperă testarea în rețea locală, de ex. de pe dispozitive mobile):
$GLOBALS['is_local'] =
in_array( $_SERVER['REMOTE_ADDR'], array("127.0.0.1","::1")) || // simplu localhost (IPv4 IPv6)
$_SERVER['HTTP_HOST'] == 'local.workblog' || // apelare prin nume local (ajustați)
substr($_SERVER["REMOTE_ADDR"],0,8) == '192.168.'; // dispozitiv (mobil) în rețea locală
$table_prefix = NULL; // asigură scopul
if ( $GLOBALS['is_local'] ) // Bifurcare LOCAL ------------------------
{
....
}
else // Bifurcare STAGE/LIVE -------------------
{
...și apoi continuați de acolo. DB_NAME, DB_USER... table_prefix. Personal, activez ALTERNATE_WP_CRON pe local (pentru a evita unele avertismente enervante), WP_DEBUG oprit pe ambele (dacă nu sunteți dezvoltator) sau doar pe live (dacă sunteți), un alt ini_set('display_errors', '0');
pentru live ar putea fi util, și în cele din urmă, așa cum am menționat mai sus: WP_HOME și WP_SITEURL la URL-ul local/real respectiv.
Cam asta e tot, nimic nu rămâne deasupra liniei clasice WordPress 'Asta e tot, opriți editarea!'...
Partea cu 192.168. vă permite să faceți teste locale (de ex. de pe tablete sau telefoane) în cadrul rețelei locale)
Variabila $GLOBALS['is_local'] poate fi utilă și în dezvoltarea temelor, pentru unele ieșiri de depanare suplimentare, etc...

Poți folosi WordPress Skeleton wp-config.php care setează o constantă WP_LOCAL_DEV
pentru a obține ceva similar

RAMP este un nou plugin pentru implementarea conținutului de la Crowd Favorite, și arată foarte profesionist. Costă 250$, așa că încă nu l-am testat. S-ar putea să se amortizeze prin timpul economisit, așa că îl iau în considerare.
Marele avantaj pe care îl are în comparație cu majoritatea celorlalte metode menționate, este că poate îmbina inteligent articole, comentarii, etc. Nu este doar o importare a unui mysqldump, ci mai degrabă un sistem de control al versiunilor pentru baza de date. De exemplu, atunci când implementează un articol, va implementa și etichetele pentru acel articol, dacă acestea nu există deja în mediul de producție.

RAMP este conceput pentru implementarea conținutului, spre deosebire de implementarea codului, dar sunt de acord, arată excelent. Acum au un demo RAMP configurat, astfel încât să puteți testa funcționalitățile.

Acest serviciu poate să nu fi existat când ai pus întrebarea, dar eu folosesc de câteva luni un serviciu numit Blogvault și a funcționat impecabil. Am realizat probabil peste 50 de migrări (între domenii, subdomenii și diferiți gazde web), fără nicio problemă și într-un timp foarte scurt.
Este un serviciu plătit (pe domeniu/lună), dar nu foarte scump.

Un coleg a descoperit acest lucru. Concept interesant, deși se pare că nu funcționează între servere diferite. Încă îl explorez, dar pare că ar putea funcționa excelent pentru o instanță de staging.

Acum patru luni, nu am reușit să fac acest plugin să funcționeze... Și încă este la versiunea 0.1 pe code.google

O altă soluție plătită: cadrul tematic Xtreme One a lansat versiunea 1.2 cu Xtreme Backup care vă permite să "exportați sau importați setările Childthemes, Layouts sau Widgets cu toate setările/conținutul lor ca fișier XML."

După ce am urmărit acest răspuns pentru o perioadă, am creat propriul meu mic plugin - Pitta Migration. Motivele pentru care am făcut acest lucru sunt:
- Dintre toate ideile încercate aici - cea mai simplă este utilizarea opțiunilor
WP_HOME
șiWP_SITEURL
- Apoi le folosesc pentru a seta cele două URL-uri corespunzătoare din
wp_options
- acest lucru acoperă cazurile în care plugin-urile/temele ignoră aceste setări - Acest lucru îmi oferă 100% încredere în ceea ce este modificat în baza mea de date
- Funcționează și cross-platform (toate acele scripturi bash nu funcționează bine pe Windows)
- Este ușor de înțeles ce face plugin-ul
- Nu există alte configurări în afară de cele două constante - faceți un mysqldump și o importare mysql în baza de date locală, iar plugin-ul va detecta că constanta și tabela diferă și le va actualiza pentru a se potrivi
- Nu se face căutare și înlocuire de text
- Nicio șansă de a strica baza de date - folosesc WordPress Database Object pentru a face doar două actualizări și nimic mai mult
- Funcționează bine cu lucruri precum WordPress Skeleton unde puteți avea totul în controlul surselor și puteți seta o configurație locală
- L-am pus în directorul de plugin-uri WordPress și pe Github astfel încât să fie gratuit, complet open-source, ușor de bifurcat și ușor de instalat
- Odată instalat, puteți uita de el și ar trebui să "funcționeze pur și simplu" - vă oferă o mică notificare care vă anunță că baza de date a fost modificată
- Ar trebui să funcționeze cu orice proces de backup/FTP/restaurare

În opinia mea, cea mai simplă metodă pe care o urmez este transferul manual.. Pur și simplu copiez folderul wp-content și fișierul wp-config.php pe noul gazdă. Exportez baza de date de pe vechea gazdă și o import într-o nouă bază de date pe noua gazdă..
În noua bază de date de pe gazda nouă, merg la tabela wp-options și acolo modific URL-ul site-ului și URL-ul Blogului de la adresa vechii gazde la cea a noii gazde. De exemplu de la http://localhost/wp la http://example.com
Acum în fișierul wp-config schimb doar informațiile despre baza de date și utilizator cu cele ale noii gazde.
Acum mă autentific în noul wp-admin și merg la setări și salvez structura legăturilor permanente.
Gata. Cred că este simplu fără a folosi niciun plugin.
Am încercat diferite tipuri de plugin-uri și toate au diverse probleme..
De aceea prefer această metodă simplă de transfer manual care cred că este mai ușoară.
