Serwer Apache HTTP Server z przodu, za nim Apache Tomcat 6.0.18. Wszystko połączone ze sobą za pomocą mod_jk.
Problem:
W przypadku braku połączenia z Tomcatem należy wyświetlić ładny komunikat o tymczasowych problemach i próbować odświeżyć stronę co 10 sekund w celu sprawdzenia czy Tomcat nie jest ponownie dostępny.
Rozwiązanie:
Mogłoby się wydawać, że banalne. W pliku konfiguracyjny Apache HTTP ustalenie ErrorDocument i po sprawie. Niestety nie do końca tak jest.
Ale od początku. Musimy przekazać do strony obsługującej stronę błędu parametry. Odpada nam więc wykorzystanie ErrorDocument w postaci bezwględnego adresu. Jak więc to zrobić?
- Przygotujemy alias /error wskazujący na katalog /var/www/error
<Directory "/var/www/error">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /error /var/www/error
W katalogu /var/www/error tworzymy plik 503.php o następującej zawartości
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Refresh" CONTENT="10; URL=http://<?php echo $_SERVER['HTTP_HOST'];?>">
<title>Serwer Tomcat tymczasowo niedostępny - proszę czekać</title>
<style type="text/css" media="all">
h1
{
color: red;
}
</style>
</head>
<body>
<h1>Serwer Tomcat tymczasowo niedostępny - proszę czekać</h1>
</body>
</html>
Musimy poinformować serwer http żeby pliki *.php nie były przekazywane do Tomcata. Jest to kluczowa rzecz, z którą miałem największy problem.
SetEnvIf Request_URI "/*.php" no-jk
Pozostało już tylko wskazać dokument, który ma być wywoływane w przypadku błędu 503.
ErrorDocument 503 /error/503.php
Brak komentarzy:
Prześlij komentarz