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.