- PR -

Tomcat停止中のお詫びページ表示

1
投稿者投稿内容
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-06-22 15:43
Apache httpd + Tomcat + OracleでWebシステムを構築しています。
使用しているソフトのバージョンは以下の通りです。
Apache httpd 2.0.58
Tomcat 4.1.31
mod_jk 1.2.15
Oracle 9i
J2SDK 1.4.2_12

一貫性バックアップを取るために、定期的にOracleとTomcatを停止する
運用を考えているのですが、
Tomcatの停止中に、Webアプリケーションへのリクエストに対して
「現在メンテナンス中です」などのお詫びページを表示できないかと、
方法を探しています。

最初に考えたのは、ApacheのErrorDocumentを使う方法でした。
Tomcatを停止している間もApacheは動かしているので、
例えば /hoge というWebアプリケーションがあったら、httpd.confに
コード:
<Directory /hoge>
    ErrorDocument 500 /hoge/maintenance.html
</Directory>


などど記述すればいけるか、と思ったのですが、Tomcat停止中は、
Apache + mod_jkは、ステータス200でエラー(?)ページを返しており、
期待した動作をさせることは出来ませんでした。

ちなみに、mod_jkに関しては、httpd.confに以下のように設定しています。
コード:
LoadModule       jk_module modules/mod_jk.so
JkWorkersFile    /opt/tomcat/conf/workers.properties
JkLogFile        /opt/httpd/logs/mod_jk.log
JkLogLevel       warn
JkMount /hoge/*.jsp   ajp3
JkMount /hoge/servlet/*   ajp3

Alias /hoge /opt/tomcat/webapps/hoge

<Directory /opt/tomcat/webapps/hoge>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    DirectoryIndex index.jsp index.html
    Allow from all
    ErrorDocument 500 /hoge/maintenance.html
</Directory>
 
<Directory /opt/tomcat/webapps/hoge/WEB-INF>
    AllowOverride None
    deny from all
</Directory>



いい方法をご存じの方は、ご教授いただけると助かります。
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2006-06-22 19:14
引用:

koeさんの書き込み (2006-06-22 15:43) より:

一貫性バックアップを取るために、定期的にOracleとTomcatを停止する
運用を考えているのですが、
Tomcatの停止中に、Webアプリケーションへのリクエストに対して
「現在メンテナンス中です」などのお詫びページを表示できないかと、
方法を探しています。




定期的に止めるとき「だけ」メンテナンス中です、と表示したいのであれば、
そのときだけ、何がリクエストされようが、内部でどんなエラーが起ころうが、
「現在メンテナンス中です」とだけ表示するように設定した httpd.conf で
Apache を上げておけばいいんじゃないですか。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-06-26 10:21
返答ありがとうございます。

引用:

せんさんの書き込み (2006-06-22 19:14) より:
定期的に止めるとき「だけ」メンテナンス中です、と表示したいのであれば、
そのときだけ、何がリクエストされようが、内部でどんなエラーが起ころうが、
「現在メンテナンス中です」とだけ表示するように設定した httpd.conf で
Apache を上げておけばいいんじゃないですか。



その方向で試してみました。
停止中の設定ファイルとして、以下の設定を持つhttpd.confを作成しました。
コード:
Alias /hoge /opt/tomcat/webapps/hoge
<Directory /opt/tomcat/webapps/hoge>
    AllowOverride None
    RedirectMatch 302 .* /sorry.html
</Directory>


これとは別に、通常の設定は、httpd.conf.normalにコピーしました。

停止中のお詫びページは、htdocs以下にsorry.htmlという名前で作成しました。

その上で、バックアップ開始前後でhttpd.conf.normalかhttpd.conf.stoppedかを切り替えるようにしたところ、うまくいきました。

Apacheやmod_jkの設定だけでする方法を考えていたので詰まりましたが、
いろいろ組み合わせると方法があるものですね。
参考になりました。
1

スキルアップ/キャリアアップ(JOB@IT)