CentOS5にTOMCAT7のインストール|

JDKTOMCATは一緒に書きたかったけど、JDKのインストールで躓いたので、
別々に書きます。
まずTOMCATを以下のURLからダウンロードしてきます。
[:title]
TOMCATの最新バージョンは、"7.0.20"です。(2011年8月19日現在)
以下のコマンドでも、ダウロードできます。(バージョンがあがるとリンクがなくなります)


# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-7/v7.0.20/bin/apache-tomcat-7.0.20.tar.gz
ダウロードしたファイルを解凍し、"/usr/local/tomcat"に解凍したファイルを移動します。

# tar zxvf apache-tomcat-7.0.20.tar.gz
# mkdir /usr/local/tomcat
# mv apache-tomcat-7.0.20/ /usr/local/tomcat
JavaTOMCATのファイルのライブラリ読み込み用ファイルを作成します。
"/etc/profile.d/"は、使用しているシェルに応じて自動的にこのディレクトリ内のスクリプトを実行してくれるみたいです。

# vi /etc/profile.d/tomcat.sh
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib
TOMCATの起動用スクリプトを作成します。

# vi /etc/init.d/tomcat 
#!/bin/bash
#
# Startup script for the tomcat
#
# chkconfig: 345 80 15
# description: Tomcat is a Servlet+JSP Engine.

# Source function library.
. /etc/rc.d/init.d/functions
source /etc/profile.d/tomcat.sh

start(){
if [ -z $(/sbin/pidof java) ]; then
echo "Starting tomcat"
/usr/local/tomcat/bin/startup.sh
touch /var/lock/subsys/tomcat
else
echo "tomcat allready running"
fi
}

stop(){
if [ ! -z $(/sbin/pidof java) ]; then
echo "Shutting down tomcat"
/usr/local/tomcat/bin/shutdown.sh
until [ -z $(/sbin/pidof java) ]; do :; done
rm -f /var/lock/subsys/tomcat
else
echo "tomcat not running"
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
/usr/local/tomcat/bin/catalina.sh version
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
esac

exit 0

スクリプト書けないので、書いてあるものを参考にしました。
if文やcase文の締めは、単語を逆から書くみたいですね。
関数もこんなふうに書くのか。引数をどう宣言するかも書いてあります。
書いてあるものを参考に、ある程度目に焼き付けておこ。
調べててわかったことがあって、「○シェルがいい」とかよくわからなかったけど、〜.cshで書いたのがシーシェルで記述したスクリプトってことみたいですね〜。

# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
ログインシェルを切り替えるコマンドあるところを見ると、↑の解釈間違いか。(参考サイト③)
Linuxの基礎なんだろうけど、いまいちわからない。誰か詳しく教えて〜。
実践して体感するしかないか。暇なとき"zch"でもいれてみよ。
まぁこれは置いといて次いこ。
次に起動スクリプトに実行権限を付加し、起動させます。

# chmod +x /etc/init.d/tomcat
# /etc/init.d/tomcat start
Starting tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/default
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
サービス制御スクリプトへのシンボリックリンクを追加します。
起動スクリプトの上部にある"# chkconfig: 345 80 15"が関わってきます。
最初の"345"は、ランレベルを指定します。
次の"80"は、起動時の優先順位です。数値が少ないほうが先に起動されます。
最後の"15"は、停止時の優先順位です。
ちなみに"# description: Tomcat is a Servlet+JSP Engine."は、起動スクリプトに関する説明を書きます。
おまじないだと思ってたら、結構重要なのですね〜。

# chkconfig --add tomcat
起動スクリプト自動起動するように追加します。

# chkconfig tomcat on
確認
# chkconfig --list tomcat
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
なんでランレベル2が"on"になってるんだろ〜。
ここら辺もまだまだ勉強不足です。
TOMCATの起動を確認しましょう。
以下のURLをブラウザーに打ち込みましょう。(サーバー名は、ドメイン名またはIPアドレス

http://サーバー名:8080/
http://サーバー名:8080/examples/servlets/
http://サーバー名:8080/examples/jsp/
外部接続してみたら表示しない・・・
8080ポートの確認してみたら、ちゃんとあいてるのにな〜

# nmap -v localhost -p 8080
nmapコマンドはインストールしてないと使えないです。
ちょっと調べたら、またやつが原因のようです。
外部接続で見れない時はセキュリティレベルが怪しいかもという情報が・・・
うちはまたこれで外部から見れなかった・・・

system-config-securitylevel-tui
そのほかのポートに、"8080:tcp"を加えてあげると見れるかも。


最後にTomcatGUI管理ツールのログインの下かについて書いておきます。
Tomcatのconfディレクトリにある"tomcat-users.xml"をviコマンドで開き、下記のロールとユーザを加えます。

# vi /usr/local/tomcat/conf/tomcat-users.xml



GUI管理ツールのURLを入力します。"http://サーバー名:8080/"のトップページのリンクから遷移することもできます。

http://サーバー名:8080/manager/html
アクセスすると、ダイアログボックスが表示され、ユーザ名とパスワードが要求されるので、先ほど加えたユーザ名とパスワードを入力します。
ユーザ名やパスワードが間違っていなければ、"Tomcat Webアプリケーションマネージャ"が表示されると思います。
このページから、Tomcatの状態監視、Tomcatコンテキストの起動、停止、再ロード、配信解除、アプリケーションのデプロイなどを行うことができます。
次は、TOMCATApacheの連携します。
参考記事
Javaアプリケーションサーバー構築(Tomcat6) - CentOSで自宅サーバー構築
http://www.turbolinux.com/products/server/11s/user_guide/chkconfig.html
http://mitsukuni.org/blog/2008/03/01/installing-zsh-427/