Domanda

Abbiamo vari progetti php sviluppati su Windows (xampp) che devono essere distribuiti su un mix di server Linux/Windows.

Noi abbiamo usato capistrano in passato per la distribuzione da Windows ai server Linux, ma i recenti cambiamenti nell'architettura e nei server Windows hanno impedito il funzionamento della vecchia configurazione.La ricetta funziona bene per l'implementazione Linux, ma la configurazione dei server Windows ha richiesto più tempo di quello che abbiamo adesso.Le idee per la ricetta del Capistrano sono risposte valide.ovviamente i server Windows/Linux non condividono gli utenti, quindi questo complica un po' le cose (per l'assunzione capistrano dello stesso nome utente/password ovunque).

Attualmente stiamo utilizzando svn-update per i server Windows, cosa che non mi piace, poiché lascia tutti i file svn appesi sui server di produzione.(e dobbiamo ancora aggiornarli manualmente tramite svn su Windows) E aggiornamento manuale dei file utilizzando winscp e sincronizzando le directory con le loro controparti Linux.

La mia domanda è: quali strumenti/configurazioni suggerisci per automatizzare questo scenario di distribuzione:"Vari sviluppatori php Windows/Linux che distribuiscono su 2+ macchine miste Windows/Linux"

(ps:non abbiamo problemi con l'utilizzo degli strumenti Linux o di qualsiasi cosa che funzioni tramite Cygwin, dobbiamo semplicemente rendere la distribuzione una semplice operazione in un unico passaggio)

modificare:Al momento non possiamo lavorare su un ambiente interamente Linux, dobbiamo distribuirlo sia su Linux che su Windows Server.Possiamo avviare la distribuzione da qualsiasi luogo, ma preferiremmo poterlo fare da entrambi gli ambienti.

È stato utile?

Soluzione

Utilizzo 4 approcci diversi a seconda dell'ambiente client:

  1. Capistrano e strumenti simili (efficaci, ma complessi)
  2. rsync da + a Windows, Linux, Mac (semplice, non impone disciplina)
  3. svn da + a Windows, Linux, Mac (semplice, non impone disciplina)
  4. Script sul server (eseguiti tramite il browser, complessi)

Ci sono alcuni requisiti che determinano ciò di cui hai bisogno:

  • Quanta disciplina vuoi imporre
  • Se hai bisogno di migrazioni del database (o della configurazione) (su e/o giù)
  • Se desideri una pagina statica "siamo inattivi".
  • Chi può eseguire l'aggiornamento
  • Differenze di configurazione tra i server

Suggerisco caldamente di applicare una disciplina sufficiente per salvarti da te stesso:distribuire su un server di sviluppo, consentire migrazioni verso l'alto e un semplice ripristino del database e limitare chi può aggiornare il server live a un numero limitato di amministratori responsabili (dove il server di sviluppo è aperto a più sviluppatori).Considera anche l'invio tramite un processo cron (al server di sviluppo), quindi c'è un'istantanea giornaliera delle tue modifiche incrementali.

La maggior parte delle volte trovo anche questo svn O rsync le configurazioni sono sufficienti, con alcuni script lato server, soprattutto quando il set di amministratori è limitato a pochi sviluppatori.

Altri suggerimenti

Probabilmente sembrerà sciocco ma...Avevo questo tipo di problema tutto il tempo finché alla fine ho deciso che se lo fossi sempre schieramento su Linux, dovrei almeno provarci sviluppando anche su Linux.L'ho fatto.Era senza dolore.Non sono mai tornato indietro.

Ora.Non sto suggerendo che questo sia per tutti.Ma, se installi VirtualBox potresti eseguire un'installazione Linux come server locale sulla tua finestra Windows.Condividi una cartella nella macchina virtuale e potrai utilizzare tutti i software e le tecniche Windows conosciuti e affidabili E avere la tranquillità di sapere che tutto funziona bene sulla piattaforma di destinazione.

Inoltre potrai tornare a Capistrano (un'ottima scelta) per lo schieramento.

Meglio ancora, se pensavi di conoscere Linux / Unix, aspetta di usarlo tutti i giorni sul tuo desktop!Chissà che possa anche piacerti :)

Capistrano è lo strumento di distribuzione più bello che abbia mai visto.Le modifiche all'architettura rendono impossibile correggere le configurazioni in modo che funzioni di nuovo?

Perché non puoi più usare il capistrano?

Perché non ti piace svn-update?

Quali elementi della tua app richiedono una distribuzione speciale?

Puoi impostare svn:ignore proprietà sui file di configurazione, in modo che svn update non li cancella e quindi utilizza svn export /target/path/ per sbarazzarsi di .svn file nel tuo repository Subversion.

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