Como lidar com uma atualização do servidor

2

Eu tenho vários sites armazenados em um servidor.

Se eu quiser atualizar minha configuração do Apache, quero informar a todos os meus clientes que haverá um upgrade em 30 minutos.

Eu posso modificar cada site para mostrar esta mensagem, mas eu estava pensando, como posso tornar isso automático? Qual é a maneira profissional de fazer isso?

Além disso, quando o Apache estiver reiniciando ou atualizando, não haverá "Página de manutenção". Como posso mostrar para cada site uma página padrão "sob atualização" se o apache estiver inativo? Preciso de 2 servidores?

    
por aneuryzm 28.09.2010 / 11:42

4 respostas

2

Durante a fase em que você atualiza todos os seus pacotes, basta manter o apache em execução e ninguém notará.

O reinício real do apache pode ser feito de tal maneira que os usuários individuais também não notem isso, usando uma reinicialização normal. Isso permitirá que cada encadeamento de trabalho conclua a exibição da página atual e, em seguida, não aceite novas solicitações. Em seguida, o servidor é recarregado, o que leva apenas alguns segundos e começa a atender as solicitações novamente.

Isso não é problema seu. O problema é o que fazer se alguma coisa falhar . Em que o apache não será reiniciado e o seu usuário irá perceber. Então você quer ter certeza de que nada pode dar errado.

E a maneira de fazer isso é criar uma cópia espelhada exata do servidor web em outra máquina, fazer a atualização lá e ver o que acontece. Anote todas as coisas que precisam de uma correção ou intervenção manual antes que o apache seja reiniciado. Em seguida, repita todo o processo até que você tenha uma operação completamente suave. E então, e só então, você faz a atualização no servidor ao vivo.

    
por 28.09.2010 / 12:48
0

I want to inform all my customers that there will be an upgrade in 30 minutes.

Você precisa de algum recurso adicional para apenas servir conteúdo estático - você pode fazer isso usando inclusões no lado do servidor ou um auto-prepend ou implementar sua própria solução usando o idioma em que você desenvolve seu site. Basta alterar o conteúdo do arquivo você está incluindo. No entanto, este não é um exercício trivial - para suportar isso, você precisa garantir que o conteúdo html servido não seja armazenável em cache (ou tenha um tempo de cache muito curto). Além disso, se você usar a rota do PHP, você não pode simplesmente escrever a saída diretamente para o navegador se precisar usar cookies / sessões / redirecionamento.

when Apache is restarting or upgrading, there will be no "Maintenance page". How can I instead show for each website a default page "under upgrade" if apache is down ?

Isso é muito MUITO mais complicado. Dado que reiniciar sua instância do Apache não deve demorar mais alguns segundos, não vale a pena o esforço. Se a reinicialização levar mais de 5 segundos, você terá um problema diferente para corrigir.

    
por 28.09.2010 / 12:47
0

Existem várias maneiras de fazer isso, mas eu posso fazer uma recomendação para fazer isso com Javascript.

Você pode incorporar um script em cada site a qualquer momento. Faça com que o script verifique uma URL em seu servidor, pode ser simplesmente um arquivo de texto com 0 ou 1, ou você pode colocar uma mensagem lá (JSON é um bom protocolo para usar). Tenha o script, lado do cliente, verifique uma URL para essa variável. Se for 1, exiba a mensagem, se for 0, não. Você pode até querer codificar a mensagem nesse arquivo de texto caso precise exibir alguma mensagem para todos os usuários do site sobre um atraso ou qualquer outra informação.

Quando você estiver pronto para fazer a migração, 30 minutos antes, faça com que o Javascript inicie uma barra de notificação na parte superior dos sites, notificando os usuários de que o site será atualizado em breve.

Você pode conseguir o quanto quiser com ele, mas na minha cabeça essa é a melhor maneira de fazer isso em vários sites. É claro que, se você tem muitos hits a qualquer momento, muitos clientes verificam esse URL. Depende apenas da sua situação particular. Você também pode fazer isso do lado do servidor com algum cache.

    
por 28.09.2010 / 14:56
0

Você pode usar mod_layout para adicionar código HTML ou PHP personalizado ao início ou fim das páginas. Veja as Perguntas frequentes sobre mod_layout para ter uma boa visão geral de como usar o mod, mas pode ser tão simples de usar quanto:

<VirtualHost www.foo.com:80>
    LayoutFooter "Insert some sort of message here..."
</VirtualHost>
    
por 31.05.2011 / 03:29