Pergunta

Atualmente implantamos aplicações web criando um banco de dados e executando scripts SQL através do analisador de consultas.Em seguida, copiamos a saída de “publicar site” e configuramos esse site no IIS.

Vimos a configuração da web no visual studio, mas essa parte parece estar pouco documentada.Por exemplo, não sabemos como solicitar ao usuário o IP e a senha do servidor SQL.Também tendemos a implantar sites dessa forma em pastas como http://example.com/project, em vez de apenas http://exemplo.com.

Depois, há problemas com o AJAX.Net não sendo instalado ou algum ou outro patch não aplicado.

Até o momento, temos acesso físico aos servidores.Em breve estaremos enviando CDROMs.Qual é a compensação prática entre intervenção manual e automação?

Foi útil?

Solução

Evite a implantação do Visual Studio e automatize o máximo possível.Projetos de implantação da Web e NAnt podem ser seus amigos!

Resumidamente, nossa configuração de implantação:

  1. Usamos RedGate SQL para criar scripts de diferenças entre o banco de dados dev e o banco de dados ativo.

  2. Um arquivo de compilação NAnt que chama MSBUILD para criar o projeto de implantação da web (.wdproj), compacta o aplicativo da web compilado resultante (junto com o script de alteração SQL) e, em seguida, carrega o arquivo zip no servidor.

  3. No lado do servidor, há outro arquivo de construção NAnt que coloca o aplicativo offline, faz backup do banco de dados e do site.executa o script de alteração SQL, descompacta a nova versão e coloca o aplicativo online.

A Etapa 3 geralmente é executada “manualmente” (um clique duplo), mas às vezes é agendada para tarde da noite.Você poderia fazer exatamente o mesmo a partir de um CD-ROM ou até mesmo escrever um pequeno aplicativo Windows Forms como um wrapper.

Fico feliz em fornecer detalhes do script NAnt se você estiver interessado.

Outras dicas

Você já tentou usar Implantação Web projeto?Há suporte para VS 2008 também agora..

Eu implanto principalmente aplicativos ASP.NET em servidores Linux.Aqui está meu fluxo de trabalho padrão:

  • Eu uso um repositório de código fonte (como o Subversion)
  • No servidor, tenho um script bash que faz o seguinte:
    • Verifica o código mais recente
    • Faz uma compilação (cria as DLLs)
    • Filtra os arquivos até o essencial (remove arquivos de código, por exemplo)
    • Faz backup do banco de dados
    • Implanta os arquivos no servidor web em um diretório nomeado com a data atual
    • Atualiza o banco de dados se um novo esquema for incluído na implantação
    • Torna a nova instalação a padrão para que ela seja exibida no próximo hit

O checkout é feito com a versão de linha de comando do Subversion e a construção é feita com xbuild (msbuild semelhante ao projeto Mono).A maior parte da mágica é feita no ReleaseIt.

No meu servidor de desenvolvimento, tenho essencialmente integração contínua, mas no lado da produção, na verdade, faço SSH no servidor e inicio a implantação manualmente executando o script.Meu script é habilmente chamado de 'deploy', então é isso que eu digito no prompt do bash.Eu sou muito criativo.Não.

Na produção, tenho que digitar 'deploy' duas vezes:uma vez para fazer check-out, construir e implantar em um diretório desatualizado e uma vez para tornar esse diretório a instância padrão.Como os diretórios estão desatualizados, posso reverter para qualquer implantação anterior simplesmente digitando 'deploy' no diretório relevante.

A implantação inicial leva alguns minutos e a reversão para uma versão anterior leva alguns segundos.

Tem sido uma boa solução para mim e depende apenas dos três utilitários de linha de comando (svn, xbuild e releaseit), do cliente de banco de dados, SSH e Bash.

Eu realmente preciso atualizar a cópia do ReleaseIt no CodePlex algum dia:

http://releaseit.codeplex.com/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top