2014-02-19

2014-02-19 23:16

インストール環境とバージョン

今回、インストールするサーバとTomcatのバージョンは以下のようになります。
名前 バージョン ダウンロード元
ubuntu 10.04.4(64bit) http://releases.ubuntu.com/lucid/
java(jdk) 1.7.0_51 http://www.oracle.com/us/technologies/java/overview/index.html
Tomcat 7.0.50 http://tomcat.apache.org/

インストールする前の準備作業

開発パッケージが設置されてない場合は、apt-getでインストールする必要があります。
# apt-get install build-essential curl libcurl3 libpcre3-dev libssl-dev libxml2-dev libbz2-dev libgd2-xpm-dev libmcrypt-dev

JAVA(JDK)のインストール

Javaのインストール手順」を参照してください。

Tomcatのインストール

まず、Linuxのユーザを作成します。
※tomcatはセキュリティの為、一般ユーザで実行するようにしましょう。
# groupadd tomcat
# useradd -g tomcat -s /bin/false tomcat

Tomcatを設置します。
# mkdir /usr/local/tomcat
# cd /usr/local/src/
# wget http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-7/v7.0.50/bin/apache-tomcat-7.0.50.tar.gz
# tar xvf apache-tomcat-7.0.50.tar.gz -C /usr/local/tomcat/

# cd /usr/local/tomcat/
# ln -s apache-tomcat-7.0.50 current

# chown -R tomcat:tomcat /usr/local/tomcat/

環境ファイルを設定します。

# vi /etc/profile

#################
#java
#################
JAVA_HOME=/usr/local/java/current

#################
#tomcat
#################
CATALINA_HOME=/usr/local/tomcat/current
TOMCAT_USER=tomcat

export JAVA_HOME CATALINA_HOME TOMCAT_USER

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export PATH

# source /etc/profile

# echo $CATALINA_HOME
/usr/local/tomcat/current


Tomcatをデーモン化します。
# cp /usr/local/tomcat/current/bin/commons-daemon-native.tar.gz /tmp/
# cd /tmp/
# tar xvzf commons-daemon-native.tar.gz
# cd commons-daemon-1.0.15-native-src/unix/
# ./configure
# make
# chown tomcat:tomcat jsvc
# mv jsvc /usr/local/tomcat/current/bin/
# rm -rf /tmp/commons-daemon-1.0.15-native-src /tmp/commons-daemon-native.tar.gz

Tomcat起動スクリプト/etc/init.d/tomcatを作成します。
# vi /etc/init.d/tomcat

#!/bin/bash
#
# chkconfig: - 80 20
# description: catalina-daemon
 
# Source function library.
. /lib/lsb/init-functions 
 
export CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:NewSize=341m -XX:MaxNewSize=341m -XX:SurvivorRatio=2 -XX:PermSize=128m -XX:MaxPermSize=128m"
export CATALINA_PID=$CATALINA_HOME/logs/catalina-daemon.pid
export CATALINA_OUT="$CATALINA_HOME/logs/catalina.out"
export CATALINA_TMP="$CATALINA_HOME/temp"
 
tomcat=$CATALINA_HOME/bin/daemon.sh
prog=tomcat
lockfile=${LOCKFILE-/var/lock/tomcat}
RETVAL=0
 
start() {
    echo -n $"Starting $prog: "
    $tomcat start
    RETVAL=$?
    echo -n "[ $RETVAL ]"
    if [ $RETVAL = 0 ]; then
        echo "success"
        touch ${lockfile}
    else
        echo "failure"
    fi
    echo
    return $RETVAL
}
 
stop() {
    echo -n $"Stopping $prog: "
    $tomcat stop
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo "success"
        rm -f ${lockfile} ${CATALINA_PID}
    else
        echo "failure"
    fi
    echo
    return $RETVAL
}
 
version() {
   $tomcat version
    RETVAL=$?
    return $RETVAL
}
 
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    condrestart)
        if [ -f ${CATALINA_PID} ] ; then
            stop
            start
        fi
        ;;
    status)
        if [ -f ${CATALINA_PID} ] ; then
            cat /proc/`cat ${CATALINA_PID}`/status
        else
            echo "Tomcat is not running"
        fi
        ;;
    version)
        version
        ;;
    *)
        echo $"Usage: $prog {start|stop|restart|condrestart|status|version}"
        exit 1
esac
 
exit $RETVAL

Tomcatを起動します。

# chmod +x /etc/init.d/tomcat
# /etc/init.d/tomcat start
Starting tomcat: [ 0 ]success

# ps -ef | grep tomcat
root      6188     1  0 17:14 ?        00:00:00 jsvc.exec -java-home /usr/local/java/current -user tomcat -pidfile /usr/local/tomcat/current/logs/catalina-daemon.pid -wait 10 -outfile /usr/local/tomcat/current/logs/catalina.out -errfile &1 -classpath /usr/local/tomcat/current/bin/bootstrap.jar:/usr/local/tomcat/current/bin/commons-daemon.jar:/usr/local/tomcat/current/bin/tomca -juli.jar -Djava.util.logging.config.file=/usr/local/tomcat/current/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms512m -Xmx512m -XX:NewSize=341m -XX:MaxNewSize=341m -XX:SurvivorRatio=2 -XX:PermSize=128m -XX:MaxPermSize=128m -Djava.endorsed.dirs= -Dcatalina.base=/usr/local/tomcat/current -Dcatalina.home=/usr/local/tomcat/current -Djava.io.tmpdir=/usr/local/tomcat/current/temp org.apache.catalina.startup.Bootstrap
tomcat      6189  6188  1 17:14 ?        00:00:02 jsvc.exec -java-home /usr/local/java/current -user tomcat -pidfile /usr/local/tomcat/current/logs/catalina-daemon.pid -wait 10 -outfile /usr/local/tomcat/current/logs/catalina.out -errfile &1 -classpath /usr/local/tomcat/current/bin/bootstrap.jar:/usr/local/tomcat/current/bin/commons-daemon.jar:/usr/local/tomcat/current/bin/tomca -juli.jar -Djava.util.logging.config.file=/usr/local/tomcat/current/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms512m -Xmx512m -XX:NewSize=341m -XX:MaxNewSize=341m -XX:SurvivorRatio=2 -XX:PermSize=128m -XX:MaxPermSize=128m -Djava.endorsed.dirs= -Dcatalina.base=/usr/local/tomcat/current -Dcatalina.home=/usr/local/tomcat/current -Djava.io.tmpdir=/usr/local/tomcat/current/temp org.apache.catalina.startup.Bootstrap
root      6206  1118  0 17:16 pts/0    00:00:00 grep --color=auto tomcat
tomcatのプロセスは親・子で、2つ上がるのが正常だそうです。
※起動時に時間がかかってfailureになる場合はTomcat7の起動が遅い時部分を参照してください。

catalina.outログを簡単に確認できるようにaliasを登録します。

# vi /etc/profile

alias tclog="tail -f -n100 /usr/local/tomcat/current/logs/catalina.out"

# source /etc/profile

# tclog
....
Feb 18, 2014 6:32:38 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Feb 18, 2014 6:32:38 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Feb 18, 2014 6:32:38 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2010 ms

正常に起動されましたら、ブラウザから接続してみましょう。
基本的にtomcatのポートは8080になっています。
※ポート番号は/usr/local/tomcat/current/conf/server.xmlConnectorのプロトコルprotocol="HTTP/1.1"になっているコネクタのポート番号になります。

http://192.168.56.102:8080/

Tomcat7の起動が遅い時

Tomcat7をstartupした時に時間がかかり、failure(実際には成功したにも関わらず)になる場合があります。
catalina.outログを確認してみたら、ランダムセッションIDを発行するorg.apache.catalina.util.SessionIdGenerator createSecureRandom部分で時間がかかっていました。
その時はJREの設定を/dev/random ⇒ /dev/./urandom(non-blocking)に変更してください。

・起動が遅かったときのcatalinaログ
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Feb 18, 2014 5:25:32 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 901 ms
Feb 18, 2014 5:25:32 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Feb 18, 2014 5:25:32 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.50
Feb 18, 2014 5:25:32 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/host-manager

Feb 18, 2014 5:28:42 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [188,975] milliseconds.

Feb 18, 2014 5:28:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/examples
Feb 18, 2014 5:28:43 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/manager
Feb 18, 2014 5:28:43 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/ROOT
Feb 18, 2014 5:28:43 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/docs
Feb 18, 2014 5:28:43 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Feb 18, 2014 5:28:43 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Feb 18, 2014 5:28:43 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 191154 ms
SecureRandom部分で[188,975] millisecondsがかかっていますね。

・対策(Tomcat起動時のJREの設定変更)

# vi /etc/profile

#################
#java
#################
JAVA_HOME=/usr/local/java/current
JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"

#################
#tomcat
#################
CATALINA_HOME=/usr/local/tomcat/current
TOMCAT_USER=tomcat
export JAVA_HOME CATALINA_HOME TOMCAT_USER JAVA_OPTS

既存の/etc/profileJAVA_OPTS部分を追加しました。

適応した後、確認
# source /etc/profile
# echo $JAVA_OPTS
-Djava.security.egd=file:/dev/./urandom


問題なく出力されたら、daemon.shを修正して、環境ファイルのJAVA_OPTS設定を使うようにしましょう。
 
# vi /usr/local/tomcat/current/bin/daemon.sh


# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=
JAVA_OPTS="$JAVA_OPTS"
 
122LineのJAVA_OPTS=JAVA_OPTS="$JAVA_OPTS"に修正しました。

Tomcatの起動速度を確認すると以下のようになりました。
# /etc/init.d/tomcat stop
# /etc/init.d/tomcat start

Feb 19, 2014 10:12:59 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Feb 19, 2014 10:12:59 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Feb 19, 2014 10:12:59 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 910 ms
Feb 19, 2014 10:12:59 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Feb 19, 2014 10:12:59 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.50
Feb 19, 2014 10:12:59 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/host-manager
Feb 19, 2014 10:13:00 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/examples
Feb 19, 2014 10:13:00 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/manager
Feb 19, 2014 10:13:01 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/ROOT
Feb 19, 2014 10:13:01 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/apache-tomcat-7.0.50/webapps/docs
Feb 19, 2014 10:13:01 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Feb 19, 2014 10:13:01 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Feb 19, 2014 10:13:01 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2016 ms
【参照したサイト】

0 コメント:

コメントを投稿