Domanda

Sfondo

sto avvicinando alle fasi finali di costruzione il mio primo sito WordPress abbastanza grande, e ora sto incontrando qualche attrito. Per la maggior parte, il sito è stato sviluppato sulla mia macchina locale e mi spingerebbe modifiche fino ad un server di gestione temporanea per la revisione ( vedi questa domanda per più di fondo ). La soluzione che ho finito con funzionato abbastanza bene quando è stato solo me l'editing di contenuti, ma ora alcune altre persone stanno modificando il contenuto, mentre ho ancora caratteristiche da aggiungere. L'idea era:. Siamo riusciti a fare le cose più rapidamente se le caratteristiche e il contenuto si sono riuniti in concerto ... ma ora non ne sono così sicuro

Al momento non v'è un contenuto diverso nel database sul server di gestione temporanea che sulla mia macchina locale. Questo va bene per sé, come non ho bisogno del corpo del testo finale sulla mia macchina locale, ma ho bisogno di fare di più lo sviluppo che interesserà il database (installazione / scrivere un altro paio di plugin che devono le proprie tabelle).

La mia domanda è:

C'è un modo semplice per automatizzare la fusione di banche dati in modo che più persone possono lavorare su una installazione di WordPress? Potrei, naturalmente, basta esportare le tabelle che ho so sono cambiate sulla mia macchina locale e spingerli al server di gestione temporanea, ma è possibile che ci sono anche cose sul server di gestione temporanea che vorrei abbattere. Ho potuto afferrare l'uscita SQL di entrambi i DB e diff ... ma che sembra noioso e hacker. Mi chiedo se questo è un problema che altri hanno risolto; se c'è un modo di comunità accettato di gestire questo genere di cose.

Grazie!

È stato utile?

Soluzione

Ho fatto questa domanda nel corso di un anno fa, e durante questo periodo abbiamo aggiunto più persone al nostro team e ha sviluppato un numero molto maggiore di siti in WordPress. Ho voluto camminare attraverso il nostro processo nel caso in cui esso potrebbe aiutare chiunque altro.

Tutto in Git

Questa è stata una cosa che facevo anche quando ho fatto la domanda, ma è bene chiamare questo punto fuori. Utilizzando Git ha aiutato non solo di essere più produttivi, ma è anche salvato i nostri culi collettivi più volte.

Avete mai avuto bisogno di fare grandi lavori di ristrutturazione strutturale a un sito, ottenere l'approvazione per i lavori di ristrutturazione da un client, e nel frattempo gli aggiornamenti make minori alla versione non rinnovato? Abbiamo, e Git facciamolo. Descrivendo questa configurazione potrebbe ottenere un po 'prolisso, ma le basi sono che abbiamo fatto una nuova filiale, tirato quel ramo al server, e attaccato un sottodominio a quel ramo.

Abbiamo anche stato salvato da Git. E, naturalmente, ci permette di cambiamenti rullo posteriore, che è grande, ma ci permette anche di portare vecchie versioni dei file indietro. Ciò significa che se un cliente chiede: "?? Ricordi come questa parte del sito ha lavorato circa un anno fa Possiamo portare indietro", la risposta è sì - anche se la persona viene chiesto non era su quel progetto un anno fa.

Oltre a questi punti, ma ha anche i mezzi che abbiamo è mai bloccato senza i file di cui abbiamo bisogno. Possiamo sempre tirare verso il basso la nuova versione del sito da qualsiasi macchina e iniziare a fare modifiche.

Usa Git per implementare

Noi facciamo del nostro WordPress hosting su Media Temple , e ci piace molto di loro. Non sono il provider più economico, ma il loro servizio è eccellente ed i loro server sono davvero ben impostato. L'forniscono anche Git per impostazione predefinita. Questo significa che possiamo impostare il server come un repository Git, e tirare cambia in questo modo invece di utilizzare SFTP. E significa anche che facendo un lavoro sul server non è in pericolo di essere sovrascritto (come tali modifiche possono solo essere uniti e spinto indietro fino).

Perché usiamo BitBucket come nostro ospite Git, c'è un po 'di lavoro aggiuntivo richiesto qui. Prima di tutto che usiamo .ssh / config file in modo da poter digitare le cose come ssh sitename per accedere al nostro server (usiamo anche senza password SSH , che rende questo super facile). Abbiamo anche fare in modo di utilizzare sempre ssh passphrase (Mac OS X rende molto facile da che consente di memorizzare la passphrase in Keychain.app ). Infine, si aggiunge la linea di un ForwardAgent alla voce .ssh / config su host che vogliamo tirare da. Questo significa che abbiamo solo bisogno di chiave di ogni persona SSH pubblica in BitBucket, e non la chiave pubblica di ogni server. Abbiamo anche fare in modo di mantenere la directory di una directory .git sopra la directory HTML pubblico.

banca dati automatizzata discariche

Una volta che il server è in modalità di produzione, facciamo in modo di eseguire automaticamente il backup nostro database, nel caso in cui .

Ognuno ha il proprio wp-config

Perché tutti abbiamo i nostri propri nomi utente e le password di database locali, e perché abbiamo potuto usare nomi diversi e meccanismi che servono, ognuno di noi manteniamo il nostro file wp-config. Ognuno di questi viene memorizzato in Git con un nome come wp-config-gavin.php, e quando vogliamo usare che config, abbiamo link simbolico a wp-config.php (che viene ignorato da Git utilizzando .gitignore ).

Questo ci permette anche di sovrascrivere l'opzione siteurl nella tabella del database wp_options in questo modo:

define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');

Questo impedisce di WordPress da guardando il database per la posizione del server, e mezzi non ci sono differenze strani in posizione tra le installazioni locali e server.

Una nota finale sui file wp-config.php: assicurarsi di memorizzarli sopra la directory pubblica HTML e rendere le autorizzazioni di sola lettura per l'utente web . Questo fa una grande differenza nel garantire WordPress.

Il problema del database

Infine, la carne della questione.

Quello che ho dovuto accettare è, quando si utilizza WordPress, non c'è buon modo per "fondere" le modifiche al database. Invece, abbiamo bisogno di sviluppare regole di condotta per risolvere questo. Le regole sono abbastanza semplici, e ci hanno servito bene finora.

Durante lo sviluppo, c'è una sola persona che "possiede" il sito. Quella persona di solito fa il setup (ricevendo il pacchetto di hosting insieme, di iniziare il progetto Basecamp, affettare il design, questo genere di cose). Una volta che la persona è ad un punto ragionevole, il dump del database per WordPress installazione e messa in Git. Da quel punto in avanti, ognuno facendo uso di sviluppo che dump del database, e il proprietario è l'unico che apporta modifiche al database.

Una volta che il sito di costruzione diventa un po 'più avanti, il sito è messo su un server. Da quel momento in poi, database del server è canonico. Tutti (compreso il proprietario) deve fare tutte le modifiche apportate al database sul server e tirare le modifiche verso il basso per lo sviluppo e la sperimentazione locale.

Questo processo non è perfetto. E 'ancora possibile che qualcuno potrebbe aver bisogno di apportare modifiche al backend di WordPress in locale durante lo sviluppo, e quindi devono fare quei cambiamenti di nuovo in produzione. Tuttavia, abbiamo scoperto una cosa del genere ad essere rara, e questo processo funziona abbastanza bene per noi.

Altri suggerimenti

Io lavoro su un tale installare e hanno risposto domande come questo prima . Di seguito è riportato il mio setup preferito per questo tipo di lavoro. Perché si vuole database di unione invece di sostituire un database esistente vorrei aggiungere a questi un avvertimento a non utilizzare il -. add-drop-table bandiera quando si fa il dump MySQL


  • Fase 1. Mysqldump vostro database di sviluppo
  • Passaggio 2. Sostituire tutte le istanze di development.domain.com a production.domain.com ^^
  • Punto 3. Accesso a MySQL, eseguire un comando SOURCE per importare i dati per esempio source /path/to/file

^^ Come sostituire tutte le istanze di vecchio dominio con il nuovo: (1) copia dello script di seguito. (2) chmod +x esso. (3) eseguirlo.

Utilizzo: ./script.sh development-dump.sql > production-dump.sql

#!/bin/sed -f
s/'\([^\\']*\)development.domain.com\([^\\']*\)'/'\1production.domain.com\2'/g

sto sperimentando diverse soluzioni a questo stesso problema in questo momento. E 'sicuramente un ingannevole.

La mia soluzione attuale è quella di fare una discarica mysql locale utilizzando il flag --skip-extended-insert. Credo che questo flag fa sì che una dichiarazione di inserimento record da generare per ogni riga del database, rendendo la discarica un po 'più di unione amichevole. Ho preso quel trucco da questo articolo: http: //www.viget .com / estendere / backup-your-Database-in-git / .

Ho poi il controllo di origine del file sql DataDump risultante utilizzando Git insieme ai file sorgente del sito. Quando un altro sviluppatore tira giù modifiche al codice, il file sql arriva con esso. Ha poi importa questo file nella sua versione locale del database. Abbiamo entrambi istituito il nostro rispettivo database locali allo stesso modo su entrambe le macchine, utilizzando MAMP, quindi non c'è bisogno di fare qualsiasi ricerca e sostituisce.

Ci sono stati problemi di unione così stiamo cercando di adottare un approccio "a turno" per tutto ciò che può causare un cambiamento di database. Prima di fare qualsiasi cosa in Wordpress che cambierà il database mi assicuro che ha registrato il suo ultimo discarica, tirarlo e importarli, e poi chiedergli di non fare alcun DB cambia fino a quando ho fatto e controllato nella mia. Questo ovviamente non è l'ideale e sto cercando una soluzione migliore, ma è un inizio. Esso ci dà anche il controllo di versione del DB che è bello.

I può finire per noi la creazione di una banca dati dev condivisa sul server e provare a collegare entrambe le nostre copie locali del sito fino allo stesso DB tramite SSH tunneling. Questo approccio, tuttavia, verrà eseguito in problemi ogni volta che uno di noi viene installato un plugin. In sostanza i file PHP e MySQL DB saranno fuori sincrono.

Sono ansioso di sentire come gli altri a che fare con questo problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top