Como você produz depósitos de sites IIS de produção?
15
Portanto, não tenho certeza se essa é uma questão de estouro de pilha ou falha do servidor. Se eu tenho um site .NET que quero implantar no ambiente de produção, qual é a melhor maneira de fazer isso. Devo empacotá-lo como um MSI e instalar? Use nant para enviar os arquivos necessários. Basta enviar os arquivos por FTP usando o Beyond Compare?
Como você implanta código de produção? Este é um caso específico do Windows que estou analisando aqui.
O IIS oferece suporte à implantação do xcopy, portanto, basta copiar os arquivos, a menos que você tenha requisitos especiais.
Uma maneira de fazer isso é um script simples que usa o ROBOCOPY para copiar os novos arquivos no servidor.
Se o site for grande e isso demorar muito, use um sistema de controle de versão. Eu gosto do Mercurial para esse fim, apesar de você ter cuidado para que os arquivos de configuração do sistema de controle de versão não sejam veiculados ao público. A implantação é simplesmente uma questão de confirmar as alterações e verificar a versão mais recente no servidor. Além de ser eficiente, isso permite reversões rápidas (se você marcou a última versão válida), caso o seu mais recente e o melhor possuam um bug de parada de show.
Para minimizar o tempo de inatividade, o script pode copiar os arquivos para um novo diretório e renomear rapidamente os diretórios ou alterar para onde o IIS aponta para o novo diretório.
O sistema de controle de versão é atraente, mas para sites que exigem compilação, pode não funcionar muito bem. A menos que uma versão compilada seja mantida sob controle de versão, é claro.
913 Jonathon Watney
1
Eu nunca pensei em colocar um sistema de controle de origem em produção. É interessante saber que é preciso manter toneladas de arquivos zip extras por aí.
JoshBerke #
Eu faço isso o tempo todo com o Subversion. No Apache, você usaria mod_rewrite para garantir que os usuários não possam acessar os diretórios .svn. Usar o controle de versão para implantação é definitivamente o caminho a percorrer.
460 Luke
13
Considere usar a Ferramenta de Implantação da Web da Microsoft. Ele foi projetado especificamente para ajudar a implantar aplicativos da Web e atualizações para esses aplicativos da Web nos servidores da Web IIS 6 e 7 de produção e executa um trabalho melhor do que o MSI (Windows Installer), IMHO.
Normalmente você o utiliza configurando um site "gold master" em algum lugar e depois instruindo a ferramenta a compactar as alterações a partir daí. Ele analisará um servidor de destino para implantação e fará as alterações necessárias para parecer com o gold master (útil para atualizações subseqüentes). É particularmente útil se você estiver implantando em mais de um servidor Web (ou seja, um farm) e possui suporte para implantar mais do que apenas arquivos (ele também pode lidar com a realização de alterações no registro, implantação de certificados, bancos de dados SQL etc.).
+ infinito. Essa ferramenta é um salva-vidas e libera departamentos inteiros (à la tsilb) para trabalhar em problemas mais interessantes.
Portman
4
Gostaria de responder à resposta de Joel sugerindo que um servidor de Integração Contínua retire suas alterações do sistema de controle de origem. Em seguida, ele criará o projeto. Em seguida, copie a saída da compilação para uma nova pasta. Você pode fazer algumas alterações rápidas na configuração (web.config e app.config). Voila, pronto para o Xcopy!
O que fiz no meu empregador anterior, que era basicamente um site de leilão / comércio eletrônico em que não podíamos permitir muito tempo de inatividade:
Pegue uma versão compactada da versão / release para implantar no servidor de compilação
Teste-o em um servidor intermediário que possui uma cópia do banco de dados de produção e possui a mesma versão do software que o software de produção. Teste se tudo correu bem. Caso contrário, reinicie a implantação do servidor de temporariedade (mas primeiro restaure um backup).
Se tudo correu bem: copie os scripts de compilação e atualização do 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 ASP.NET (caso algo ainda dê errado). Prepare então tudo para que eu apenas precise clicar em enter para iniciar o script de atualização e a cópia dos arquivos do banco de dados (observe que eu poderia criar um script para isso). Então inicie tudo. Normalmente, isso é uma questão de segundos e os usuários não notam muito o tempo de inatividade.
Há muitas coisas mais engraçadas para fazer como desenvolvedor da web. Mas essa foi a parte mais crucial do meu trabalho.
oh caramba, no trabalho, temos uma equipe inteira para isso. Eles têm uma ferramenta interna que remove um servidor do cluster / farm, publica os arquivos, executa as NUnits e o adiciona novamente ao cluster / farm. Eles fazem isso para cada um dos 16 servidores. Demora horas. O resto de nós nem sequer tem "acesso ao olhar".
Para meus projetos pessoais, publico do VS2005 diretamente no meu servidor da web. Meio que tem segurança menos rigorosa.
Considere usar a Ferramenta de Implantação da Web da Microsoft. Ele foi projetado especificamente para ajudar a implantar aplicativos da Web e atualizações para esses aplicativos da Web nos servidores da Web IIS 6 e 7 de produção e executa um trabalho melhor do que o MSI (Windows Installer), IMHO.
Normalmente você o utiliza configurando um site "gold master" em algum lugar e depois instruindo a ferramenta a compactar as alterações a partir daí. Ele analisará um servidor de destino para implantação e fará as alterações necessárias para parecer com o gold master (útil para atualizações subseqüentes). É particularmente útil se você estiver implantando em mais de um servidor Web (ou seja, um farm) e possui suporte para implantar mais do que apenas arquivos (ele também pode lidar com a realização de alterações no registro, implantação de certificados, bancos de dados SQL etc.).
fonte
Gostaria de responder à resposta de Joel sugerindo que um servidor de Integração Contínua retire suas alterações do sistema de controle de origem. Em seguida, ele criará o projeto. Em seguida, copie a saída da compilação para uma nova pasta. Você pode fazer algumas alterações rápidas na configuração (web.config e app.config). Voila, pronto para o Xcopy!
Confira CruiseControl.NET
fonte
O que fiz no meu empregador anterior, que era basicamente um site de leilão / comércio eletrônico em que não podíamos permitir muito tempo de inatividade:
Há muitas coisas mais engraçadas para fazer como desenvolvedor da web. Mas essa foi a parte mais crucial do meu trabalho.
fonte
oh caramba, no trabalho, temos uma equipe inteira para isso. Eles têm uma ferramenta interna que remove um servidor do cluster / farm, publica os arquivos, executa as NUnits e o adiciona novamente ao cluster / farm. Eles fazem isso para cada um dos 16 servidores. Demora horas. O resto de nós nem sequer tem "acesso ao olhar".
Para meus projetos pessoais, publico do VS2005 diretamente no meu servidor da web. Meio que tem segurança menos rigorosa.
fonte