tomcatのアプリを移行

なんだかみんなから忘れられていて移行作業リストから抜けていたアプリがありました。tomcat4で動作しているなんでもない検索システム。
しょうがないので、自力で移行。まぁなんとかなるだろうってやっちゃうから全部自分がひっかぶっちゃうんだよ。

jdkをインストール

yumjdkをインストール。yum list | grep jdk ってやると1.6と1.7があるみたい。

# yum list | grep jdk
Unable to read consumer identity
java-1.6.0-openjdk.x86_64            1:1.6.0.0-1.48.1.11.3.el6_2
java-1.7.0-openjdk.x86_64            1:1.7.0.9-2.3.3.el6_3.1
java-1.7.0-openjdk-devel.x86_64      1:1.7.0.9-2.3.3.el6_3.1
java-1.6.0-openjdk.x86_64            1:1.6.0.0-1.50.1.11.5.el6_3
java-1.6.0-openjdk-devel.x86_64      1:1.6.0.0-1.50.1.11.5.el6_3
java-1.6.0-openjdk-javadoc.x86_64    1:1.6.0.0-1.50.1.11.5.el6_3
ldapjdk.x86_64                       4.18-6.el6            rhel-x86_64

ソフトウェアパッケージと畳は新しい方がいいらしいので1,7をインストール。

# yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64

tomcatをインストール

これもyum listで探してみる。なんかいっぱい出てくるな。

# yum list | grep tomcat
Unable to read consumer identity
jakarta-commons-dbcp-tomcat5.noarch  1.2.1-13.8.el6        @rhel-x86_64-server-6
jakarta-commons-pool-tomcat5.x86_64  1.3-12.7.el6          @rhel-x86_64-server-6
tomcat6.noarch                       6.0.24-45.el6         @rhel-x86_64-server-6
tomcat6-el-2.1-api.noarch            6.0.24-45.el6         @rhel-x86_64-server-6
tomcat6-jsp-2.1-api.noarch           6.0.24-45.el6         @rhel-x86_64-server-6
tomcat6-lib.noarch                   6.0.24-45.el6         @rhel-x86_64-server-6
tomcat6-servlet-2.5-api.noarch       6.0.24-45.el6         @rhel-x86_64-server-6
apache-tomcat-apis.noarch            0.1-1.el6             rhel-x86_64-server-6 
tomcatjss.noarch                     2.1.0-2.el6           rhel-x86_64-server-6

よくわからんが適当にインストール。たくさん入れとく分にはわるくないだろう。

# yum instal \
jakarta-commons-dbcp-tomcat5.noarch 0:1.2.1-13.8.el6 \
jakarta-commons-pool-tomcat5.x86_64 0:1.3-12.7.el6  \
tomcat6.noarch 0:6.0.24-45.el6  \
tomcat6-el-2.1-api.noarch 0:6.0.24-45.el6 \
tomcat6-jsp-2.1-api.noarch 0:6.0.24-45.el6 \
tomcat6-lib.noarch 0:6.0.24-45.el6 \
tomcat6-servlet-2.5-api.noarch 0:6.0.24-45.el6 \

dependencyで70個以上のパッケージが入ったよ。tomcat自体は/usr/shaer/tomcat6に入りました。

Oraclejdbcドライバをインストール

なんだかOracleにもアタッチするらしい。jdbcをインストール。ここにものがあるのでダウンロード。jdk1.6用って書いてあるけど、大丈夫だろう。
展開したojdbc6.jarを/usr/share/javaにコピーして、/usr/share/java/tomcat6へリンクする。

アプリ自体をコピー

元の環境のwebapp以下を新しい環境の$CATALINA/webapps以下へコピー。

tomcatのlistenポート調整

デフォルトでtomcatがlistenするTCP/8080はすでに使われているので9090へ変更。 
conf/server.xmlを編集します。

<Connector port="9090" protocol="HTTP/1.1"
          connectionTimeout="20000" redirectPort="8443" />

invokerを有効化

tomcat6はデフォルトでinvokerが無効になっているのでこれを有効化する。
ところでinvokerってなに?
知らなくてもアプリ移行はできるよ!
編集するファイルは二つ。conf/web.xmlとconf/context.xml

conf/web.xmlinvokerが二ヶ所コメントアウトされているのでこれを外す。
conf/context.xmlのところをに変える。

アプリの情報を変更

アプリケーションの配置場所が変わったので、その情報を持っていると思われるファイルを編集。今回移行したアプリでは webapps/hogehoge/WEB-INF/classes/hogehoge/common/util/hogehoge.propertiesってところに情報がありました。
こうやって探しましたよ。

# find . -type f -exec fgrep 'なにか特定できる文字列' {} /dev/null \;

このアプリの場合はログファイルの場所、セッションを保存するファイルの場所、jdbcへ渡す接続情報などなどがここにかかれていました。

tomcatを再起動

# /etc/init.d/tomcat6 start

自動起動の設定

ついでにsetupツールで自動起動も設定。yumとかCPANになれるともう戻れない。