Tomcat 7.0.37

スポンサーリンク

環境

Ubuntu 12.04.2 (3.5.0-26-generic) 64bit
Oracle JDK 7u17
Tomcat 7.0.37

Tomcat

ダウンロード

http://tomcat.apache.org/download-70.cgi から Binary Distributions – Core – tar.gz をダウンロードします.
2013-03-21 時点,ファイル名は apache-tomcat-7.0.37.tar.gz でした.

解凍,展開,配置

適当な場所に置きます.

$ tar zxvf apache-tomcat-7.0.37.tar.gz
$ sudo mv apache-tomcat-7.0.37 /usr/local/
$ sudo ln -s /usr/local/apache-tomcat-7.0.37 /usr/local/tomcat7

起動

ひとまず起動させてみます.

$ /usr/local/tomcat7/bin/startup.sh

下記のように表示されます.

Using CATALINA_BASE:   /usr/local/tomcat7
Using CATALINA_HOME:   /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar

念のため,プロセスも確認してみます.

$ ps aux | grep tomcat

http://localhost:8080/ に接続できれば OK です.

停止

停止させます.

$ /usr/local/tomcat7/bin/shutdown.sh 

下記のように表示されます.

Using CATALINA_BASE:   /usr/local/tomcat7
Using CATALINA_HOME:   /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar

Tomcat と Apache との連携

Ubuntu の場合,Apache はデフォルトで proxy, proxy_ajp が有効になっていないようなので有効にします.

$ sudo a2enmod proxy proxy_ajp
$ sudo /etc/init.d/apache2 restart

Apache の設定ファイルを編集します.
例えば,

$ sudo vi /etc/apache2/conf.d/tomcat7.conf

例えば,Tomcat 上の Web アプリのパスが http://localhost:8080/foobar/ で、Apache と連携させて http://localhost/foobar/ としたい場合、tomcat7.conf に下記のように記述します.

<Location /foobar/>
        ProxyPass ajp://localhost:8009/foobar/
</Location>

自動起動

OS 起動時に Tomcat も自動的に起動するようにしてみます.

$ sudo vi /etc/init.d/tomcat7

起動スクリプトは,例えば,

#!/bin/bash
#
# tomcat
#
# chkconfig:
# description:  Start up the Tomcat servlet engine.

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

TOMTOM="/usr/local/apache-tomcat-7"
CATALINA_HOME="/usr/local/tomcat7"
TOMCAT_USER='user'
SHUTDOWN_WAIT=10

tomcat_pid() {
  echo `ps aux | grep $TOMTOM | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
     then
        echo "Tomcat is already running (pid: $pid)"
     else
        echo "Starting Tomcat"
        /bin/su $TOMCAT_USER $CATALINA_HOME/bin/startup.sh
   fi

   return 0
}

stop() {
 pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then

  echo "Stoping Tomcat"
   /bin/su $TOMCAT_USER $CATALINA_HOME/bin/shutdown.sh

   echo -n "Waiting for processes to exit ["
   let kwait=$SHUTDOWN_WAIT
    count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n ".";
      sleep 1
      let count=$count+1;
    done
    echo "Done]"

    if [ $count -gt $kwait ]
    then
      echo "Killing processes ($pid) which didn't stop after $SHUTDOWN_WAIT seconds"
      kill -9 $pid
    fi
  else
    echo "Tomcat is not running"
  fi

  return 0
}

status() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Tomcat is running with pid: $pid"
  else
    echo "Tomcat is not running"
  fi
}

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

その2

#!/bin/bash

# Tomcat7: Start/Stop Tomcat 7
#
# chkconfig: - 90 10
# description: Tomcat is a Java application Server.

. /etc/init.d/functions
. /etc/sysconfig/network

CATALINA_HOME=/usr/local/tomcat7
TOMCAT_USER=user
LOCKFILE=/var/lock/subsys/tomcat

RETVAL=0
start(){
   echo "Starting Tomcat7: "
   su - $TOMCAT_USER -c "$CATALINA_HOME/bin/startup.sh"
   RETVAL=$?
   echo
   [ $RETVAL -eq 0 ] && touch $LOCKFILE
   return $RETVAL
}

stop(){
   echo "Shutting down Tomcat7: "
   $CATALINA_HOME/bin/shutdown.sh
   RETVAL=$?
   echo
   [ $RETVAL -eq 0 ] && rm -f $LOCKFILE
   return $RETVAL
}

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

実行権を付与します.

$ sudo chmod +x /etc/init.d/tomcat7

ランレベルを確認してみます.

$ runlevel

自分の場合は 2 でした.

N 2

ランレベル 2 にシンボリックリンクを張っておきます.

$ sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat7

OS を再起動してみて Tomcat が自動起動することを確認します.

その他

Apache の設定ファイル httpd.conf 等で ProxyPass の後の URL 記述に ? (クエスチョンマーク) を含むクエリ文字列まで含めた場合,? が %3F にうまくいかないとき.

problem in apache httpd.conf with question mark character
http://stackoverflow.com/questions/4115652/problem-in-apache-httpd-conf-with-question-mark-character

MIME Type を設定したい場合,

AddType application/mogmog .hoge

rewrite を有効にしたい場合,

$ sudo a2enmod rewrite
TomcatUbuntu
スポンサーリンク
コピペワールド