Come si fa a deporre i siti Web di produzione IIS?


15

Quindi, non sono sicuro se si tratta di uno Stack Overflow o di una domanda di errore del server. Se ho un sito Web .NET che desidero distribuire nell'ambiente di produzione, qual è il modo migliore per farlo. Devo comprimerlo come MSI e installarlo? Utilizzare nant per eseguire il push up dei file necessari. Basta FTP i file su con Beyond Compare?

Come si distribuisce il codice di produzione? Questo è un caso specifico di Windows che sto guardando qui.

Risposte:


15

IIS supporta l'implementazione di xcopy, quindi la copia dei file dovrebbe essere tutto ciò di cui hai bisogno a meno che tu non abbia requisiti speciali.

Un modo per farlo è un semplice script che utilizza ROBOCOPY per copiare i nuovi file sul server.

Se il sito è di grandi dimensioni e richiede troppo tempo, utilizzare un sistema di controllo della versione. Mi piace Mercurial a questo scopo, anche se devi stare attento che i file di configurazione del sistema di controllo della versione non finiscano per essere offerti al pubblico. L'implementazione è quindi semplicemente una questione di commit delle modifiche e quindi verifica dell'ultima versione sul server. Oltre ad essere efficiente, questo consente rapidi rollback (se hai taggato l'ultima versione valida) nel caso in cui l'ultimo e il più grande abbia un bug showstopper.

Per ridurre al minimo i tempi di inattività, è possibile fare in modo che lo script copi i file in una nuova directory e quindi rinomini rapidamente le directory o cambi dove IIS punta alla nuova directory.


1
Il sistema di controllo della versione è interessante ma per i siti Web che richiedono la compilazione potrebbe non funzionare troppo bene. A meno che una versione compilata non sia ovviamente sotto il controllo della versione.
Jonathon Watney,

1
Non ho mai pensato di mettere in produzione un sistema di controllo del codice sorgente. Interessanti battiti sicuri che devono tenere in giro tonnellate di file zip extra.
JoshBerke,

Lo faccio sempre con Subversion. Su Apache useresti mod_rewrite per assicurarti che gli utenti non possano accedere alle directory .svn. L'utilizzo del controllo versione per la distribuzione è sicuramente la strada da percorrere.
Luca,

13

Prendi in considerazione l'utilizzo dello strumento di distribuzione Web di Microsoft. È stato appositamente progettato per aiutare a distribuire applicazioni Web e aggiornamenti a tali applicazioni Web sui server Web IIS 6 e 7 di produzione e svolge un lavoro migliore rispetto a MSI (Windows Installer), IMHO.

Normalmente lo usi impostando un sito "gold master" da qualche parte e poi dicendo allo strumento di impacchettare le modifiche da lì. Quindi esaminerà un server di destinazione per la distribuzione e apporterà le modifiche necessarie per renderlo simile al gold master (che è utile per i successivi aggiornamenti). È particolarmente utile se si esegue la distribuzione su più di un server Web (ovvero una farm) e ha il supporto per la distribuzione di più di un semplice file (può anche gestire le modifiche al registro, la distribuzione di certificati, database SQL, ecc.).


+ infinito. Questo strumento è un vero toccasana e libera interi dipartimenti (a la tsilb) a lavorare su problemi più interessanti.
Portman

4

Vorrei ulteriormente la risposta di Joel suggerendo a un server di integrazione continua di raccogliere le modifiche dal sistema di controllo del codice sorgente. Costruirà quindi il progetto. Quindi esegui xcopy l'output della build in una nuova cartella. È quindi possibile apportare alcune modifiche alla configurazione rapida (web.config e app.config). Voila, pronta per Xcopy!

Dai un'occhiata a CruiseControl.NET


3

Quello che ho fatto al mio precedente datore di lavoro, che era fondamentalmente un sito di aste / e-commerce in cui non potevamo permettere molti tempi di fermo:

  • Prendi una versione build zippata della versione / rilascio da distribuire sul server build
  • Provalo su un server di gestione temporanea che ha una copia del database di produzione e ha la stessa versione del software del software di produzione. Prova che tutto è andato per il meglio. In caso contrario, riavviare la distribuzione del server di gestione temporanea (ma prima ripristinare un backup).
  • Se tutto è andato bene: copia gli script di build e di aggiornamento del database sul server di produzione in una cartella locale. Effettua un backup specifico del database e dei file ASP.NET (nel caso qualcosa vada storto). Prepara quindi tutto in modo che devo solo fare clic su Invio per avviare lo script di aggiornamento e la copia dei file del database (nota che potrei creare uno script per questo). Quindi avvia tutto. Normalmente si tratta di pochi secondi e gli utenti non noteranno molto che si sono verificati tempi di inattività.

Ci sono molte cose più divertenti da fare come sviluppatore web. Ma questa è stata la parte più cruciale del mio lavoro.


1

oh Dio, al lavoro abbiamo un intero team per questo. Hanno uno strumento interno che estrae un server dal cluster / farm, pubblica i file, esegue le NUnits e lo aggiunge nuovamente al cluster / farm. Lo fanno per ciascuno dei 16 server. Ci vogliono ore. Il resto di noi non ha nemmeno "guardarsi intorno".

Per i miei progetti personali, pubblico da VS2005 direttamente sul mio server web. Kinda ha una sicurezza meno severa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.