Tomcatのサーバ設定(+WebDAV、SSL)

Tomcatの「server.xml」の設定メモです。
共通のクラスライブラリを配置する
Java VMの設定
Managerの設定
MIMEタイプの設定
WebDAVの設定
SSLの設定


共通のクラスライブラリを配置する

注:以下はTomcat 5.5までのお話です。

1つのサーブレットコンテナ、つまりTomcatプロセスには、 複数のWebアプリケーションを載せるのが普通です。 各アプリケーションで使用するクラスライブラリ(JARファイル)は、 各アプリケーションディレクトリの/WEB-INF/lib の下に置きますが、 どのアプリケーションでもほぼ共通に使うクラスライブラリの場合は、 $CATALINE_HOME/shared/lib や $CATALINA_HOME/common/lib に置くことで、 これらも自動的にロードされます。
注意しないといけない点ですが、shared/libに置いたJARファイルと、 common/libに置いたJARファイルと、各アプリケーションの/WEB-INF/libに置いたJARファイルでは、 それぞれクラスローダが違います。 そして、shared/libやcommon/libに置いたJARファイルからロードしたクラスから、 各アプリケーションの/WEB-INF/libに置いたJARファイルに含まれているクラスを Class.forName()やgetSystemClassLoader().loadClass()を使ってロードすることはできません。 これらの相互に関連があるJARファイルは同じディレクトリに置き、 同じクラスローダにロードさせる必要があります。
それで、shared/libとcommon/libのどちらに置くのがよいのでしょうか? 通常は、shared/libに置きます。 理由は、common/libにはTomcat自身が使用するライブラリが既に入っていて、 それらとの混同を防ぐためです。 しかし例外があります。それはJDBCドライバのJARファイルで、 これらはcommon/libに置いた方が都合が良いです。 なぜなら、TomcatにはDBCPという、データベースへの接続をぷーリングする機能があり、 それを実装しているcommons-dbcp.jarというライブラリがcommon/libに既に置かれているので、 JDBCドライバもそこに置かないとDBCPからJDBCドライバがロードしてもらえないためです。

注:以下はTomcat 6.0からのお話です。

Tomcat 6.0では、shared/lib、common/libという区別がなくなり、 $CATALINA_HOME/libに一本化されました。 したがって、共通ライブラリは何でもここに置けばOKです。 もちろん、WebアプリケーションのWEB-INF/libとの住み分けは引き続き十分注意する必要があります。


Java VMの設定

Tomcatを起動する際に使うシェル(catalina.sh)に、 Java VMに関する設定を環境変数CATALINA_OPTSで指定することができます。

CATALINA_OPTS="-server -Xmx256M"
export CATALINA_OPTS

-serverはサーバータイプのVMを使う設定、-Xmxは使用するメモリの最大サイズを指定します。


Managerの設定

Tomcatには「Webアプリケーションマネージャ」(Manager)という、 Webベースの管理ツールが付属しています。 商用製品よりはシンプルですが、

  • 各Webアプリケーションに現在接続しているセッションの数が分かる
  • 各Webアプリケーションの起動・停止・再ロードなどができる
ので、運用しながら一部のファイルを差し替えるために、 アプリケーションごとに起動・停止を行うのにベンリに使えます。
初期設定の状態では、Managerは 「http://{host}:{port}/manager/html」というURLでアクセスできます。 このURLをブラウザで入力すると、ユーザ認証のダイアログが出るはずです。
Managerを使うには、managerロール (Tomcat7ではmanager-guiロール) を持つユーザでログインする必要があります。 このロールの設定をするファイルは $CATALINA_HOME/conf/tomcat-users.xml で、ここに

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager-gui"/>
<user username="sysoper" password="passpass" roles="manager-gui"/>
</tomcat-users>

このように、rolesにmanager(manager-gui)を含むユーザを定義します。 usernameは何でも構いません。
初期設定ではmanager(manager-gui)の行がないので、 自分で上記設定をしないと誰もログインできないようになっています。


Tomcatで配信するコンテンツのMIMEタイプ

TomcatをWebサーバとして使う際に、コンテンツの拡張子に対応するMIMEタイプを設定しておかないと、 Webブラウザが正しい扱いをしてくれないおそれがあります。 といっても、オープンな世界で使われている大半の拡張子は、 既に$CATALINA_HOME/conf/web.xmlで、初期設定で大方の状況で適切なMIMEタイプにマッピングが設定されています。 それ以外の独自の拡張子、 よくある例がMicrosoft Excelのワークシート(.xls)ですがそれらのマッピングをするには、 web.xmlに自分で書き加える必要があります。

<mime-mapping>
  <extension>xls</extension>
  <mime-type>application/x-excel</mime-type>
</mime-mapping>


TomcatでのWebDAVの設定

Tomcatには最初から $CATALINA_HOME/webapps/webdav というディレクトリがあり、 ここでWebDAVを公開できます。 ただし、初期状態ではダウンロードのみ可能でアップロードはできないようになっている (リードオンリー) ので、アップロードできるようにするには $CATALINA_HOME/webapps/webdav/WEB-INF/web.xml ファイルの次の部分囲んでいるのコメントを解除します。

<!--
    <init-param>
      <param-name>readonly</param-name>
      <param-value>false</param-value>
    </init-param>
-->


TomcatでのSSLの設定

ここではTomcatをスタンドアローンで動かす場合に、 Tomcatとの通信を暗号化する設定方法をメモっています。

  1. JavaVMについているツール「keytool」を使い、キーストアファイルを作成します。

    keytool -genkey -alias tomcat -keyalg RSA \
     -keystore /the/path/of/tomcat.keystore
    キーストアのパスワードを入力して下さい:******
    ...
    

    コマンドを入力すると、キーストア・パスワードやクライアントに表示する名前、組織名、 都市名・県名・国名(JP)の入力を求められるので順に入力します (キーストア・パスワードの入力時にエコーは*にならず、そのまま表示されます)。 またキーストア・パスワード以外にもう1回パスワードを聞かれるところがありますが、 これはキーストア・パスワードと同じものを入力します。 名前(User Name)は証明者を識別するものなので、公知の承認局(CA)などと混同されず、 自分(の組織)を一意に識別できる名前をつけます。
  2. Tomcatの設定ファイル「server.xml」を編集します。

    <!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
               port="8443" minProcessors="5" maxProcessors="75"
               enableLookups="true"
               acceptCount="10" debug="0" scheme="https" secure="true">
      <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
               keystoreFile="conf/tomcat.keystore" keystorePass="abcdefg"
               clientAuth="false" protocol="TLS"/>
    </Connector>
    

    このブロックは最初コメント化されているので、コメントを解除してから編集します。 ここでkeystoreFileにはキーストアファイルの名前を絶対パスか、 $TOMCAT_HOMEからの相対パスで指定します。 keystorePass はキーストア・パスワードがデフォルト値「changeit」 以外の場合には指定する必要があります。

Server Side Java Index Top

(first uploaded 2001/01/19 last updated 2011/01/03, KQ TAURA-URANO398)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!