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.