Como posso atualizar meu site sem forçar os usuários a esperar?

8

O tempo de inatividade é inconveniente para os usuários e, atualmente, eles precisam aguardar a atualização do mecanismo de um site. Além disso, ao usar scripts prontos para uso, existe o risco de que uma alteração na configuração não funcione da maneira pretendida (mesmo que tenha sido testada em um site intermediário).

Como posso manter várias versões de um site em um servidor e alternar entre elas sem causar nenhum tempo de inatividade (por exemplo, com um arquivo htaccess)?

Gelatina
fonte

Respostas:

6

Você está em uma máquina Linux / BSD? Nesse caso, você pode facilmente usar links simbólicos para atingir esse objetivo.

Crie a versão 1 do site aqui:

/var/www/www.example.org.v1

Crie um link simbólico apontando para este diretório

cd /var/www
ln -s www.example.com.v1 www.example.com

Isso deve fornecer uma listagem de diretório ( ls -la) parecida com esta:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:35 www.example.com.v1

Defina seu servidor da Web para usar /var/www/www.example.comcomo raiz do documento. Você nunca terá que mudar isso; todo o apontamento será feito no nível do sistema de arquivos.

Agora, quando você deseja trocar a versão 2 do site, basta colocar a nova versão em:

/var/www/www.example.org.v2

E atualize o link simbólico para apontar para esta versão:

ln -sfh www.example.com.v2 www.example.com

O que deixará a saída do diretório assim:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x   2 userid  users   512 Aug  3 03:42 www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:41 www.example.com.v2

Como você pode ver, o link simbólico www.example.com agora está apontando para a versão 2 do seu site. Essa é uma operação atômica e não deve causar indisponibilidade relacionada a arquivos indisponíveis.

Obviamente, ainda é necessária uma complexidade considerável para garantir que as estruturas do banco de dados sejam atualizadas, quaisquer recursos estáticos estejam disponíveis (e vinculados à versão correta) etc. etc. Um novo site está disponível instantaneamente.

O Windows Vista e o Server 2008 também oferecem suporte a links simbólicos usando o mklinkcomando, embora eu não tenha nenhuma experiência direta com eles.

JasonBirch
fonte
7

Você pode usar hosts virtuais no apache para ter 2 versões do código em 2 URLs diferentes. Um exemplo comumente usado é:

test.example.com -> /var/www/version1.2

www.example.com -> /var/www/version1.1

ambos estão no mesmo servidor, mas talvez apenas um esteja acessível ao mundo. Quando estiver convencido de que test.example.com está funcionando, basta mudar para onde eles apontam na sua configuração do apache e ... pronto. Novo site, novo código. Supondo que não houve alterações no esquema do banco de dados, isso deve funcionar. Então, depois de fazer a alteração, será:

test.example.com -> / var / www / newtestversion

www.example.com -> /var/www/version1.2

Aqui está um exemplo de diretiva de configuração do apache para um host virtual:

<VirtualHost *:80>

     ServerAdmin gabe@localhost

     DocumentRoot "/var/www/version1.1"

     ServerName test.example.com

</VirtualHost>

Para obter mais informações sobre como fazer isso, consulte a documentação do host virtual apache

Não sei como fazer isso no IIS, mas imagino que também haja uma maneira.

Se algo der errado, mude o host virtual de volta ao original e seu site antigo está de volta ... sem problemas. Você precisa reiniciar o apache para que essas alterações tenham efeito, mas isso geralmente é uma coisa muito rápida de se fazer.

Gabe.
fonte
0

O que eu sugeriria:

  • Teste localmente em um servidor de desenvolvimento antes de fazer upload de quaisquer alterações. Não faça as alterações em um servidor ativo até ter certeza de que funciona no servidor de teste.
  • Execute a manutenção no menor tempo de tráfego pesado. Para a maioria dos sites, isso ocorre nas primeiras horas da manhã nos fins de semana. Se os fins de semana não forem uma opção, faça-o durante o horário menos traficado durante a semana.
  • Avise seus usuários sobre manutenção programada com antecedência.
Virtuosi Media
fonte
Existe uma maneira de configurar várias versões e alternar perfeitamente entre elas?
Gelatina
Eu não fiz isso antes, mas imagino que você possa fazer isso através de uma configuração de vários servidores ou servidores virtuais. Se é isso que você está procurando, pode acabar sendo uma pergunta melhor para o ServerFault.
Virtuosi Media
@Simon: Sim, use WampServer e instalar vários módulos para diferentes versões do Apache, PHP e MySQL para coincidir com o servidor ao vivo - wampserver.com/en
DisgruntledGoat