Domanda

Sono uno sviluppatore solitario. Abbiamo un paio di siti web ospitati su un host web. Il repository svn è anche sul web host. In casa, abbiamo una macchina di sviluppo, che è un primo abbastanza replica del contesto live.

Per il sito dal vivo, ho un'esportazione dal sovvertimento, giustamente chiamato con il numero di versione. radice dei documenti del sito dal vivo è in realtà un link simbolico a quella directory. In questo modo, posso facilmente rotolare avanti o indietro per versioni esportati senza tempi morti semplicemente cambiando in cui il collegamento simbolico è puntato.

Quando arriva il momento di distribuire in realtà, io esportare una versione del tronco in una sottodirectory del sito web dal vivo, come area di sosta, e fare qualche prova. Questo modo di vedere come si comporta effettivamente in ambiente live, senza cambiare tutto ciò che gli utenti vedono. Poi, se tutto sembra a posto, lo farò un'altra esportazione nella mia account di root e cambiare il link simbolico (e prova di nuovo!)

E 'questo esagerando? Quali sono altri modi di farlo?

È stato utile?

Soluzione

C'è Capistrano, che ti aiuta in questo processo. Usando SSH e chiavi, rende il processo abbastanza senza soluzione di continuità per distribuire le modifiche e così via. Anche se questo è un applicazione rubino, è possibile utilizzarlo ancora per implementare PHP o altre applicazioni, date un'occhiata qui per un po 'di informazioni

e questo articolo ne parla, utilizzando una cartella condivisa con la cartella stampa. La cartella condivisa può contenere file di configurazione per il singolo server di distribuzione (URL, connessione DB, ecc) nonché le attività che vengono caricati durante la vita di un sito web e non sono in svn. Si può avere Capistrano gestire questo anche per voi.

Mentre qualcuno non conoscendo la messa a punto potrebbe avere un po 'di difficoltà prima di vedere questo, fa davvero facile implementazione. Penso che quello che Capistrano fa è piuttosto semplice e potrebbe probabilmente essere scritto in un'altra lingua per gestire il tuo scenario specifico.

E un'altra idea di legare questo in SVN, o di qualsiasi repository. È quello di utilizzare i loro ganci per eseguire queste implementazioni. vale a dire ogni impegnano a tronco aggiornerà il server dev. E un ramo spingerà al vostro ambiente di staging.

questo link fa un grande lavoro di mostrare come impostare quel tipo di ambiente. Penso che quello che è stato impostato è buona pratica e non è fatto abbastanza. L'unica cosa che può aiutare a uscire è automatizzato la distribuzione in diversi ambienti e script per aiutare con la messa a punto della nuova distribuzione.

Aggiornamento ::
Inoltre, vorrei sottolineare, SVN in grado di gestire i collegamenti simbolici. Quindi, se si sta facendo implementazioni su Unix server basati si può semplicemente mettere nei link simbolici nel repository e utilizzare un link simbolico relativo.

Quindi, se avete

./releases/200912231043
./shared/uploads

Si può mettere il link simbolico come

./releases/200912231043/uploads -> ../../shared/uploads

Questo vi darà un modo semplice per gestire le risorse non in svn senza l'utilizzo di un sacco di script non distribuire. È ora possibile utilizzare solo un commit per distribuire al tuo dev e / o messa in scena.

Altri suggerimenti

Credo che questo è esattamente il modo giusto di farlo. Sembra ideale per me: gli aggiornamenti in diretta vengono come una release completamente testato, i cambiamenti sono ben documentabile attraverso messaggi di commit, rollback (e indietro) è facile e il passaggio da una versione all'altra è atomico quindi non c'è tempo di inattività. Mi sforzo di farlo allo stesso modo con ogni progetto.

Qual è la tua domanda? Siete sicuri di qualcosa? Non è forse lavorando per voi? In caso affermativo, quale parte di esso esattamente?

È un po 'quello che ho a fare per l'ultimo paio di anni per un paio di progetti -. E mai avuto un solo problema con questo modo di fare le cose

La possibilità di "rollback" con i link simbolici potrebbe essere visto come un po 'eccessivo, sì ... Ma il giorno è necessario per salvare il sito web su cui è stato distribuito una versione con un bug critico, si apprezza avere quella capacità!
Ho usato questo qualcosa come 2 volte in 3 anni - ma, ogni volta, è davvero salvato la giornata ^^


Una cosa sembra strano per me, però:? Se ho capito bene, si sta testando la nuova versione del sito web sulla base di dati dal vivo (produzione)

Se è così, se c'è un bug nell'applicazione, si potrebbe distruggere il tuo database di produzione -. Che, ovviamente, sarebbe male

Vorrei usare un altro database per questo ambiente di test, personnaly -. Solo come misura di sicurezza


Inoltre:? Si sta facendo un sacco di test, che è buono ... Ma perché non automatizzare alcune di quelle

E 'permetterebbe di testare più veloce, più spesso, e che ci si spende meno test in tempo, e più tempo sviluppando; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top