Como você faz o site de produção do IIS?

15

Portanto, não tenho certeza se essa é uma pergunta sobre estouro de pilha ou falha no servidor. Se eu tiver um site .NET que desejo implantar no ambiente de produção, qual é a melhor maneira de fazer isso. Devo empacotá-lo como um MSI & instalar? Use nant para empurrar os arquivos necessários para cima. Apenas FTP os arquivos usando Beyond Compare?

Como você implementa o código de produção? Este é um caso específico do Windows que estou vendo aqui.

    
por Glenn Slaven 01.05.2009 / 02:50

5 respostas

15

O IIS suporta a implementação do xcopy, portanto, apenas copiar os arquivos deve ser tudo de que você precisa, a menos que você tenha requisitos especiais.

Uma maneira de fazer isso é um script simples que usa ROBOCOPY para copiar os novos arquivos para o servidor.

Se o site for grande e isso levar muito tempo, use um sistema de controle de versão. Eu gosto do Mercurial para este propósito, embora você tenha que tomar cuidado para que os arquivos de configuração do sistema de controle de versão não acabem sendo servido ao público. A implantação é simplesmente uma questão de confirmar as alterações e, em seguida, verificar a versão mais recente no servidor. Além de ser eficiente, isso permite rollbacks rápidos (se você marcou a última versão válida) no caso de seu mais recente e melhor erro de showstopper.

Para minimizar o tempo de inatividade, você pode fazer com que o script copie os arquivos para um novo diretório e, em seguida, renomeie rapidamente os diretórios ou altere para onde o IIS aponta para o novo diretório.

    
por 01.05.2009 / 03:23
13

Considere o uso da Ferramenta de Implantação da Web da Microsoft. Ele foi projetado especificamente para ajudar a implantar aplicativos da Web e atualizações nesses aplicativos da Web para servidores de produção IIS 6 e 7 e faz um trabalho melhor do que o MSI (Windows Installer), IMHO.

Normalmente, você o usa configurando um site "gold master" em algum lugar e, em seguida, informa a ferramenta para fazer as alterações a partir daí. Em seguida, ele examinará um servidor de destino para implementação e fará as alterações necessárias para torná-lo semelhante ao gold master (que é útil para atualizações subseqüentes). É particularmente útil se você estiver implantando em mais de um servidor da Web (ou seja, um farm) e tiver suporte para implantar mais do que apenas arquivos (também pode manipular alterações no registro, implantar certificados, bancos de dados SQL etc.).

    
por 01.05.2009 / 04:51
4

Eu continuaria com a resposta de Joel sugerindo que um servidor de integração contínua selecionasse suas alterações do seu sistema de controle de origem. Em seguida, ele irá construir o projeto. Em seguida, copie a saída da construção para uma nova pasta. Você pode então fazer algumas alterações rápidas na configuração (web.config e app.config). Voila, pronta para o Xcopy!

Confira CruiseControl.NET

    
por 01.05.2009 / 03:26
3

O que fiz no meu antigo empregador, que era basicamente um site de leilão / comércio eletrônico onde não podíamos permitir muito tempo de inatividade:

  • Pegue uma versão de compilação zipada do release / versão para implementar no servidor de construção
  • Teste em um servidor de temporariedade que tenha uma cópia do banco de dados de produção e tenha a mesma versão de software que o software de produção. Teste que tudo correu bem. Se não reiniciar a implementação do servidor de temporariedade (mas primeiro restaurar um backup).
  • Se tudo correr bem: copie os scripts de criação e atualização de banco de dados para o servidor de produção para uma pasta local. Faça um backup específico do banco de dados e dos arquivos do ASP.NET (caso algo continue errado). Prepare então tudo para que eu tenha que clicar em enter para iniciar o script de upgrade e a cópia dos arquivos do banco de dados (note que eu poderia criar um script para isso). Então lance tudo. Normalmente, isso é uma questão de segundos e os usuários não notarão muito que houve tempo de inatividade.

Existem muitas coisas mais engraçadas para se fazer como desenvolvedor web. Mas essa foi a parte mais importante do meu trabalho.

    
por 04.05.2009 / 08:49
1

oh jeeez, no trabalho, temos uma equipe inteira para isso. Eles têm uma ferramenta interna que retira um servidor do cluster / farm, publica os arquivos, executa as NUnits e as adiciona de volta ao cluster / farm. Eles fazem isso para cada um dos 16 servidores. Demora horas. O resto de nós nem sequer tem "olhar em volta do acesso".

Para meus projetos pessoais, eu publico do VS2005 diretamente para o meu servidor web. Meio que tem menos segurança estrita.

    
por 01.05.2009 / 04:45