Ho fatto questa domanda più di un anno fa e durante quel periodo abbiamo aggiunto più persone al nostro team e sviluppato un numero molto più grande di siti in WordPress. Volevo seguire il nostro processo nel caso potesse aiutare qualcun altro.
Tutto in Git
Questo era qualcosa che stavo facendo anche quando ho posto la domanda, ma è bene richiamare questo punto. L'uso di Git non solo ci ha aiutato a essere più produttivi, ma ci ha anche salvato diverse volte i nostri culi collettivi.
Hai mai avuto bisogno di effettuare importanti ristrutturazioni strutturali in un sito, ottenere l'approvazione per tali ristrutturazioni da un cliente e nel frattempo apportare piccoli aggiornamenti alla versione non rinnovata? Abbiamo, e Git ci ha permesso di farlo. Descrivere questa configurazione sarebbe un po 'complicato, ma le basi sono che abbiamo creato un nuovo ramo, trasferito quel ramo sul server e collegato un sottodominio a quel ramo.
Siamo stati salvati anche da Git. Ovviamente ci consente di ripristinare le modifiche, il che è fantastico, ma ci consente anche di ripristinare le vecchie versioni dei file. Ciò significa che se un cliente chiede "Ricorda come ha funzionato questa parte del sito circa un anno fa? Possiamo riportarlo indietro?", La risposta è sì, anche se la persona a cui era stato chiesto non faceva parte di quel progetto un anno fa.
Oltre a questi punti, significa anche che non siamo mai bloccati senza i file di cui abbiamo bisogno. Possiamo sempre estrarre la versione più recente del sito da qualsiasi macchina e iniziare a apportare modifiche.
Usa Git per distribuire
Facciamo il nostro hosting WordPress su Media Temple e ci piacciono molto. Non sono il fornitore più economico, ma il loro servizio è eccellente e i loro server sono davvero ben configurati. Forniscono anche Git per impostazione predefinita. Ciò significa che possiamo configurare il server come repository Git e applicare le modifiche in questo modo invece di utilizzare SFTP. Significa anche che fare un lavoro sul server non corre il rischio di essere sovrascritto (dato che tali modifiche possono essere unite e rimandate).
Poiché utilizziamo BitBucket come host Git, qui è richiesto un po 'di lavoro extra. Prima di tutto usiamo i file .ssh / config in modo da poter digitare cose come ssh sitename
accedere ai nostri server (usiamo anche SSH senza password , il che rende questo super facile). Ci assicuriamo inoltre di utilizzare sempre le passphrase ssh (Mac OS X rende tutto molto semplice consentendo di memorizzare la passphrase in Keychain.app ). Infine, aggiungiamo la riga ForwardAgent alla voce .ssh / config sugli host da cui vogliamo estrarre. Ciò significa che abbiamo bisogno solo della chiave pubblica SSH di ogni persona in BitBucket e non della chiave pubblica di ciascun server. Ci assicuriamo inoltre di mantenere la .git
directory una directory sopra la directory HTML pubblica.
Dump di database automatizzati
Una volta che il server è in modalità di produzione, ci assicuriamo di eseguire automaticamente il backup del nostro database, per ogni evenienza .
Ognuno ha il proprio wp-config
Poiché tutti abbiamo i nostri nomi utente e password del nostro database locale e poiché potremmo usare nomi e meccanismi di servizio diversi, ognuno di noi mantiene il proprio file wp-config. Ognuno di questi è memorizzato in Git con un nome simile wp-config-gavin.php
e quando vogliamo usare quella configurazione, lo colleghiamo a symlinkwp-config.php
(che viene ignorato da Git usando .gitignore ).
Questo ci consente anche di sovrascrivere l' siteurl
opzione nella wp_options
tabella del database in questo modo:
define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');
Ciò impedisce a WordPress di esaminare il database per la posizione del server e significa che non ci sono strane differenze nella posizione tra installazioni locali e server.
Un'ultima nota sui file wp-config.php: assicurati di memorizzarli sopra la directory HTML pubblica e fai leggere le autorizzazioni solo per l'utente web . Questo fa una grande differenza nel proteggere WordPress.
Il problema del database
Infine, la carne della questione.
Quello che ho dovuto accettare è che, quando si utilizza WordPress, non esiste un buon modo per "unire" le modifiche al database. Invece, abbiamo dovuto sviluppare regole di condotta per risolvere questo problema. Le regole sono abbastanza semplici e finora ci hanno servito bene.
Durante lo sviluppo, c'è una sola persona che "possiede" il sito. Quella persona di solito esegue l'installazione (mettendo insieme il pacchetto di hosting, avviando il progetto Basecamp, tagliando il design, quel genere di cose). Una volta che quella persona è a un punto ragionevole, scarica il database per l'installazione di WordPress e inseriscilo in Git. Da quel momento in poi, tutti coloro che eseguono lo sviluppo utilizzano tale dump del database e il proprietario è l'unico che apporta modifiche al database.
Una volta che la creazione del sito è un po 'più avanti, il sito viene inserito in un server. Da quel momento in poi, il database del server è canonico. Tutti (incluso il proprietario) devono apportare tutte le modifiche al database sul server e rimuoverle per lo sviluppo e i test locali.
Questo processo non è perfetto. È ancora possibile che qualcuno possa aver bisogno di apportare modifiche nel backend di WordPress localmente durante lo sviluppo, e quindi di dover apportare di nuovo tali modifiche in produzione. Tuttavia, abbiamo scoperto che questo genere di cose è raro e questo processo funziona abbastanza bene per noi.