2010-09-08 79 views
5

Ho una macchina Windows 7 su cui eseguo sia la codifica PHP/MySql Dev che .NET/C#/Sql Server. A causa di una recente reinstallazione, ho pensato che sarebbe stato il momento ideale per provare a mantenere la mia macchina un po 'più pulita invece di installare sia Apache e IIS, ecc.Sviluppo VirtualBox Ubuntu LAMP Stack, con SVN e CruiseControl/phpUnderControl?

Ho installato VirtualBox, con Ubuntu 10.04 come sistema operativo guest , con il piano per spostare il mio sviluppo PHP dalla mia vecchia piattaforma Windows/Apache/MySql su questa immagine virtuale. Oltre a questo, voglio aggiungere CruiseControl/phpUnderControl al mio processo di sviluppo PHP.

Finora ho installato Ubuntu 10.04 con uno stack LAMP, oltre a Netbeans per PHP, MySQL Workbench, ecc., Che è effettivamente uguale al mio vecchio set di sviluppo di Windows, ma ora ho anche installato SVN e CruiseControl (Non ho ancora installato phpUnderControl, ma questo è il prossimo passo).

La mia domanda è, posso usare questa immagine virtuale sia come ambiente di sviluppo "locale" che come server di compilazione, in modo da non dover ingombrare la mia macchina windows nativa con il software MySql/PHP (cioè io può tenerlo bello e pulito per lo sviluppo di .NET)?

Immagino che mi occorrerebbe che il server web virtuale sia in grado di servire sia una versione di sviluppo "locale" di qualsiasi progetto a cui sto lavorando, sia una versione di staging, che creerebbe usando il commit di cruisecontrol/svn ?

Oppure devo separare i miei sviluppatori e server di sviluppo, forse mantenere lo sviluppo locale in Windows e utilizzare solo l'immagine virtuale per il server di build? o forse hanno due macchine virtuali separate per scopi diversi?

Apprezzerei qualche consiglio sul modo migliore per configurarlo. Uno dei progetti su cui voglio lavorare è piuttosto complesso, quindi voglio assicurarmi di farlo nel modo giusto prima di iniziare il progetto, in modo da garantire che il progetto sia ben mantenuto con il controllo delle versioni, i test unitari e l'integrazione continua , dovrei mai aver bisogno di coinvolgere altri sviluppatori nel progetto.

risposta

5

Se si desidera mantenere pulita la casella di Windows degli strumenti MySQL/PHP, si consiglia vivamente l'approccio con due VM. Una distribuzione linux desktop per lo sviluppo con LAMP ecc. Per il rapido turnaround di codice/debug e una che rispecchia l'installazione reale del server (con l'aggiunta di svn ecc.) Per le build di test.

Ciò offre enormi vantaggi sia per un buon ambiente di sviluppo che per un server di test che rifletterà il funzionamento del codice sul server live. In questo modo è possibile mantenere aggiornato il VM dell'ambiente di sviluppo con gli ultimi aggiornamenti per la distribuzione (kernel, strumenti, ecc.) E tenere la VM di compilazione a qualsiasi versione dell'applicazione sulla macchina live. Ciò richiede un sacco di congetture da "è la nuova versione della libreria X o il mio codice?".

Se si desidera ottenere un po 'eccessivo, in realtà si desidera 3. Uno per dev, uno per SVN/integrazione continua e uno che rispecchia esattamente il server in modo da poter testare la distribuzione/configurazione del sistema.

+0

Ho preso in considerazione l'approccio a più caselle, ma non ero sicuro se fosse eccessivo avere 3 istanze in esecuzione contemporaneamente, ma mi hai convinto dei suoi benefici. –

3

Se si sta considerando di avere la VM per dev perché non configurarla esattamente come si configurerebbe il proprio ambiente di staging/produzione?

Inoltre, è possibile impostare la VM per ospitare il repository di codice e il server Web, quindi collegare gli strumenti locali al computer host (Windows). In questo modo puoi sviluppare sulla tua casella di Windows, collegata alla VM.

Questo ti dà la possibilità di fare tutto nell'ambiente locale mentre simuli l'ambiente server nella tua VM.

VirtualBox fa davvero molto bene anche il networking, e dovresti essere in grado di connettere il tuo host Windows tramite la rete al server come se fosse davvero un altro nodo sulla rete.

+0

Sì, sono rimasto impressionato dalla facilità con cui è stato possibile ottenere una macchina virtuale funzionante sulla rete: ho impostato un IP fisso per la VM che ho impostato finora, quindi ho potuto accedervi dal mio macchina, non c'è motivo per cui non sia possibile configurare più VM con lo stesso approccio. Penso che andrò con l'approccio 3 macchine, uno per lo sviluppo, uno come server SVN/CI e uno per il mirror dell'ambiente live. –

+0

Quali strumenti VM consiglieresti di utilizzare per lo sviluppo? – BrightIntelDusk