#contents *入手先 [#k3611c3b] -現行バージョン http://tomcat.apache.org/ -過去バージョン http://archive.apache.org/dist/tomcat/ *バージョンごとの特徴 [#ua8e2fed] **V4.0系 [#abef9518] このころになってから使われるサイトが多くなったんじゃないだろうか?今でもエラー画面とかでバージョン情報が丸見えになっているサイトがあるし(爆) **V5.0系 [#idd7f15f] これは初めて自分が商用サイトで使ったTomcat。 **V5.5系 [#ufe6ac24] J2SE5.0向けで1.4.x以下はパッチを当てる必要があった。 **V6.0系 [#jd001ea5] 完全にJ2SE5.0以上 *インストール [#cb07fbd9] -Windows版はインストーラータイプだと起動・停止ができるけど細かい調整ができない(複数入れた時どうなるとか)のでアーカイブ版をお勧めする。アーカイブ版であれば複数のTomcatをディレクトリかえるだけで並存できる。 -アーカイブ版は解凍するだけ、UNIXの場合でZIPアーカイブを解答した場合は、catalina.shに実行権限をつけることを忘れないように!! -JAVA_HOMEの設定は必要。ないと以下のメッセージで怒られる Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program *最小TOMCAT作成 [#n01c98da] -メモリと起動時間節約のため最初から存在するコンテキストを消します! +server.xmlを削除してserver-minimal.xmlをserver.xmlにリネーム +$CATALINA_HOME/conf/Catalina/localhost/にあるxmlファイルを削除 +$CATALINA_HOME/webapps以下にあるフォルダをROOTだけ残して(動作確認用)削除 *運用TIPS [#n0ec7718] **ログローテーション [#q83d2d00] http://www.13hz.jp/2004/05/tomcatcatalinao.html catalina.shのcatalina.outの部分を編集する touch している部分は削除 >> "$CATALINA_BASE"/logs/catalina.out 2>&1 & を以下のように置き換える | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.out-%Y%m%d 86400 & **ディレクトリリストの禁止 [#vaa249c8] -これを放置しておくとと設定が甘いと思われ攻撃対象にされるかも? web.xmlを変更 <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> **コンテキスト設定xml置き場 [#y8e2c96c] V4以前 conf/webapps V5以降 conf/catalina/localhost WARにContext情報を含める META-INF/context.xml **[[SSL対応:http://www.itmedia.co.jp/enterprise/articles/0407/01/news018.html]] [#f2d61949] server.xmlの8443とあるあたりのコメント除去 以下のコマンドを実行する。パスワードはchangeitとしておくとデフォルトのままでよい keytool -genkey -alias tomcat ユーザーのホームディレクトリに.keystoreができるのでそれをtomcatが読みに行く *管理ツールの利用 [#f254cd8d] TOMCATにはブラウザから操作できる管理ツールがある。昔は一緒に入っていたのだが、最近は別々のアーカイブにされている。以下に利用手順をしめす。 **admintoolの配置 [#uc939428] **admintoolの利用 [#wd37eaed] conf/tomcat-users.xmlに以下の行を追加 <user username="hoge" password="hoge" roles="admin"/> **V6.0のTomcatManagerの利用 [#bce6b3cd] <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <user username="rutake" password="xxxxx" roles="manager"/> </tomcat-users> *Apacheとの連携 [#t5dbe648] -JKが開発継続で、JK2は非推奨になりました!(2004/03) -Apache2.2ではajpプロトコルによる連携がサポートされている。 **JKコンパイル [#k94fc8a4] cd jk/native ./configure --with-apxs=/usr/local/apache2/bin/apxs make cd apache-2.0 -fails sanity checkがでる場合はapt-get install gcc-c++をする -apxsはapache-develパッケージをいれないと入らない。ソースコンパイルした場合はたいてい入る ***Vine3.x系でApache2でコンパイル [#fbddfcb9] 「/home/arege/rpm/BUILD/httpd-2.0.44/srclib/apr/libtool: /home/arege/rpm/BUILD/httpd-2.0.44/srclib/apr/libtool: そのようなファイルやディレクトリはありません」が出るので以下のようにしてLIBTOOLの場所を指定する。 export LIBTOOL=/etc/apache2/build/libtool ./configure --with-apxs=/usr/bin/apxs make LIBTOOL=/etc/apache2/build/libtool **Apahceの設定 [#j4824337] ***httpd.confの編集 [#ocddfa2c] LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel error #TOMCATのコンテキストをここに書く JkMount /jsp-examples/* ajp13 ***workers.propertiesの編集 [#d8453e1d] apacheのhttpd.confと同じディレクトリへ配置する worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 ***workers.propertiesの内容をhttpd.confにかく [#b7190958] jkのバージョンが1.2.7以降 # Minimal jk configuration JkWorkerProperty worker.list=ajp13 JkWorkerProperty worker.ajp13.type=ajp13 JkWorkerProperty worker.ajp13.host=localhost JkWorkerProperty worker.ajp13.port=8009 **JK2(deprecated) [#j71ac481] -非推奨となりました! tomcat4 # ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-tomcat4=/usr/java/tomcat/ # make 出来上がったバイナリをapacheのmoduleディレクトリにコピー LoadModule jk2_module modules/mod_jk2.so 有効なworkers2.properties [status:] [uri:/jkstatus/*] group=status: [shm:] disabled=1 [channel.socket:localhost:8009] info=Ajp13 fowarding over socket debug=0 tomcatId=localhost:8009 [ajp13:] [uri:/examples/*] [uri:/tool/*] tomcat5 TOMCATのworkディレクトリを666にしておく、さもないと500エラー それでも50%の確立ででる!!どーしてくれようか! *複数のApache+Tomcat [#v75e3cc3] [[参考URL:http://www63.tok2.com/home2/jd4/Tomcat5Apache400LoadBalance.html]] -server.xmlにApache から見てそれぞれを識別するためのIDをjvmRoute="tomcat_live"で(任意)に設定 -workers.propertiesを以下のように合わせる worker.list=tomcat_live worker.tomcat_live.port=8009 worker.tomcat_live.host=127.0.0.1 worker.tomcat_live.type=ajp13 -httpd.confで上記のworker.listの定義名に対して、関連付ける JkMount /*.jsp tomcat_live JkMount /web/* tomcat_live JkMount /live/* tomcat_live JkMount /preview/* tomcat_live *JNDIの利用設定 [#vd5d8ca4] 5.0から依存ライブラリがバンドルされなくなった。DBCP,POOLを別途入れる必要あり。 *トラブルシューティング [#ie49095f] **ログの日本語が文字化けする [#p7adfb8d] LANGの設定が適切でないのが原因。最近のLinuxディストリビューションならUTF-8だろうか? export LANG=ja_JP.UTF-8 **HTTP Status 404 [#af03c3e3] The requested resource (xxxxx) is not available.の英文の訳どおり、Tomcat管理下にある指定されたリソース(JSPファイルに限らずディレクトリ等も含む)が見つからないということ。注意すべきはなんらかのエラーでコンテキストが利用不可能になった場合はそのコンテキスト以下が404になること。ファイルは存在しているように見えても該当コンテキストのエラーの原因を除いてTomcatを再起動するまでは駄目。 #counter