2011-01-04 23 views
5

Estoy usando tomcat6 con la configuración de mod_jk (ambos ejecutando en el puerto 80) en los servidores ubuntu9.10 y 8.10. Implemento archivos war en/usr/share/tomcat/webapps. Durante el despliegue, como se me reinicia el gato, voy a tener la siguiente página cuando se accede a la aplicación Tomcat en el navegador:Redirigir tomcat a la página de mantenimiento cuando está inactivo

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 

¿Cómo vuelvo a dirigir esta página a algún otro auto creada página de mantenimiento mientras el servidor Tomcat se ¿abajo?.

Respuesta

5

Puede página personalizada de error de configuración de Apache para el código de error 503.

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

ErrorDocument 503 /maintance.html 
+0

sí, está trabajando en una máquina. Pero en otra máquina está redirigiendo, pero la página de mantenimiento no se muestra. En lugar de la página de mantenimiento, muestra 'maintenance.html' en el navegador web cuando compruebo detener el tomcat. ¿Hay algún truco o consejo aquí? – user465465

4

Si está utilizando conectores mod_jk y Tomcat es el comportamiento esperado. Si utiliza algo así como

ErrorDocument 503 "foo" 

verá 'foo' prestados en la página o

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

que se dirigirá a somedomain.com éxito. Pero si se utiliza algo así como

ErrorDocument 503 /maintenance.html 

Apache no será capaz de encontrar [DocumentRoot] /maintenance.html ya que está buscando en el contexto del conector Tomcat. Debe desmontar su conector y decirle a Apache que proporcione contenido estático desde otra ubicación.

Esta es una buena guía para comenzar con mod_jk. Custom Error Pages with Apache and Tomcat Connectors

editar: Aquí está la solución que empleé para hacer que nuestras 503 páginas personalizadas se procesen correctamente.

Primero, a todas nuestras páginas de error personalizadas se les agrega el código de error, ya que es probable que nuestra aplicación web no contenga archivos con estos códigos de estado como la raíz del nombre del archivo. Así que para la utilización de su ejemplo, me gustaría tener algo como los siguientes tres archivos en un directorio llamado '' custom_errors:

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

Esto hace que sea fácil para excluir los archivos relacionados con las páginas de error personalizados desde el jk montaje. En nuestro archivo de host virtual, a continuación, fijamos la ubicación del documento de error y el 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 

Esto básicamente le dice a Apache y no mod_jk para montar cualquier archivo con el 503 prefijo bajo el contexto del conector Tomcat y buscaremos localmente para esos archivos en lugar. Si no desea usar una ubicación relativa a DocumentRoot, puede usar Alias ​​como yo.

+0

Maravillosa respuesta, pero no funcionó para mí ... Tuve que cambiar dos cosas 1. Agregar una barra inclinada a la fila "Alias" 2. Desmontar/error * en su lugar/503 * –

+0

Hola Andrij: ¿Puedes por favor revisa esta pregunta, es similar. No me importaría usar una página web para el mantenimiento, pero no sé dónde debo ponerlos para que la configuración funcione, por favor revise este enlace: http: // serverfault.com/questions/741494/tomcat-httpd-running-a-webapp-when-service-is-not-available-or-overloaded –

Cuestiones relacionadas