2008/9/1 月曜日

tomcat6 Linux インストール方法 3

Filed under: 未分類 — admin @ 19:39:26

Tomcatでは、サーブレットをどこに配置すればいいのか?

それでは一通り設定が終わったところで、まずは簡単なサーブレットを作成して動作を確認してみましょう。まずは、Tomcatのドキュメントルートのディレクトリへ移動します。

cd /opt/tomcat6/webapps/ROOT/

ドキュメントルート以下には、classファイルやweb.xmlなどの外から直接アクセスさせないデータを格納しているWEB-INFディレクトリが存在しているので、WEB-INFディレクトリへと移動します。

cd WEB-INF

ディレクトリを移動してファイルを見てみると、サーブレットなどのクラスファイルを保存するためのディレクトリが存在せず、「web.xml」しか存在しないことが分かります。

「HelloWorld!」のコードを作成する前に、クラスファイルを格納するための「classes」ディレクトリを作成します。

mkdir classes

これでサーブレットを作成する準備が整いました。「classes」ディレクトリ配下に移動します。

cd classes

サンプルファイルの作成

エディタを用いて「HelloWorld.java」を作成します。

vi HelloWorld.java

ファイルの中身は以下のように記述します。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest request
,HttpServletResponse response)
throws IOException, ServletException{

response.setContentType(”text/html”);
PrintWriter out = response.getWriter();
out.println(”<html>”);
out.println(”<head>”);
out.println(”<title>Hello World!</title>”);
out.println(”</head>”);
out.println(”<body>”);
out.println(”<h1>Hello World!</h1>”);
out.println(”</body>”);
out.println(”</html>”);
}
}

サンプルファイルをコンパイルしよう

サーブレットを作成したら、コンパイルを行います。コンパイル時には必ずclasspathの指定を忘れないようにしてください。

javac -classpath /opt/tomcat6/lib/servlet-api.jar HelloWorld.java

これで一通り準備は完了しました。

web.xmlにサーブレットを登録

しかし、サーブレットを作成したとはいえ、この状態のままページへアクセスしてもHelloWolrdの実行結果は表示されません。「web.xml」への登録が必要です。

/opt/tomcat6/webapps/ROOT/WEB-INFの配下にあった「web.xml」をエディタで開きます。

vi /opt/tomcat6/webapps/ROOT/WEB-INF/web.xml

ファイル内部に書かれている<web-apps>と</web-apps>のタグの間へ次の行を追加します。

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

これで初めてサーブレットとしてURLから呼び出すことができるようになります。

表示をして確認

次のような画面が表示されれば、「Hello World!」サンプルの作成を通した設定確認は完了です。

図4 「Hello World!」を表示
図4 「Hello World!」を表示

ソースFrom

http://www.atmarkit.co.jp/fjava/rensai4/safetomcat_01/safetomcat_01_2.html

tomcat6 Linux インストール方法 2

Filed under: 未分類 — admin @ 19:38:56

Tomcatを自動的に起動するには?

手動での起動は管理しづらいから

インストールしたままのTomcatには、起動用のスクリプトなどは用意されておらず、このままでは毎回手動で起動しなくてはなりません。毎回手動で起動するのは、担当者により気分でオプションが変わったり、コマンドを間違えたりする可能性も考えられ、管理も煩雑になります。

そこで、Tomcatを起動するための専用スクリプトを作成しましょう。

Apache Commons DaemonでTomcatをデーモン化

その前に、プロセスの管理を容易にするために、Apacheのトップレベルプロジェクトの1つのCommonsプロジェクトに含まれているDaemonコンポーネントを利用して、Tomcatをデーモン(自動プロセス)化します。

注意!

Commons-DaemonプロジェクトのファイルはインストールしたTomcatの配下にある「/bin」ディレクトリ内に「jsvc.tar.gz」として格納されています。

まず、このファイルを一時的に/tmpなどの一時ディレクトリへ移動します。

mv -f /opt/tomcat6/bin/jsvc.tar.gz /tmp/

ファイルを移動したら先ほどの一時ディレクトリへ移動してファイルを解凍します。

cd /tmp
tar -xzf jsvc.tar.gz

ファイルを解凍すると、「jsvc-src」というディレクトリが作成されます。その「jsvc-src」のディレクトリへ移動します。

cd jsvc-src

ディレクトリを移動したらautoconfを利用してconfigureスクリプトを作成します。

autoconf

configureスクリプトを作成したら、configureスクリプトを実行します。

sh configure

configureが完了したら、ビルドに取り掛かります。

make

ビルド後には「jsvc」というファイルが作成されます。作成されたjsvcの所有権をtomcatへと変更し、tomcatのインストールされているディレクトリ以下のbinディレクトリへと移動します。

chown tomcat. jsvc
mv -f jsvc /opt/tomcat6/bin

後は、ビルドに利用したディレクトリとファイルを削除して、ビルドは完了です。

rm -rf /tmp/jsvc-src/ /tmp/jsvc.tar.gz

これで、Tomcatをデーモン化して動作させることができるようになりました。

自動起動させるためのスクリプトを作成

それでは、今度は自動起動させるためのスクリプトを作成します。エディタを用いて「/etc/rc.d/init.d/」以下にjsvcという名前の起動スクリプトを作成します。

vi /etc/rc.d/init.d/jsvc

スクリプトの中身は以下のとおりです。

#!/bin/sh
#
# chkconfig: - 80 20
# description: jsvc

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

JAVA_HOME=/usr/java/jdk1.5.0_12
CATALINA_HOME=/opt/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/run/tomcat.pid
LOCKFILE=/var/lock/subsys/tomcat
DAEMON=$CATALINA_HOME/bin/jsvc

start(){
 #
# Start Tomcat
#

echo -n “Starting jsvc: ”
$DAEMON \
-pidfile $PIDFILE \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-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 \

RETVAL=$?
if [ $RETVAL = 0 ]; then
echo_success
touch $LOCKFILE
else
echo_failure
fi
echo
}

stop(){
 #
# Stop Tomcat
#

echo -n “Shutting down jsvc: ”
$DAEMON \
-stop \
-pidfile $PIDFILE \
org.apache.catalina.startup.Bootstrap
RETVAL=$?
if [ $RETVAL = 0 ]; then
echo_success
rm -f $PIDFILE $LOCKFILE
else
echo_failure
fi
echo
}

case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $DAEMON
RETVAL=$?
;;
*)
echo $”Usage: jsvc {start|stop|restart|status}”
exit 1
;;
esac

注意!

スクリプトの作成が終わったら、ファイルに実行権限を与えます。

chmod +x /etc/init.d/jsvc

スクリプトに実行権限を与えたら、最後にchkconfigを実行して起動時のON/OFF設定を行って終了です。

chkconfig jsvc on

以上で、Tomcatの自動実行の設定が完了しました。これで、サーバを再起動したときに自動的にTomcatが起動するようになります。

TomcatとApacheを連携させるmod_proxy_ajp

8080番ポートと80番ポートの謎

Tomcat には、簡易Webサーバとしての機能も有しているため、デフォルトの状態では8080番ポートを利用して通常のHTMLページを含んださまざまなWeb ページの表示ができます。しかし、インターネットを利用していてもWebページ閲覧中に8080番ポートへと転送されるようなケースには巡り合うことはあ りません。

ということは、Tomcatを80番ポートに変更してサーバを運用しているのでしょうか? 恐らくほとんどどのケースはこれに当てはまりません。

TomcatのWebサーバ機能は簡易機能しか有しておらず、専用のWebサーバに比べると機能やパフォーマンスの面で劣ります。それでは、どのようにして80番ポートだけでWebサーバとTomcatの両方を利用しているのでしょうか?

TomcatとWebサーバを連携させて解決

Tomcatは、ほかのWebサーバと連携する機能が充実しているため、Webサーバと連携させて利用できるようになっています。この連携の仕組みを利用することでWebページの表示パフォーマンスの改善やさまざまな制御を行っているのです。

特に、WebサーバのApacheとは同じ団体が管理していることもあり親和性に優れています。バージョンによって異なるいくつかの連携の方法がありますが、今回は「CentOS 5.0」をOSとして利用しているため、最新のApache 2.2系列での連携方法を取り上げます。

いままでのApache 2.0系列やApache 1.3系列では、Tomcatとの連携にmod_jkと呼ばれるコネクタモジュールを必要としていました。Apache 2.2系列では、いままでのバージョンとは異なり、Apacheの基本コンポーネントとして連携用の機能を備えているため、モジュールを追加する必要がなくなりました。

編集部注Apache 2.2について詳しく知りたい読者は、Linux Square の記事「Apache 2.2でWebサイトをパフォーマンスアップ!Apache 2.0については、同じく「Apache 2.0の新機能とその実力」をご参照ください。

mod_proxy_ajpを利用するには?

通常、TomcatとApacheの通信は“AJPコネクタ”という機能を利用して実現しています。Apache 2.2系列では、mod_proxy_ajpと呼ばれるモジュールを利用することで簡単にTomcatとの連携を実現しています。

Apacheの設定ファイル(httpd.confなど)において以下の2つのモジュールを読み込ませることでこの機能を利用できるようになります。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

CentOS 5.0では、初期状態でこれらの設定ファイルは読み込まれるようになっているので、特に変更の必要はありません。

それでは、実際に「/tomcat」というディレクトリにアクセスする場合と通常のTomcatのトップページへアクセスする場合と同じ設定を行ってみましょう。

そのためには、エディタを用いてApacheの設定ファイル(httpd.confなど)へ以下の行を追加します。

ProxyPass /tomcat/ ajp://localhost:8009/

CentOS 5.0では、ajpの設定は専用のファイル「/etc/httpd/conf.d/proxy_ajp.conf」が存在しているので、このファイルにまとめて書くのが好ましいでしょう。

vi /etc/httpd/conf.d/proxy_ajp.conf

注意!

この設定を行いApacheの再起動を行えば、以下のようなページへのアクセスが可能となります。

図3 Tomcatのサンプルページ
図3 Tomcatのサンプルページ

以上で、ApacheとTomcatの連携設定は完了です。いよいよ次ページではセットアップした環境でサーブレット/JSPを表示させます。

tomcat6 Linux インストール方法

Filed under: 未分類 — admin @ 19:37:15

Tomcat 6.x系のダウンロード

Tomcatをインストールするためには、まず、Apache Software FoundationのホームページからTomcatの専用ページを開きます。

Tomcatのページにはいくつかのメニューがありますが、今回利用するのはTomcatの最新版である「Tomcat 6.x」の系列です。

左のサイドメニューから「Download 」の中にある「 Tomcat 6.x 」のページを開きます。

図2 Tomcatのダウンロードページ
図2 Tomcatのダウンロードページ

画面の下方にある「6.0.x」(本稿執筆時は「6.0.14」が最新版となります)からコンポーネントを選択してダウンロードします。

「Binary Distributions」には「Core」と「Deployer」がありますが、今回はWebアプリケーションの動的配置は考えていませんので、「Core」コンポーネントのみをダウンロードし、インストールします。

今回はLinux上でのインストールとなるためLinuxの一般的なアーカイブ方式の「tar.gz」のリンク先のファイルをダウンロードします。「tar.gz」のリンク先をメモしておいてください。

サーバ上でメモしたURLからwgetコマンドでファイルをダウンロードします。

wget http://www.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-6/
v6.0.14/bin/apache-tomcat-6.0.14.tar.gz

Tomcat 6.x系をインストール

それでは、tarコマンドで下記のようにダウンロードしたtar.gz形式のファイルを解凍しましょう。

tar -xzf apache-tomcat-6.0.14.tar.gz

tar.gzのアーカイブを解凍すると、その場にディレクトリが作成されます。今回の場合バイナリのパッケージを利用しているためにTomcat自体をビルドする必要はありません。

解凍の終わったTomcatのディレクトリはアプリケーションを格納するためのディレクトリへと移動します。

通常アプリケーションは「/usr」ディレクトリ以下にインストールしたいところですが、RPMで管理されたパッケージではなく追加の独自コンポーネントですので、「/opt」以下に移動します。

編集部注RPMについて詳しく知りたい読者は、Linux Tips の[インストール/RPM]をご参照ください。

ここでは、分かりやすくするためにディレクトリ名を「tomcat6」へ改名します。

mv -f apache-tomcat-6.0.14 /opt/tomcat6

“攻撃”されないためのセットアップ時の注意

移動が完了してもインストールは完了ではありません。TomcatやApache(Webサーバ)のような公開サービスのプロセスは攻撃者に攻撃されるケースがよくあります。

編集部注Apache(Webサーバ)やそのセットアップについて詳しく知りたい読者は、Linux Square の連載「ApacheによるWebサーバ構築」をご参照ください。

公開サービスが乗っ取られたときに不用意に権限を与えて情報を漏らさぬように専用ユーザーを用意して起動することがセキュリティ上望ましいといえます。

実際、CentOS 5.0ではApacheのデフォルトの起動ユーザーは「Apache」となるように設定されています。ここでは、Apacheと同様にTomcatを起動するための専用ユーザー「tomcat」を作成して管理はそのユーザーに任せるようにします。

useradd -d /opt/tomcat6 -s /sbin/nologin tomcat

そして、作成したTomcatのユーザーでアプリケーションを起動できるようTomcatのインストール先のディレクトリの所有権を変更します。

chown -R tomcat. /opt/tomcat6

HTML convert time: 0.226 sec. Powered by WordPress ME