Spegnimento del server web per la manutenzione

Nota: sono nuovo a questa situazione!

Come riesciamo a redirect each richiesta durante la manutenzione a una pagina che dice che il sito è in modalità di manutenzione?

Voglio automatizzare questo process (tramite il cron):

  1. Arresto apache
  2. Fare la manutenzione (durante questo periodo each richiesta deve essere reindirizzata alla pagina di manutenzione)
  3. Avvia apache

Nel punto 2, come posso redirect each richiesta quando apache è in discesa o come gestisce questa persona (automatizzata)? Apprezzi le tue risposte.

Grazie

  • Colbind un dominio a un'istanza Amazon EC2?
  • Determinare una misura realistica di richieste al secondo per un server web
  • Pagina di errore Nginx con risposta JSON
  • L'utilizzo della memory dei processi php-cgi sta crescendo costantemente
  • Come utilizzare più server virtuali con un solo indirizzo IP pubblico?
  • Perché i server HTTP non inviano un singolo file quando ansible?
  • Suggerisci un server web Linux veloce, caratteristico e sicuro per fornire contenuti statici
  • Quanto stabile è il server Web Cherokee?
  • 3 Solutions collect form web for “Spegnimento del server web per la manutenzione”

    Se si desidera solo rendere i siti inadeguati durante la manutenzione e utilizzare un file per host virtuale come ubuntu e debian do ( /etc/apache2/sites-available e sites-disabled ) è ansible distriggersre solo i siti che rimuovono i link dai siti disponibili (o spostando i file). Puoi anche creare un sito "catch all" e abilitarlo a mostrare un "messaggio di manutenzione".

    L'altra opzione è quella di utilizzare iptables per redirect tutto il traffico sulla port http in un'altra port del server, where è ansible eseguire un server web secondario (lighttpd o nginx o qualsiasi altra cosa che possa servire pagine html statiche). La regola sarebbe:

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

    È inoltre ansible redirect completamente ad un altro server / port.

    Apache deve restare in esecuzione per servire i siti web, ma puoi configurarlo per submit tutte le richieste a una pagina web di manutenzione utilizzando la direttiva DocumentRoot. Supponendo che si crea una pagina per la notifica di manutenzione all'interno di una directory di manutenzione, dovrebbe sembrare così:

    Operazioni normali:

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

    Operazioni di manutenzione: basta commentare la normale e scomparire la linea di manutenzione:

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

    Quindi ricaricare Apache solo per triggersre le modifiche: /etc/init.d/httpd reload . Quando finisci, devi solo rovesciare il process.

    Si noti che se si dispone di più VirtualHosts è necessario apportre modifiche di DocumentRoot per ciascuna di esse. Ci potrebbe essere (probabilmente) un metodo più semplice – per una configuration semplice questo è quello che faccio.

    Non posso parlare di Apache, ma ecco come lo faccio in IIS (che, per esempio, ha IMHO un'interface migliore per questo).

    • Ho il sito in una cartella (OBVIOUSLY)
    • Ho un altro sito in un'altra cartella che è il "sito di manutenzione".
    • Cambierò le cartelle sul sito prima della manutenzione.

    IIS / ASP.NET dispongono anche di un bel meccanismo in cui un "block file" trasforma l'integer sito in modalità di manutenzione. Questo viene fatto mettendo una pagina "app_offline.htm" nella cartella principale del sito. Il lato di negazione è che non è ansible testare il sito sotto un altro URL mentre questo è in (che può essere utile per un ultimo controllo interno che tutte le cose funzionano). Così, sono andato a avere un sito di manutenzione.

    Avere una cartella separata e redirect il sito è IMHO il modo più veloce.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.