Fedora Core 6 Tomcat+JDK1.6



前書き

JAVAによるWebアプリケーション(JSP)を動かすためにはJava アプリケーションサーバ(サーブレット)が必要になります。
またこれに合わせてJ2SE(Java 2 Platform Standard Edition)が必要です。

ここではJ2SEとTomcatのインストール、またApacheへTomcatの組み込みを行います。

J2SE(JDK)の入手とインストール

J2SEとはJavaを開発・動かす場合に必要なソフトウェア開発キット。
SUNの J2SE公式サイト より最新のSDKをダウンロードします。
インストールに便利なRPMパッケージを選択するといいでしょう。
ここでは執筆時の最新J2SE(TM) Development Kit 6.0 Update 1を選択してます。

使用許諾の関係があるのでブラウザ上で使用許諾を了解してダウンロードしてください。
その後、ダウンロードしたファイルをFTPなどを用いてサーバーのユーザーディレクトリなどに置きます。

実行フラグを立てます。

# chmod +x jdk-6u1-linux-i586-rpm.bin


インストールを開始します。

# ./jdk-6u1-linux-i586-rpm.bin


下記のような使用承諾が表示されます。

Sun Microsystems, Inc. Binary Code License Agreement

for the JAVA SE DEVELOPMENT KIT (JDK), VERSION 6

SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE
SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION
THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY
CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS
(COLLECTIVELY "AGREEMENT"). PLEASE READ THE AGREEMENT
CAREFULLY. BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU
ACCEPT THE TERMS OF THE AGREEMENT. INDICATE ACCEPTANCE BY
SELECTING THE "ACCEPT" BUTTON AT THE BOTTOM OF THE
AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY ALL THE
TERMS, SELECT THE "DECLINE" BUTTON AT THE BOTTOM OF THE
AGREEMENT AND THE DOWNLOAD OR INSTALL PROCESS WILL NOT
CONTINUE.
  ・
  ・
  ・
For inquiries please contact: Sun Microsystems, Inc., 4150
Network Circle, Santa  Clara, California 95054, U.S.A.

Do you agree to the above license terms? [yes or no]

使用承諾に問題なければ yes を入力します。

yes

解凍処理が行われ、インストールが開始されます。

Unpacking...
Checksumming...
Extracting...
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
  inflating: jdk-6u1-linux-i586.rpm
準備中...                ########################################### [100%]
   1:jdk                 ########################################### [100%]
Unpacking JAR files...
        rt.jar...
        jsse.jar...
        charsets.jar...
        tools.jar...
        localedata.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...

Done.


インストールが成功すると /usr/java 配下に jdk1.6.0_01 のディレクトリが作成され、 /usr/java/latest と /usr/java/default にリンクが作成されます。

# ls -la /usr/java/
.
..
default -> /usr/java/latest
jdk1.6.0_01
latest -> /usr/java/jdk1.6.0_01


環境変数の設定

JAVAを使用するユーザーの ~/.bash_profile を修正します。
インストール先は上記の方法であれば

/usr/java/jdk1.6.0_01

にインストールされています。
テキストエディタでshのプロファイルを開きます。

# vi .bash_profile

下記の2行を追加します。

export JAVA_HOME=/usr/java/jdk1.6.0_01
export PATH=$PATH:$JAVA_HOME/bin


設定した環境変数を反映させます。

# source ./.bash_profile


Tomcatのソースファイルの入手・展開

TomcatのWebサイトよりバイナリファイルを取得
ここでは執筆時の最新バージョン6.0.13を選択してます。
最新バージョンを確認して相応に置き換えてください
Tomcat公式サイト: http://tomcat.apache.org/index.html

$ wget http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-6/v6.0.13/bin/apache-tomcat-6.0.13.tar.gz

--10:38:37--  http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-6/v6.0.13/bin/apache-tomcat-6.0.13.tar.gz
ftp.kddilabs.jp をDNSに問いあわせています... 192.26.91.193, 2001:200:601:10:206:5bff:fef0:466c
ftp.kddilabs.jp|192.26.91.193|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 5965952 (5.7M) [application/x-gzip]
Saving to: `apache-tomcat-6.0.13.tar.gz'

100%[=========================================================>] 5,965,952   1.49M/s   in 4.0s

10:38:41 (1.42 MB/s) - `apache-tomcat-6.0.13.tar.gz' を保存しました [5965952/5965952]


スーパーユーザー(root)に変更し、tomcatを解凍・インストールします。

# su -
Password: XXXXXXX (パスワードを入力)
# cd /usr/local/
# tar xzf /usr/local/src/apache-tomcat-6.0.13.tar.gz


解凍後、 /usr/local/tomcat へシンボリックリンクを貼ります。

# ln -s apache-tomcat-6.0.13 /usr/local/tomcat


リスト表示で確認

# ls -la
.
..
apache-tomcat-6.0.13
tomcat -> /usr/local/apache-tomcat-6.0.13


tomcat 単体動作試験

正常にTomcatが動くか確認します。
tomcatは単体でwebサーバーの機能を持っていますので動作確認ができます。

# /usr/local/tomcat/bin/startup.sh


下記のように起動表示されます。

Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:       /usr/java/jdk1.6.0_01


ブラウザで下記のURLにアクセスします。

http://サーバーのIPアドレス:8080/


ページが表示されれば仮動作確認OKです。

ただし、ここで外部ネットワークから作業している場合、ルーターでポート8080を許可していないとアクセスできませんの注意してください。
その場合はコマンド上からテキストブラウザ(lynx)などを用いて確認するといいでしょう。

Tomcatを終了させます。

# /usr/local/tomcat/bin/shutdown.sh


下記のように起動時と同様に終了表示されます。

Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.6.0_01


Tomcat Connector(mod_jk)のインストール

Tomcat自体がWebサーバー機能を持っていますが、たいていはApacheとの連携になると思います。
Apacheと連携させるためにはmod_jkというコネクタモジュールを使用します。

Apacheの公式サイトの The Apache Jakarta Tomcat Connector から最新版をダウンロードします。執筆時点の最新版は 1.2.23 です。

$ wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.23/tomcat-connectors-1.2.23-src.tar.gz
--14:30:11--  http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.23/tomcat-connectors-1.2.23-src.tar.gz
www.apache.org をDNSに問いあわせています... 140.211.11.130
www.apache.org|140.211.11.130|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1368060 (1.3M) [application/x-gzip]
Saving to: `tomcat-connectors-1.2.23-src.tar.gz'

100%[====================================================================================>] 1,368,060    249K/s   in 5.2s

14:30:17 (257 KB/s) - `tomcat-connectors-1.2.23-src.tar.gz' を保存しました [1368060/1368060]


取得したファイルを解凍します。

$ tar xzf tomcat-connectors-1.2.23-src.tar.gz
$ cd tomcat-connectors-1.2.23-src


ビルド・インストール方法は BUILD.txt に書かれています。
一読してみるといいでしょう。
native ディレクトリに入り作業します。
下記はapache2系でコンフィグするときの方法です。

$ cd native
$ ./configure --with-apxs=/usr/local/apache2/bin/apxs


下記のように処理されます。

checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
  ・
  ・
  ・
APRINCLUDEDIR is  -I/usr/local/apache2/include -I/usr/local/apache2/include
building connector for "apache-2.0"
checking for target platform... unix
no apache given
no netscape given
configure: creating ./config.status
config.status: creating Makefile
config.status: creating apache-1.3/Makefile
config.status: creating apache-1.3/Makefile.apxs
config.status: creating apache-2.0/Makefile
config.status: creating apache-2.0/Makefile.apxs
config.status: creating common/Makefile
config.status: creating common/list.mk
config.status: creating common/jk_types.h
config.status: creating jni/Makefile
config.status: creating common/portable.h
config.status: executing depfiles commands

上記で building connector for "apache-2.0" と表示されています。
apache2系用としてコンフィグされたことが確認できます。

エラーなく正常にコンフィグが終了したらコンパイルします。

$ make

コンパイルも正常に終了したらインストールします。

$ su -c 'make install'


正常に終了すると下記のように表示されます。

----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/apache2/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_jk.so

Please be sure to arrange /usr/local/apache2/conf/httpd.conf...

※Apache2への詳しいインストール方法は 公式のインストールドキュメント を参照ください。

apache設定ファイル httpd.conf の修正

/usr/local/apache2/conf/ 配下に workers.properties を作成します。
ベースとなるファイルはソースファイルを解凍したディレクトリ下の conf/workers.properties にありますので参考にしてください。

# vi /usr/local/apache2/conf/workers.properties


以下の内容を入力します。

worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1


次に httpd.conf を修正します。

# vi /usr/local/apache2/conf/httpd.conf


以下を追記します。

LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
  JkShmFile     logs/jk.shm
  JkWorkersFile "/usr/local/apache2/conf/workers.properties"
  JkLogFile logs/mod_jk.log
  JkLogLevel warm
  JkMount /*.jsp ajp13
</IfModule>


Tomcat・Apache起動

まずTomcatを起動させます。

# /usr/local/tomcat/bin/start.sh


つぎにApacheを再起動させます。

# /etc/rc.d/init.d/httpd restart


動作確認

JSPでの Document Root は /usr/local/tomcat/webapps/ROOT/ になっています。
そのディレクトリにテスト用のファイルを設置してみます。

# vi /usr/local/tomcat/webapps/ROOT/test.jsp


以下の内容を入力します。

<html>
<head>
<title>TEST</title>
</head>
<body>

<%
out.println("Hello");
%>

</body>
</html>


ブラウザから http://ドメイン(IPアドレス)/test.jsp で表示すると

Hello


が表示されれば動作OKです。

ディレクトリとURLの関連付け

任意のディレクトリにJSPファイルを作成し表示させるためには server.xml に対してマッピングを定義する必要があります。

# vi /usr/local/tomcat/conf/server.xml


例として以下の内容を追記します。

<Context path="/jsptest"
    docBase="/home/hogehoge/jsp"
    reloadable="ture">
</Context>


これは /home/hogehoge/jsp のディレクトリに保存されているコンテンツを jsptest というアプリケーション名でアクセスするという内容になります。
実際にアクセスするURLは

http://ドメイン名(IPアドレス)/jsptest/


になります。
reloadable="true" とは、ディレクトリ内のファイルに変更が生じた際、自動で反映させるためです。

修正を加えた場合は設定を反映させるために再起動させます。
Tomcat→Apacheの順で再起動してください。

JDBCインストール

JAVA上からデータベースをコントロールする際にJDBCを使用します。
PostgreSQL用のJDBCは http://jdbc.postgresql.org/index.html から入手します。
MySQL用のJDBC(Connector/J)は http://dev.mysql.com/downloads/connector/j/5.0.html から入手します。

今回は JDK1.6 を使用しているので、PostgreSQL用 JDBC は JDBC 4 を使用します。
JDKのバージョンによって使用する JDBC のバージョンも異なりますので注意してください。

入手した jarファイルを /usr/local/tomcat/lib にコピーします。
※MySQLの場合は圧縮ファイルになっているので解凍してjarファイルをコピーします。

Tomcatの自動起動設定

セキュリティーの面でTomcatはnobodyユーザー(apacheの起動と同等のユーザー)で行ないます。
参照:LinuxのJavaサービスに対する安全性を高める

まずはnobodyユーザーで起動させるための下準備を行ないます。
Tomcatの特定のディレクトリをnobodyユーザーに変えます。

# chown -R nobody.nobody /usr/local/tomcat/webapps
# chown -R nobody.nobody /usr/local/tomcat/work
# chown -R nobody.nobody /usr/local/tomcat/logs
# chown -R nobody.nobody /usr/local/tomcat/conf

次に起動スクリプトから呼ばれるnobodyユーザーのPATH設定用のスクリプトを用意します。

#vi /usr/local/tomcat/bin/srvstart.sh
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.6.0_01
CATALINA_HOME=/usr/local/tomcat

# run the startup script from Tomcat installation
$CATALINA_HOME/bin/startup.sh
#vi /usr/local/tomcat/bin/srvstop.sh
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.6.0_01
CATALINA_HOME=/usr/local/tomcat

# run the startup script from Tomcat installation
$CATALINA_HOME/bin/shutdown.sh

これらのスクリプトに起動権限を与えます。

# chmod +x /usr/local/tomcat/bin/srvstart.sh
# chmod +x /usr/local/tomcat/bin/srvstop.sh

次に起動スクリプトを作成します。

# vi /etc/rc.d/init.d/tomcat
#
# Startup script for the Apache Tomcat
#
# chkconfig: 345 80 15
# description: Apache Tomcat is the Web container for Java Servlet & JSP.

CATALINA_HOME=/usr/local/tomcat

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

[ -f $CATALINA_HOME/bin/srvstart.sh ] || exit 0
[ -f $CATALINA_HOME/bin/srvstop.sh ] || exit 0

RETVAL=0

start() {
    echo -n "Starting tomcat: "
    daemon --user "nobody" "$CATALINA_HOME/bin/srvstart.sh"
    echo
    return $RETVAL
}
stop() {
    echo -n "Stopping tomcat:"
    daemon --user nobody $CATALINA_HOME/bin/srvstop.sh
    echo
    return $RETVAL
}
restart() {
    stop
    sleep 2
    start
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart|reload)
    restart
    ;;
*)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit $?

同様に実行権限を与えます。

# chmod +x /etc/rc.d/init.d/tomcat

自動起動サービスに登録します。

# chkconfig --add tomcat
# chkconfig --list tomcat
httpd 0:オフ 1:オフ 2:オフ 3:オン 4:オン 5:オン 6:オフ
# chkconfig tomcat on

最後にtomcatが起動されていないことを確認し、tomcatを実行します。

# /etc/rc.d/init.d/tomcat start




Last-modified: 2015-04-23 (木) 15:24:00 (946d)