2011-01-04 8 views
5

Ich benutze tomcat6 mit mod_jk Setup (beide auf Port 80) auf ubuntu9.10 und 8.10-Servern. Ich stelle Kriegsdateien unter/usr/share/tomcat/webapps bereit. Während des Einsatzes, wie ich den Kater neu starten, werde ich die folgende Seite erhalten, wenn die Kater-Anwendung auf dem Browser zugegriffen wird:Redirect tomcat zu Wartungsseite wenn herunter

Service Temporarily Unavailable 

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. 
Apache/2.2.11 (Ubuntu) mod_jk/1.2.15 Server at 192.168.2.54 Port 80 

Wie könnte ich diese Seite zu einer anderen selbst erstellten Wartungsseite umleiten, während der Tomcatbediener ist Nieder?.

Antwort

5

Sie können 503. Setup-Seite individuelle Fehler in Apache für Fehlercode

http://httpd.apache.org/docs/2.2/mod/core.html#errordocument

ErrorDocument 503 /maintance.html 
+0

ja es funktioniert auf einer Maschine. Aber auf einem anderen Rechner wird umgeleitet, aber die Wartungsseite wird nicht angezeigt. Anstatt der Wartungsseite wird im Webbrowser "Maintenance.html" angezeigt, wenn ich den Tomcat kontrolliere. Gibt es hier irgendwelche Tricks oder Tipps? – user465465

4

Wenn Sie Anschlüsse mod_jk und tomcat verwenden dies ist das erwartete Verhalten. Wenn Sie so etwas wie

ErrorDocument 503 "foo" 

verwenden, werden Sie sehen, ‚foo‘ wiedergegeben auf der Seite oder

ErrorDocument 503 "http://www.somedomain.com" 

, die Sie direkt erfolgreich Domäne someDomain.com. Aber wenn Sie so etwas wie

verwenden
ErrorDocument 503 /maintenance.html 

Apache nicht in der Lage sein zu finden [DocumentRoot] /maintenance.html, da sie im Rahmen des Katers Anschluss sucht. Sie müssen den Connector aushängen und Apache anweisen, statischen Inhalt von einem anderen Speicherort aus bereitzustellen.

Dies ist eine gute Anleitung für den Einstieg in mod_jk. Custom Error Pages with Apache and Tomcat Connectors

bearbeiten: Hier ist die Lösung, die ich verwendet, um unsere benutzerdefinierten 503 Seiten ordnungsgemäß zu rendern.

Zuerst wird allen unseren benutzerdefinierten Fehlerseiten der Fehlercode vorangestellt, da unsere Webanwendung wahrscheinlich keine Dateien mit diesen Statuscodes als Stammverzeichnis des Dateinamens enthält. So für Ihr Beispiel verwenden, würde ich so etwas wie die folgenden drei Dateien in einem Verzeichnis ‚custom_errors‘ genannt hat:

/503_maintenance.html 
/503_maintenance.css 
/503_corp_logo.png 

Dies macht es einfach montieren, um benutzerdefinierte Fehlerseiten aus dem jk Zusammenhang alle Dateien auszuschließen. In unserer vhost-Datei, dann setzen wir den Fehler Dokument Standort und Alias ​​

#Alias the location of your custom error page files 
Alias   /error/ /var/apache2/2.2/htdocs/custom_errors 
ErrorDocument 503  /error/503_maintenance.html 

#mount the core tomcat application 
JkMount  /*  myWorker 

#set the 503 code if myWorker is unavailable 
#and exclude the 503 pages from the tomcat/jboss application 
JkMount  /*  myWorker;use_server_errors=503 
JkUnMount /503* myWorker 

Diese im Grunde sagt Apache und mod_jk keine Dateien mit dem 503-Präfix im Kontext des Katers Stecker zu montieren und wird für diese Dateien suchen lokal stattdessen. Wenn Sie keinen Speicherort relativ zu DocumentRoot verwenden möchten, können Sie und Alias ​​wie ich verwenden.

+0

Wunderbare Antwort, aber es hat nicht für mich funktioniert ... Ich musste zwei Dinge ändern 1. Hinzufügen eines Schrägstrichs "Alias" Zeile 2. unmounting/Fehler * stattdessen/503 * –

+0

Hallo Andrij: Können Sie Bitte überprüfen Sie diese Frage, es ist ähnlich. Ich hätte nichts dagegen, eine Webseite für die Wartung zu verwenden, aber ich weiß nicht, wo ich sie für die Konfiguration setzen sollte, bitte überprüfen Sie diesen Link: http: // Serverfault.com/questions/741494/tomcat-httpd-running-ein-webapp-wenn-service-ist-nicht-verfügbar-oder-überladen –

Verwandte Themen