Preparação para o ambiente de produção automatizar o processo?

2

Estou comprando 2 servidores dedicados (um para hospedagem ao vivo, um para o ambiente de teste). Quatro perguntas:

  1. Como manter o servidor ativo em sincronia com o servidor intermediário? O objetivo é executar a sincronização todos os dias, mas não posso pagar nenhum tempo de inatividade, por isso, é possível testar a produção de espelhamento, mas a produção pode ser usada pelos usuários durante o processo de sincronização? E como automatizar este processo como um cron job, talvez?

  2. Eu preciso enviar arquivos de teste para produção, presumo que isso seja feito via FTP ou como automatizar isso também de alguma ferramenta?

  3. Para o meu servidor de teste, como protegê-lo internamente? Eu tenho meu domínio principal, ex: www.example.com Então, no servidor prod esta URL deve ser utilizável por todos na internet. No servidor de teste, o mesmo URL deve ser usado apenas pelas pessoas internas. Não consigo usar um subdiretório porque tenho vários subdomínios / subdiretórios como parte do site e quero preservar a estrutura de URL precisa para o controle de qualidade adequado.

  4. Eu preciso usar o controle de versão para o código, então presumo que o SVN esteja instalado em ambos os servidores e eles possam estar em sincronia, embora eu não tenha certeza de como separá-los entre os ambientes no SVN?

Meu banco de dados é MySQL e MagnoDB.

    
por MKnight 18.02.2011 / 03:49

1 resposta

2

Você terá que perdoar meus exemplos, sou um administrador de sistemas do Windows, mas as mesmas ferramentas existem no Unix, tenho certeza disso.

How to keep the live server in sync with staging server?

Para arquivos HTML e periféricos, isso é simples. Basta executar uma sincronização em um horário programado todos os dias. Eu uso robocopy , mas acredito que rysnc fará o mesmo trabalho em * nix.

Goal is to run the sync everyday but I cant afford any downtime, so can staging mirror production yet production be usable by users during the sync process?

Geralmente não. Se você precisa fazer isso, então o que você realmente precisa são dois sistemas de preparação. Um deles é ao vivo e um deles está ocioso. Você sempre sincroniza com o ocioso, e então muda o sistema de teste para o ocioso assim que a sincronização estiver completa, então o ocioso se torna ativo, e o antigo ao vivo recebe a próxima atualização. / p>

Claro, isso significa que todos os usuários serão expulsos do sistema quando os servidores trocarem de função. Você diz que ambos precisam estar 100% do tempo, mas, na verdade, você pode pagar 1 minuto por dia para fazer isso? Se você fizer isso às 3 da manhã (ou em outra hora tranquila do dia), o impacto deve ser mínimo.

And how to automate this process like a cron job maybe?

Não há uma resposta simples para isso. O que fazemos com o Windows e o MSSQL é fazer um robocopy do live para o staging para atualizar todos os arquivos estáticos e fazer um backup / restauração do MSSQL no banco de dados de preparação. Tudo isso é roteirizado e executado uma vez por semana, domingo de manhã às 1 da manhã.

I need to push files from staging to production, I assume this is done via FTP or how to automate this also from some tool?

Existem muitas e muitas maneiras de fazer isso. Dê uma olhada neste site, foi perguntado antes. rsync provavelmente seria a melhor maneira de fazer isso.

For my staging server, how to secure it internally?... I cannot use a subdirctory because I have lots of sub-domains/sub directories already as part of the site and I want to preserve the accurate URL structure for proper QA.

Você precisa de um DNS dividido. Os servidores DNS nos quais seus usuários de controle de qualidade precisam retornar um registro A diferente de seus usuários públicos. Não há maneira fácil de fazer isso. Pessoalmente, o que fazemos é usar um nome de host diferente, então, em vez de www.example.com , o DNS interno tem um registro A extra para staging.example.com . Que um registro não está exposto à internet, então apenas pessoas dentro do escritório ou da VPN podem acessá-lo.

I need to use version control for code, so i assume SVN is to be installed on both servers and they can be in sync although I am not sure how to seperate them between environments on SVN?

O SVN é uma ótima maneira de fazer isso. Quando precisamos implantar somente para o staging, e não ao vivo, separamos o código e fazemos um checkout no servidor de teste. Dessa forma, as atualizações críticas ainda podem ser implantadas no sistema ativo quando estiverem prontas, mas o sistema de teste está testando uma base de código não pronta para produção. Então, quando terminarmos, voltaremos para o tronco principal e veremos novamente o servidor de teste para que todos estejam de volta no mesmo sistema.

    
por 18.02.2011 / 04:16