立ち上げることになりました。
ついでに、ApacheやJavaもバージョンを分けることに。
一緒でいいじゃん、って思うんですが、アプリ側の動作検証が絡んでいるようで・・・
頭では、インストール先を分けて、待ちうけポートも分けてやればできるかな、
的にしか思っていないので、実際に「出来るのか???」を
検証しながら書き連ねていきます。
なお、検証途中なので、見ている最中に修正とか入るかもしれませんw
- 本番環境はRHEL4.2なんですが、とりあえず検証ではCentOS 4.4を使用します。
- ベースは以下のパッケージがインストール済みの環境とします。
- CentOS 4.4
- Apache 2.0.55
- tomcat 5.028
- Java 1.4.2
- ApacheとTomcatはmod_jkを利用して連携します。インストール方法はググるといっぱい出てくるので割愛。
- では、これから本番。まずはJDK(最新版)のインストール。(と、その前に既存のApacheとTomcatを停止しておきます。)
http://java.sun.com/j2se/1.5.0/ja/download.htmlから最新版をダウンロードします。
#chmod +x jdk-1_5_0_16-linux-i586-rpm.bin
# ./jdk-1_5_0_16-linux-i586-rpm.bin
...<省略>...
Do you agree to the above license terms? [yes or no]
yes
Unpacking...
Checksumming...
0
0
Extracting...
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
inflating: jdk-1_5_0_16-linux-i586.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Done.
入りました。
# cd /usr/java
# ls
j2sdk1.4.2_18 jdk1.5.0_16
しっかり2つ入っています。後はこれをJAVA_HOMEとPATH環境変数で切り替えるだけです。 - Tomcat 5.5(最新版)のインストール
java 1.5(最新版)を入れたので、Tomcat 5.5(最新版)を導入します。当然、今回の主旨である、複数バージョンを立ち上げるのが前提条件なので、古いTomcatは削除しません。
まずはTomcatホームページからapache-tomcat-5.5.27.tar.gzをDownload。
# tar -xzf apache-tomcat-5.5.27.tar.gz
バイナリ版なので、makeとか要りません。そのまま解凍されたフォルダをコピー。/optに入れます。
# mv -f apache-tomcat-5.5.27 /opt/tomcat5.5
# cd /opt/
# ls -l
合計 8
drwxr-xr-x 11 tomcat tomcat 4096 11月 25 20:47 tomcat5.0
drwxr-xr-x 11 root root 4096 11月 26 00:32 tomcat5.5
とりあえず、ディレクトリを分けた。
次はセキュリティ対策の為の専用ユーザ設定。
# useradd -d /opt/tomcat5.5 -s /sbin/nologin tomcat55
# chown -R tomcat55. /opt/tomcat5.5
# ls -l
合計 8
drwxr-xr-x 11 tomcat tomcat 4096 11月 25 20:47 tomcat5.0
drwxr-xr-x 11 tomcat55 tomcat55 4096 11月 26 00:36 tomcat5.5
これでtomcatのインストールは終わり。 - Tomcatの起動ファイルをわける。
Tomcat(旧)は既にApache Commons Daemonでデーモン化しています。
同じ方法でTomcat(新)についてもデーモン化します。
Commons-DaemonファイルをTomcat(新)を入れたフォルダから抜き出します。
・・・、とその前に、JAVA_HOMEとPATHをJDK 1.5側に切り替えます。
# export JAVA_HOME=/usr/java/jdk1.5.0_16/
# export PATH=$JAVA_HOME/bin:$PATH
では改めて。
# cd /opt/tomcat5.5/bin
# cp -p jsvc.tar.gz /tmp
# cd /tmp
# tar -xzf jsvc.tar.gz
# cd jsvc-src/
# autoconf
# sh configure
...<省略>...
Now you can issue "make"
# make
...<省略>...
# chown tomcat55. jsvc
# mv -f jsvc /opt/tomcat5.5/bin
起動スクリプトを/etc/rc.d/init.d/にコピーしてあげます。ただし、ファイル名はTomcat(旧)と被らないように注意。
# cd /tmp/jsvc-src/native/
# cp -p Tomcat5.sh /etc/rc.d/init.d/jsvc-tomcat55
# chmod +x /etc/rc.d/init.d/jsvc-tomcat5
コピーして実行権を与えたら、viエディタで開いて、以下のように修正します。
# vi /etc/rc.d/init.d/jsvc-tomcat55
#!/bin/sh
# chkconfig: - 80 20
# description: jsvc-tomcat55
# Adapt the following lines to your configuration
JAVA_HOME=/usr/java/jdk1.5.0_16
CATALINA_HOME=/opt/tomcat5.5
DAEMON=$CATALINA_HOME/bin/jsvc
TOMCAT_USER=tomcat55
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/jsvc2.pid
CATALINA_BASE=/opt/tomcat5.5
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
case "$1" in
start)
#
# Start Tomcat
#
$DAEMON \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
exit $?
;;
stop)
#
# Stop Tomcat
#
$DAEMON \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
exit $?
;;
*)
echo "Usage tomcat.sh start/stop"
exit 1;;
esac - 起動ファイルの準備ができても、まだ起動してはいけません。今度は、Tomcat(新)側のserver.xmlの内容を書き換えてあげます。
# cd /opt/tomcat5.5/conf
# vi server.xml
<server port="8005" shutdown="SHUTDOWN">
→"8005"を空いているTCP Port番号に変更(試しに"9005"にします)
<!-- Define the Tomcat Stand-Alone Service -->
<service name="Catalina">
→念のため、ここを"Catalina"から"Catalina2"に変えます。
<!-- <connector port="8080" maxhttpheadersize="8192" maxthreads="150" minsparethreads="25" maxsparethreads="75" enablelookups="false" redirectport="8443" acceptcount="100" connectiontimeout="20000" disableuploadtimeout="true"> -->
→上記のように8080のConnection portは全体をコメントアウトします。
<!-- Define an AJP 1.3 Connector on port 8009 -->
<connector port="8009" enablelookups="false" redirectport="8443" protocol="AJP/1.3">
→AJPポートは"8009"から"9009"に変更します。redirectPortはSSL通信するならそちらのポートへ。
<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaulthost="localhost">
→Engine nameを"Catalina"から"Catalina2"へ、また、"localhost"の後のスペースに続いて、 jvmRoute="tomcat2"を追加します。 - 次にworkers.propertiesを編集します。
# cd /etc/httpd/conf
# vi workers.properties
↓の2箇所はコメントアウト。
# workers.tomcat_home=/var/tomcat3
# workers.java_home=/opt/IBMJava2-13
worker.list=tomcat1, tomcat2, jkstatus
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.jkstatus.type=status
worker.tomcat1.lbfactor=1
worker.tomcat2.lbfactor=1 - 次にhttpd.confをいじる。
LoadModule jk_module modules/mod_jk.so
<ifmodule>
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkMount /servlets-examples/* tomcat1
JkMount /jsp-examples/* tomcat2
JkMount /jkstatus jkstatus
JkMount /tomcat1/* tomcat1
JkMount /tomcat2/* tomcat2
</ifmodule>
今回は/jsp-examples/*ならtomcat2(新)へ、/servlets-examples/*ならtomcat1(古)へ行くようにします。
また、バージョン確認を分かりやすくするため、本来、webapps/ROOTにあるindex.jspと画像ファイルを、webapps/tomcat1/、webapps/tomcat2にそれぞれコピーします。
# cd /opt/tomcat5.0/webapps
# cp -rp ROOT tomcat1
# cd /opt/tomcat5.5/webapps
# cp -rp ROOT tomcat2 - 起動テスト。
# ./jsvc start
# ./jsvc-tomcat55 start
# ps -eaf | grep jsvc
root 14050 14001 0 01:02 pts/2 00:00:00 vim jsvc
root 14071 1 0 01:26 ? 00:00:00 jsvc.exec -user tomcat -home /usr/java/j2sdk1.4.2_18 -Dcatalina.home=/opt/tomcat5.0 -Djava.io.tmpdir=/tmp -outfile /opt/tomcat5.0/logs/catalina.out -errfile &1 -cp /usr/java/j2sdk1.4.2_18/lib/tools.jar:/opt/tomcat5.0/bin/commons-daemon.jar:/opt/tomcat5.0/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
tomcat 14072 14071 27 01:26 ? 00:00:10 jsvc.exec -user tomcat -home /usr/java/j2sdk1.4.2_18 -Dcatalina.home=/opt/tomcat5.0 -Djava.io.tmpdir=/tmp -outfile /opt/tomcat5.0/logs/catalina.out -errfile &1 -cp /usr/java/j2sdk1.4.2_18/lib/tools.jar:/opt/tomcat5.0/bin/commons-daemon.jar:/opt/tomcat5.0/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
root 14092 1 0 01:26 ? 00:00:00 jsvc.exec -user tomcat55 -home /usr/java/jdk1.5.0_16 -Dcatalina.home=/opt/tomcat5.5 -Dcatalina.base=/opt/tomcat5.5 -Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/jsvc2.pid -outfile /opt/tomcat5.5/logs/catalina.out -errfile &1 -cp /usr/java/jdk1.5.0_16/lib/tools.jar:/opt/tomcat5.5/bin/commons-daemon.jar:/opt/tomcat5.5/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
tomcat55 14093 14092 41 01:26 ? 00:00:07 jsvc.exec -user tomcat55 -home /usr/java/jdk1.5.0_16 -Dcatalina.home=/opt/tomcat5.5 -Dcatalina.base=/opt/tomcat5.5 -Djava.io.tmpdir=/var/tmp -wait 10 -pidfile /var/run/jsvc2.pid -outfile /opt/tomcat5.5/logs/catalina.out -errfile &1 -cp /usr/java/jdk1.5.0_16/lib/tools.jar:/opt/tomcat5.5/bin/commons-daemon.jar:/opt/tomcat5.5/bin/bootstrap.jar org.apache.catalina.startup.Bootstrap
root 14108 13189 0 01:26 pts/1 00:00:00 grep jsvc
見事に2つ起動しています。
で、httpdを起動。
# ./httpd start
httpd を起動中: [ OK ] - さぁ、http://localhost/tomcat1/、http://localhost/tomcat2/
などにアクセスして試してみましょう!(テスト中w)
0 件のコメント:
コメントを投稿