*目次 [#w8c1c804]
#contents
*はじめに [#c83681e0]
''2003.06.17''時点のApache2はまだまだ実績が少ないため、
Apache1.3.2xとTomcat 4.1.xの連携を基本とする。

*連携方法一覧 [#n51b9422]
+mod_jkを使用する(AJP12)
+mod_jkを使用する(AJP13)
+mod_jk2を使用する(AJP13)
+Apacheのmod_proxyを使用する

**で、 [#i2b92d38]
もっとも手軽なのはmod_proxyだが、mod_proxyはあくまでおまけ程度のものであり、
本来の用途とは少し異なると(私は)思うので却下。

恐らく一番実績があるのはmod_jk(AJP12)だと思うが、設計が古くパフォーマンスが悪い。
個人的にTomcat4.0.xまではmod_jk(AJP13)を使用していたが、設定が邪魔臭い。

mod_jk2はApache2の(多分)推奨コネクタだが、Apache1.3.xでも使用できる。
特徴は設定が簡単。というか正式なリファレンスが見当たらないためわからない。

でも私の環境では
WindowsXP + Apache 1.3.24 + mod_ssl + OpenSSL + mod_jk2(AJP13) + Tomcat 4.1.24
という組み合わせで動いてる。

**したがって、 [#g5b0d31e]
実運用ではmod_jk(AJP13)が主流だと思う。
開発環境は実環境とほぼ同じ状態で設定が簡単なほうが良いためmod_jk2を一押しとする。
**mod_jk2の設定など [#ld01477b]
教えるのはもったいない。

-http://www.atmarkit.co.jp/fjava/rensai2/jspservlet03/jspsevlet03_5.html


**mod_jk(ajp13)で連携してみる [#hb843706]
しかしまぁ、そんな事言っても結局mod_jkの設定をすることもあるので覚書する。~
おおまかな設定の流れは
+Apacheのhttpd.conf に mod_jk.conf のパスを指定してインクルードする。
+mod_jk.conf にて mod_jk.dll のパスを指定する。
+mod_jk.conf にて workers.properties のパスを指定する。
+workers.properties にてコネクタの定義とそのコネクタの使用するポートを設定する。
+mod_jk.conf に /hoge というリクエストがあった場合、X:/Apache Group/Tomcat 4.1/webapps/hoge に行く見たいな設定をする。
+↑のときに許可するリクエストのパスの種類も設定する。
+↑のときに使用するコネクタの種類((この場合ajp13を使うわけですが・・・))も設定する。
-つまるところ、Apache の httpd.conf に mod_jk.conf をインクルードするわけですから逆に httpd.conf に全部設定書いても動くと思いますが、ややこしくなってしまうのでやめましょう。

***Apache httpd.conf [#w82b603a]
-mod_jk.confインクルードする。
 # Apache Tomcat 連携
 Include "X:/Apache Group/conf/mod_jk.conf"
>こんな感じで mod_jk.conf のパスを指定します。~
>もちろん設定したパスに mod_jk.conf を設置してください。~




***mod_jk.conf [#k7888472]
mod_jk.conf に各種設定を書いていきます。
-mod_jk.dll のパス
 #
 # The following line instructs Apache to load the jk module
 #
 #LoadModule jk_module modules/mod_jk.dll
 LoadModule jk_module "X:/Apache Group/conf/mod_jk.dll"
>もちろん設定したパスに mod_jk.dll を設置してください。~
>コメントアウトしてる"modules/mod_jk.dll"の場合、%APACHE_HOME%/modules/ になります。~
#ref(mod_jk.conf,right)
#ref(mod_jk.dll,right)
-workers.properties のパス
 JkWorkersFile "X:/Apache Group/conf/workers.properties"
>もちろん設定したパスに workers.properties を設置してください。~
>workers.properties の設定は次項にて~
#ref(workers.properties,right)





***workers.properties [#l6242ccd]
ほったらかしです・・・・




*ディレクトリのindexを見せなくする [#x92233d6]

設定はそれぞれのディレクトリを見せなくするを参照。~

+[[Apache:http://dekuyou.ddo.jp/knowledge/index.php?%5B%5BApache%B3%D0%BD%F1%5D%5D#content_1_2]]
+[[Tomcat:http://dekuyou.ddo.jp/knowledge/index.php?%5B%5BTOMCAT%B3%D0%BD%F1%5D%5D#content_1_13]]

**連携している場合に発生する問題点 [#c5122fd0]
*** mod_jk でApache-Tomcat連携している場合 [#ga771b49]
-mod_jk.conf で alias を切っている場合、Apacheの設定でTomcatのディレクトリindexが表示されることがある。((Apacheにて全体を見せないように設定していても、aliasはその場の設定が有効となるため))

--Apacheの設定としてディレクトリのindexを表示しないようにする。
---この設定方法だと、Apacheとしてディレクトリを表示しないことになるのでエラーメッセージの統一ができる。

-mod_jk.conf で すべてのRequestがTOMCATにマウントされているとApacheでのディレクトリインデックスの隠蔽は無駄である。
--[[TOMCATのディレクトリインデックスの隠蔽:http://dekuyou.ddo.jp/knowledge/index.php?%5B%5BTOMCAT%B3%D0%BD%F1%5D%5D]]を設定する。
---ただし、これではApache-Tomcat連携はばればれ。
--ので、必要なRequestのみマウントするようにする。((/servlet/* といったRequestが問題だ・・・なくなる方向であるとは思いますが・・・))


*** mod_jk2 でApache-Tomcat連携している場合 [#o4b5abc3]
-知らない。



* Apache-Tomcat連携で日本語ファイルのDownload時の文字化けをやっつける [#h815f7d6]
-Apache-Tomcat連携で日本語ファイルをDownloadするとDownloadダイアログのファイル名が文字化けする。

**なぜかというと [#l19d6bf9]
+tomcatで通常responseヘッダーに格納する文字コードは「ISO-8859-1」
+連携時、Tomcat-JK2.jarに含まれるモジュールでのresponseヘッダーの文字コードの扱いは「UTF-8」になってるらしい。
>なので化ける((Tomcatだけだったら「ISO8859-1」で扱えば日本語を扱える))
-これに関しては設定などがないので((ソース中に「("UTF-8")」ってべた書きしてあるっぽい))ソースを改修して自力でTomcat-JK2.jarを作るしかない。

**cvs.apache.org からソースを取得する [#q28a1d2e]
-設定などは[[ここを見ろ!:http://jakarta.apache.org/site/cvsindex.html]]
-このリポジトリから「jakarta-tomcat-connectors」プロジェクトをcheck out

 cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
 password: anoncvs

 cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout [module-name]
>SIZE(2):※コマンドラインでの check out は↑の通り

-このリポジトリから check out する際、目的の Tomcat のバージョンを指定する。
--今回はTomcat4.1.24。タグは「TOMCAT_4_1_24」。

**tomcat-jk2.jar をbuildする。 [#ia2cbb6f]
-作業環境はWindows2Kpro
-まず、Defaultの状態でbuildできないと話にならないので・・・
>buildしてみる。
-・・・で出来ないと思う。
-Windowsの環境変数に依存していると思われるjarへのクラスパスを通す。((ちなみに私は「servlet.jar catalina.jar tomcat-util.jar commons-modeler.jar mx4j-jmx.jar jakarta-regexp-1.2.jar commons-logging.jar」これだけ通した。))
-Build関連のファイルに依存していると思われるjarへのパスがあったらフルパスで通す。((元がLinux用になってるが気にせずWindowsのパスを通す))
--このときTOMCATのjarなどにパスを通すことになるが、当然そのtomcatはバージョンを合わせる。

-buildが出来るようになったらソースの修正に入る。((結構強引にbuildできます。ただし、BUILD SUCCESSFULになっても一部失敗しているときがあるので、もとのTomcat-jk2.jarとファイルサイズを見比べる))


** org.apache.jk.server.JkCoyoteHandler#appendHead() を修正する [#q0787e7f]
- org.apache.jk.server.JkCoyoteHandler#appendHead() の 281行目辺りに「UTF8」とべた書きされている部分がある。((「UTF-8」ではなく「UTF8」となっていた為、ここを見つけるのに苦労した・・・RFC的に「UTF8」はオッケーなのだろうか?「UTF-8」が正しかったように記憶しているが・・・))
 c2b=new C2BConverter(  "UTF8" );
>「ISO-8859-1」で扱うように修正する。((この C2BConverter(String str)はクラスを何個か経由して最終的に java.io.OutputStreamWriter(OutputStream out, Charset cs)に書き込んでた・・・ややこしい・・・ ))
 // c2b=new C2BConverter(  "UTF8" );
 c2b=new C2BConverter(  "ISO-8859-1" );

-で、build。

** 修正した Tomcat-jk2.jar を配置する [#w61591c0]
-修正した Tomcat-jk2.jar を %CATALINA_HOME%/server/lib のものと置き換える。((Defaultはリネームするなどしておいておきましょう。))

-これで Apache-Tomcat連携で日本語ファイルのダウンロード時、ダイアログの表示で日本語が使えます。
~
RIGHT:Tomcat4.1.24用
#ref(tomcat-jk2.jar,right)

~
~




*その他の情報 [#vbd13301]
-通常のURLでディレクトリでは英文字の大文字小文字を判断しませんが、aliasに関しては大文字小文字が判断されるみたいです。 -- [[連携したら必ずひっかかるね]] SIZE(10){2003-10-15 (水) 13:33:34}


//#comment

*リンク集 [#v0d3fecd]
-[[WindowsでのApacheとTomcatの連携:http://hp.vector.co.jp/authors/VA000137/apache-tomcat-memo.html]]
--http://hp.vector.co.jp/authors/VA000137/apache-tomcat-memo.html
-[[Tomcat 4でServlet/JSP するメモ:http://siisise.net/java/tomcat/mod_jk2.html]]
--http://siisise.net/java/tomcat/mod_jk2.html

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS