tomcat5.5のインストール

tomcatのインストールです。4.1の頃と比較するとインストール作業が格段に楽になっています。
今回の作業で使用したTomcatのバージョンは5.5.20です。
また、Apacheとの連携で使用したconnectorはjk2の2.0.2です。

インストールの流れは次のようになります。
作業は全てrootで行います。
Apacheと連携するにはまず、Apacheのインストールを先に行います。

  1. ソースコードのダウンロード
  2. 環境変数の確認
  3. ビルド
  4. 起動スクリプトの作成
  5. Apache2との連携
  1. ソースコードのダウンロード
    アパッチのFTPサイトからソースコードをダウンロードします。
    [root src]# ftp ftp.apache.or.jp  ・・・anonymousユーザーでログインします。
    ftp> cd /pub/net/apache/dist/tomcat/tomcat-5/v5.5.20/src/
    ftp> lcd /usr/local/src
    ftp> get apache-tomcat-5.5.20-src.tar.gz
    ftp> cd /pub/net/apache/dist/tomcat/tomcat-connectors/jk2/source
    ftp> get jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
    ftp> quit


  2. 環境変数の確認
    作業を進める前に、次の環境変数が設定されている事を確認します。
    JAVA_HOME,ANT_HOMEそしてそのパス。
    設定されていないようなら、以下の様に設定します。
    当然ですが、インストール先などの環境は各自異なるので、自身の環境に合わせ、設定します。
    export JAVA_HOME=/usr/local/j2sdk
    export ANT_HOME=/usr/local/ant
    export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
    ちなみに、私が利用したjdk,antのバージョンは下記の通りです。
    jdk:jdk.1.5.0
    ant:ant-1.6.5
     
  3. ビルド
    この時、インターネットにつながる環境である必要があります。
    ビルド実行中、必要となるソースコードやパッケージをインターネットを通じて取得します。
    tomcat4.1の頃は、tomcat自身の他、10個くらいのパッケージをダウンロード・インストールして初めてtomcatのインストールに取りかかれた事を考えると格段にインストールの手間が省けています。

    [root src]# tar zxvf apache-tomcat-5.5.20-src.tar.gz
    [
    root src]# cd apache-tomcat-5.5.20-src
    [
    root jakarta-tomcat-5.0.18-src]# ant
    これで、全てできあがりです。

    作成されたイメージをコピーして、インストールが終了です。インストール先は、/usr/local/tomcatとしています。
    [root jakarta-tomcat-5.5.20-src]# cd build/
    [
    root build]# cp -pr build /usr/local/tomcat-5.5.20
    [
    root src]# cd /usr/local
    [
    root local]# ln -sf tomcat-5.5.20 tomcat


    ※上記のant実行でエラーが発生しまし。以下は、そのときのエラーと対処法です。
    同様のエラーが発生した場合には、参考にして下さい。その他の方は、次のSTEPへ進みます。
      
    <<エラー内容>>
    testexist:
    [echo] Testing for /usr/share/java/eclipse/plugins/org.eclipse.jdt.core_3.1.2.jar

    downloadzip:
    [get] Getting: http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-JDT-3
    .1.2.zip
    [get] To: /usr/share/java/file.zip
    [get] Error opening connection java.io.FileNotFoundException: http://sunsite.informatik.rwth-aachen.de/eclipse/dow
    nloads/drops/R-3.1.2-200601181600/eclipse-JDT-3.1.2.zip
    [get] Error opening connection java.io.FileNotFoundException: http://sunsite.informatik.rwth-aachen.de/eclipse/dow
    nloads/drops/R-3.1.2-200601181600/eclipse-JDT-3.1.2.zip
    [get] Error opening connection java.io.FileNotFoundException: http://sunsite.informatik.rwth-aachen.de/eclipse/dow
    nloads/drops/R-3.1.2-200601181600/eclipse-JDT-3.1.2.zip
    [get] Can't get http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-JDT-
    3.1.2.zip to /usr/share/java/file.zip

    BUILD FAILED
    /usr/local/src/apache-tomcat-5.5.20-src/build.xml:48: The following error occurred while executing this line:
    /usr/local/src/apache-tomcat-5.5.20-src/build/build.xml:1981: The following error occurred while executing this line:
    /usr/local/src/apache-tomcat-5.5.20-src/build/build.xml:672: The following error occurred while executing this line:
    /usr/local/src/apache-tomcat-5.5.20-src/build/build.xml:2015: Can't get http://sunsite.informatik.rwth-aachen.de/eclipse
    /downloads/drops/R-3.1.2-200601181600/eclipse-JDT-3.1.2.zip to /usr/share/java/file.zip

    Total time: 4 minutes 39 seconds
    <<対処方法>>
    eclipse-JDT-3.1.2.zipファイルの取得に失敗しているので、ブラウザから実際にアクセスしてみると存在しないURLでした。仕方ないので、同じファイルをダウンロード出来るサーバーを見つけ、プロパティファイル(build.properties.default)を書き換えます。
    僕の場合、eclipse-JDT-3.1.2.zipをキーワードにしてググって見つけたURLに書き換えています。
    書き換えるファイルは以下の通りです。
    [root apache-tomcat-5.5.20-src]# vi build/build.properties.default
    ファイルの以下の箇所を書き換えます。
    # ----- Eclipse JDT, version 3.1.2 or later -----
    jdt.home=${base.path}/eclipse/plugins
    jdt.lib=${jdt.home}
    jdt.jar=${jdt.lib}/org.eclipse.jdt.core_3.1.2.jar
    #jdt.loc=http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-JDT-3.1.2.zip →このURLは存在していなかった為、コメントアウト。
    jdt.loc=http://archive.eclipse.org/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-JDT-3.1.2.zip
    → 新しく見つけたURLに書き換え
     
  4. 起動スクリプトの作成
    最後にシステム起動時に自動的に起動するようにします。
    作成したファイル(/etc/rc.d/init.d/tomcat)には実行権限を付与しておきます(chmod +x tomcat)
    #!/bin/sh
    # securlevel: 40

    # Source function library.
    . /etc/init.d/functions

    export JAVA_HOME=/usr/local/j2sdk
    INITLOG_ARGS=""
    BINDIR=/usr/local/tomcat/bin

    # See how we were called.
    case "$1" in
      start)
            echo -n "Starting tomcat: "
            ${BINDIR}/startup.sh
            echo
            touch /var/lock/subsys/tomcat
            ;;
      stop)
            echo -n "Shutting down tomcat: "
            ${BINDIR}/shutdown.sh
            echo
            rm -f /var/lock/subsys/tomcat
            rm -f /var/run/tomcat.pid
            ;;
      status)
            status tomcat
            ;;
      restart)
            $0 stop
            $0 start
            ;;
      *)
            echo "Usage: $0 {start|stop|restart|status}"
            exit 1
    esac
    exit 0

    システム起動時に自動起動するようにrunlevel毎の設定を行います。
    これは先ほど作成した/etc/rc.d/init.d/tomcatにシンボリックリンクを張るだけです。
    runlevel3,5で起動、0,6では終了するように設定します。
    起動時の順番、終了時の順番は私の環境に依存しているので各環境に合わせて下さい。networkより遅く起動すれば問題ないと思います。
    [root init.d]# cd ../rc3.d
    [
    root rc3.d]# ln -s ../init.d/tomcat S81tomcat
    [root rc3.d]# cd ../rc5.d
    [root rc5.d]# ln -s ../init.d/tomcat S81tomcat
    [root rc5.d]# cd ../rc0.d
    [
    root rc0.d]# ln -s ../init.d/tomcat K09tomcat
    [root rc0.d]# cd ../rc6.d
    [root rc6.d]# ln -s ../init.d/tomcat K09tomcat
     
  5. Apache2との連携
    Apache2とTomcat5.5を連携します。
    まずは、以下の通り、connectorをmakeします。
    [root src]# tar zxvf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
    [root src]# cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2
    [
    root native2]# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
    [root native2]# make
    [root native2]# cd ../build/jk2/apache2/
    [
    root apache2]# cp -p mod_jk2.so /usr/local/apache2/modules/.

    次に、apacheでのconnector設定をします。
    /usr/local/apache2/conf/httpd.confに以下の1行を追加します。
    LoadModule jk2_module modules/mod_jk2.so <--この1行を追加します。
    次に、mod_jk2の設定ファイルをコピーします。
    [root conf]# cp /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf/workers2.properties /usr/local/apache2/conf/.
    このworkers2.propertiesファイルの中で指定されている[uri:〜]がapacheとyomcatを連携の定義で、Apacheが〜というURLを受け取ると、それをTomcatへ受け渡します。
    Tomcatが引き継いだ後に、何処のディレクトリにマッピングされるかは、server.xmlで決定されます。

    今回、TomcatのサーブレットサンプルをApache経由で起動してみます。
    Tomcatのサーブレットの1つにHellowWorld「http://www.ryouto.jp:8080/servlets-examples/servlet/HelloWorldExample」がありますが、これをapache経由で起動します。
    http://www.ryouto.jp/TestServlet/Helloと入力する事で、HelloWorldExampleのサーブレットへ繋がるようにします。
    ちなみにHelloWorldExampleは"{tomcatインストールディレクトリ}/webapps/servlets-examples/WEB-INF"に存在します。

    まず、/usr/local/apache2/conf/workers2.propertiesを編集します。
    以下の例ではapacheが/TestServletから始まるURLを受け取るとtomcatへリクエストを引継ぎます。
    [uri:/TestServlet/*]
    上記以外の[uri:/〜]の設定は不要なので、削除してかまいません。
    次に、/usr/local/tomcat/conf/server.xmlを編集します。(ファイルの必要箇所のみ抜粋しています。)
        以下の内容は、Tomcat単体で使うならば必要ですが、Apacheと連携してのみ使う場合は不要と考え、コメントアウトします。
        今回の連携確認では、不要な処理です、コメントアウトしなくても一向にかまいません。

            <!--
            <Connector port="8080"
                    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                    enableLookups="false" redirectPort="8443" acceptCount="100"
                    debug="0" connectionTimeout="20000"
                    disableUploadTimeout="true" />
            -->
    (省略)
           
    以下の内容は、tomcatと、apacheを連携する為に必要です。既にかかれていると思うので確認だけしましょう。
            <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
            <Connector port="8009"
                    enableLookups="false" redirectPort="8443" debug="0"
                    protocol="AJP/1.3" />
    (省略)
           <Host name="localhost" appBase="webapps"
              unpackWARs="true" autoDeploy="true"
               xmlValidation="false" xmlNamespaceAware="false">
    (省略)
           
           
    ここからが本題です。
            workers2.propertiesの設定により/TestServletで始まるURLはApacheよりTomcatへ引き継がれます。
            ここでは、引き受けたURLを何処のディレクトリにマッピングさせるかを決定します。
            pathがapacheより引き受けるURLであり、docBaseでマッピング先ディレクトリを指定します。
            docBaseは{tomcatインストールディレクトリ}/webapps/からの相対パスです。絶対パスでの指定も可能。
            <Context path="/TestServlet" docBase="servlets-examples" debug="0" reloadable="true" crossContext="true"/>
           <Contextは<Host>の中に記述する必要が有る為、<Host>タグの最終行に記述しておいて下さい。>
         </Host>

    次に、/usr/local/tomcat/webapps/servlets-examples/WEB-INF/web.xmlを編集します。(既存のファイルは情報が多いので、シンプルな形のweb.xmlを記載します。必要なのはこれくらいです。web.xmlを以下の内容で置き換えれば動作します。)
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
            PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
            "http://java.sun.com/dtd/web-app_2_3.dtd">

    <web-app>
        <servlet>
            <servlet-name>
    NameABC</servlet-name>            →ファイル内で使用するサーブレット名称(この例の様に適当な名前でもよいですが、servlet-classと同一にしておいた方が分かり易いです。)。 <servlet-mapping>から参照されます。
            <servlet-class>HelloWorldExample</servlet-class>  
    → 起動するサーブレットのクラス(/usr/local/tomcat/webapps/servlets-examples/WEB-INF/classes参照)
        </servlet>

        <servlet-mapping>
            <servlet-name>
    NameABC</servlet-name> → url-patternに一致した場合に起動するサーブレットの名称(先の<servlet>内のいずれかのservlet-nameを指定する。)
            <url-pattern>/Hello</url-pattern> →
    server.xmlの<Context>のpathで指定した"/TestServlet"以降のURL部を記述。つまり、この例ではhttp://www.ryouto.jp/TestServlet/HelloとURLが入力された場合に一致します。
        </servlet-mapping>
    </web-app>


    ファイルの修正が終わったら、tomcat、apacheの順で起動します。
    http://www.ryouto.jp/TestServlet/Helloへアクセスすることで、HelloWorldExampleが起動するはずです。

    以上で、おしまいです。


Copyright (C)2006 ryouto.jp. All Rights Reserved.