Pergunta

Temos vários projetos php desenvolvidos em windows (xampp) que precisam ser implantados em uma combinação de servidores linux/windows.

Nós usamos capistrano no passado, para implantar do Windows para os servidores Linux, mas mudanças recentes na arquitetura e nos servidores Windows deixaram a configuração antiga sem funcionar.A receita funciona bem para a implantação do Linux, mas a configuração dos servidores Windows exigiu mais tempo do que temos agora.As ideias para a receita Capistrano são respostas válidas.obviamente, os servidores Windows/Linux não compartilham usuários, então isso complica um pouco (para a suposição capistrano do mesmo nome de usuário/senha em todos os lugares).

Atualmente estamos usando o svn-update para os servidores Windows, o que não gosto, pois deixa todos os arquivos SVN pendurados nos servidores de produção.(e ainda temos que atualizá-los manualmente com svn no Windows) E atualização manual de arquivos usando o wincp e sincronizando os diretórios com seus equivalentes no Linux.

Minha pergunta é: quais ferramentas/configuração você sugere para automatizar este cenário de implantação:"Vários desenvolvedores php windows/linux implantando em mais de 2 máquinas mistas windows/linux"

(ps:não temos problemas em usar ferramentas Linux ou qualquer coisa que funcione através do cygwin, simplesmente precisamos tornar a implantação uma operação simples de uma etapa)

editar:Atualmente não podemos trabalhar em um ambiente totalmente Linux, temos que implantar tanto no servidor Linux quanto no Windows.Podemos iniciar a implantação de qualquer lugar, mas preferiríamos poder fazê-la em qualquer um dos ambientes.

Foi útil?

Solução

Eu uso 4 abordagens diferentes dependendo do ambiente do cliente:

  1. Capistrano e ferramentas semelhantes (eficazes, mas complexas)
  2. rsync de + para Windows, Linux, Mac (simples, não impõe disciplina)
  3. svn de + para Windows, Linux, Mac (simples, não impõe disciplina)
  4. Scripts no servidor (executados pelo navegador, complexos)

Existem alguns requisitos que orientam o que você precisa:

  • Quanta disciplina você deseja impor
  • Se você precisar de migrações de banco de dados (ou configuração) (para cima e/ou para baixo)
  • Se você quiser uma página estática "estamos fora do ar"
  • Quem pode fazer a atualização
  • Diferenças de configuração entre servidores

Eu sugiro fortemente impor disciplina suficiente para salvá-lo de si mesmo:implantar em um servidor de desenvolvimento, permitir migrações ascendentes e restauração simples do banco de dados e limitar quem pode atualizar o servidor ativo a um pequeno número de administradores responsáveis ​​(onde o servidor de desenvolvimento está aberto a mais desenvolvedores).Considere também enviar por meio de um cron job (para o servidor de desenvolvimento), para que haja um instantâneo diário de suas alterações incrementais.

Na maioria das vezes, acho que svn ou rsync as configurações são suficientes, com alguns scripts do lado do servidor, especialmente quando o conjunto de administradores é limitado a alguns desenvolvedores.

Outras dicas

Isso provavelmente vai parecer bobo, mas...Eu costumava ter esse tipo de problema o tempo todo, até que no final decidi que se eu estivesse sempre implantando no Linux, eu realmente deveria pelo menos tentar em desenvolvimento no Linux também.Eu fiz.Foi sem dor.Eu nunca voltei.

Agora.Não estou sugerindo que isso seja para todos.Mas, se você instalar Caixa Virtual você pode executar uma instalação do Linux como um servidor local na sua caixa do Windows.Compartilhe uma pasta na máquina virtual e você poderá usar todos os seus softwares e técnicas Windows conhecidos e confiáveis e tenha a tranquilidade de saber que tudo está funcionando bem em sua plataforma de destino.

Além disso, você poderá voltar para Capistrano (uma ótima escolha) para implantação.

O melhor de tudo, se você achava que conhecia Linux/Unix, espere até usá-lo todos os dias em seu desktop!Quem sabe você pode até gostar :)

Capistrano é a melhor ferramenta de implantação que já vi.As mudanças na arquitetura impossibilitam a correção das configurações para que funcionem novamente?

Por que você não pode mais usar o capistrano?

Por que você não gosta do svn-update?

Quais coisas em seu aplicativo requerem uma implantação especial?

Você pode configurar svn:ignore propriedade nos arquivos de configuração, para que svn update não os apaga e depois usa svn export /target/path/ se livrar .svn arquivos em seu repositório Subversion.

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