È possibile centralizzare il codice in una cartella comune (creare uno script che copi tutto il codice sugli 8 server o utilizzare NFS).
Questo codice centralizzato può trovarsi in uno o più repository nel SVN. Quindi quando spingi, spingi solo ciò di cui hai bisogno per spingere.
Ad esempio, è possibile creare un repository per le proprie librerie PHP (classe database, xml, imap ecc.). In una struttura semplice e quando si chiama questi file è sufficiente fare:
require('/web/lib/DatabaseMySQL.class.php');
In questo modo, si sa tutti i file necessari al nello stesso posto e molto facile da mantenere. Specialmente se il tuo codice richiede file richiesti che richiedono file.
È possibile creare il numero di repository che si desidera e ripetere ciò se non si desidera mescolare i file, ad esempio di terze parti (Smarty, phpmailer) con il codice creato.
L'altra cosa è, non reinventare la ruota. C'è un sacco di buon codice là fuori che probabilmente fa ciò che hai già bisogno di fare. Come inviare e-mail (phpmailer o qualsiasi altro) o sistema di template (Smarty o altri). In questo modo hai lo stesso tempo di sviluppo e quando un aggiornamento, se disponibile, devi semplicemente scaricare, copiare (commit se ce l'hai in un repository) e premere.
Script VS NFS.
Creare uno script per inserire tutto il codice in 8 server Web è facile. Il lato negativo di questo è che è necessario assicurarsi che tutte le cartelle e tutti i file presenti su ciascun server siano identici per evitare errori. Inoltre, se c'è un ritardo sulla rete o la caduta della connessione durante il push, alcuni server non avranno lo stesso codice. Di nuovo, più errori. Questo è un po 'più veloce da eseguire rispetto alla soluzione NFS.
Creare un NFS risolvere il problema sopra poiché si utilizza solo 1 percorso, ma se tale posizione non tutti i server verranno eseguiti correttamente. Quindi, quando si preme il codice, si spinge solo su 1 posto e tutti gli altri server hanno automaticamente il nuovo codice. Qualcosa che devi sapere anche, questo sarà un po 'più lento di se il codice è direttamente sul disco rigido.
Ecco uno script di esempio è possibile utilizzare:
È possibile creare uno script sh che copierà il codice dal repository (per esempio, il codice hai estratto dal repository) per tutti i server in questo modo:
// file: pushcode.sh
#!/bin/bash
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ [email protected]:/path/to/code
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ [email protected]:/path/to/code
rendono questo script eseguibile ed eseguirlo:
./pushcode.sh
per assicurarsi copia il codice correttamente senza richiedere la password ogni volta, si dovrà bypass the ssh login.
Ecco una buona come si potrebbe: https://serverfault.com/questions/195035/linux-nfs-performance-vs-other-fss
è il server svn sulla stessa rete dei server web? o hai svn ospitato in un dominio separato che non ti appartiene? –
il server svn si trova nello stesso intervallo IP quindi sì sulla stessa rete dei server ma non accessibile dall'esterno –