Desligando o servidor da web para manutenção

2

Nota: eu sou novo nessa situação!

Como conseguimos redirecionar todas as solicitações durante a manutenção para uma página que diz que o site está em modo de manutenção?

Eu quero automatizar esse processo (por meio do cron):

  1. Encerrar o apache
  2. Fazer manutenção (Durante esse tempo, todas as solicitações devem ser redirecionadas para a página de manutenção)
  3. Iniciar o apache

No ponto 2, como redireciono cada solicitação quando o apache está inativo ou como as pessoas gerenciam isso (automatizado)? Aprecie suas respostas.

Obrigado

    
por Vishal 20.07.2010 / 20:15

3 respostas

4

Se você quiser tornar os sites inacessíveis durante a manutenção e usar um arquivo por host virtual como o ubuntu e o debian do ( /etc/apache2/sites-available e sites-disabled ), basta desativar os sites que os excluem dos sites disponíveis (ou movendo os arquivos para fora). Você também pode criar um site 'catch all' e ativá-lo mostrando uma 'mensagem de manutenção'.

Outra opção é usar o iptables para redirecionar todo o tráfego na porta http para outra porta no servidor, onde você pode executar um servidor secundário (lighttpd ou nginx ou qualquer coisa realmente pequena que possa servir páginas estáticas em HTML). A regra seria:

iptables -t nat -A PREROUTING -p tcp -i ethX -d <server ip> –dport 80 -j DNAT –to <server ip>:<new port>

Você também pode redirecionar para outro servidor / porta completamente.

    
por 20.07.2010 / 20:57
1

O Apache precisa permanecer em execução para atender a sites, mas você pode configurá-lo para enviar todas as solicitações para uma página da Web de manutenção usando a diretiva DocumentRoot. Supondo que você crie uma página para notificação de manutenção dentro de um diretório de manutenção, seria assim:

Operações normais:

DocumentRoot "/var/www/html"
#DocumentRoot "/var/www/html/maintenance"

Operações de Manutenção: apenas comente o normal e descomente a linha de manutenção:

#DocumentRoot "/var/www/html"
DoucmentRoot "/var/www/html/maintenance"

Em seguida, basta recarregar o Apache para ativar as alterações: /etc/init.d/httpd reload . Quando você terminar, apenas inverta o processo.

Observe que, se você tiver vários VirtualHosts, precisará fazer essa alteração no DocumentRoot para cada um deles. Pode haver (provavelmente é) um método mais simples - para uma configuração simples, é isso que eu faço.

    
por 20.07.2010 / 20:42
0

Eu não posso falar sobre o Apache, mas aqui está como eu faço isso no IIS (que, indicentally, tem IMHO uma interface melhor para isso).

  • Eu tenho o site em uma pasta (OBVIAMENTE)
  • Eu tenho outro site em outra pasta que é o "site de manutenção".
  • Eu apenas altero as pastas no site antes da manutenção.

O IIS / ASP.NET também tem um bom mecanismo onde um "arquivo de bloco" transforma todo o site em modo de manutenção. Isso é feito colocando uma página "app_offline.htm" na pasta raiz do site. O lado negativo é que você não pode testar o site sob outra URL enquanto estiver dentro (o que pode ser bom para uma última verificação interna de que todas as coisas funcionam). Então, eu fui ter um site de manutenção.

Ter uma pasta separada e redirecionar o site é IMHO o caminho mais rápido.

    
por 20.07.2010 / 20:21