16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant Tips#6 JavaのWebアプリ実行用にTomcat7環境をセットアップする

Last updated at Posted at 2014-07-27

##Vagrant Tipsのサマリページはこちら

この記事のサマリ

この記事に掲載されたスクリプトをvagrantに食わせると、自動的にTomcatがインストールされ、javaのwebアプリの実験などができるようになります。

対象読者

tomcatがインストールされたsandboxで、Javaのwebアプリをアレコレと試してみたい人向け。

動作確認バージョン

vagrant versionの結果
Installed Version: 1.7.4

経緯

ローカル環境を汚さないで、JavaでWebなアプリの検証をしたかったので。

アプリケーションサーバとは

JavaでWebアプリを作成する場合、ほぼ必ずといってよいほどServletという言葉が出てきます。StrutsやSpring MVC、SeasorなどなどWeb向けのフレームワークを使った場合も、土台となっているのはServletの技術です。
このServletを利用するには、webコンテナとかServletコンテナと呼ばれるアプリケーションサーバが必要になってきます。具体的には、TomcatやJBoss、Jetty、WebLogic Server、WebSphere Application Serverといったものです。
本稿では、その中でも一番使われているであろうTomcatをVagrant上にセットアップするTipsを紹介致します。

Tomcat環境をセットアップする

それでは、実際のVagrantfileと、tomcatをセットアップするスクリプトを提示します。

Vagrantfile
Vagrant::Config.run do |config|
  config.vm.box = "centos64_6_5"
  config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"

  config.vm.define "web" do |web|
    web.vm.network "hostonly", "192.168.55.10"
    web.vm.provision "shell", path: "setup_jdk7.sh"
    web.vm.provision "shell", path: "setup_tomcat7.sh"
  end
end

★setup_jdk.shは、
Vagrant Tips#2 Oracleのjdkをインストールさせるに記載しておりますので、そちらをご参照ください。

tomcatをインストールさせるshellは、以下のように実装しました。tomcat7.0.54がダウンロード済みでなかったら、wgetで取得するような方式にしています。また、デフォルトではiptablesが有効になっており、ブラウザからアクセスできない状態であるためoffにしています。(host-onlyネットワークにしているので、セキュリティが特に下がるわけではないとの判断です。)

setup_tomcat7.sh
#!/bin/bash

BASE_DIR="/vagrant"
PACKAGE_DIR="${BASE_DIR}/package"
TOMCAT_MAJOR_VERSION=7
TOMCAT_VERSION=${TOMCAT_MAJOR_VERSION}.0.67
TOMCAT_FILE_NAME="apache-tomcat-${TOMCAT_VERSION}"
ARCHIVED_TOMCAT_FILE_NAME="apache-tomcat-${TOMCAT_VERSION}.tar.gz"
TOMCAT_URL="http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-${TOMCAT_MAJOR_VERSION}/v${TOMCAT_VERSION}/bin/${ARCHIVED_TOMCAT_FILE_NAME}"
USR_LOCAL_DIR="/usr/local/"
CATALINA_HOME="${USR_LOCAL_DIR}/tomcat${TOMCAT_MAJOR_VERSION}"
TOMCAT_REAL_PATH="${USR_LOCAL_DIR}/${TOMCAT_FILE_NAME}"


# create dir
if [ ! -d ${PACKAGE_DIR} ]
then
  mkdir -p ${PACKAGE_DIR}
else
  echo "${PACKAGE_DIR} Is Already Exists So Need Not Create"
fi

# if "archived tomcat file" is noting
if [ ! -f ${PACKAGE_DIR}/${ARCHIVED_TOMCAT_FILE_NAME} ]
then
  wget ${TOMCAT_URL} -O ${PACKAGE_DIR}/${ARCHIVED_TOMCAT_FILE_NAME}
else
  echo "${ARCHIVED_TOMCAT_FILE_NAME} Is Already Exists So Need Not wget"
fi

# gunzip "archived tomcat file"
if [ ! -d ${TOMCAT_REAL_PATH} ]
then
  cp -p ${PACKAGE_DIR}/${ARCHIVED_TOMCAT_FILE_NAME} /tmp/${ARCHIVED_TOMCAT_FILE_NAME}
  tar -xvzf /tmp/${ARCHIVED_TOMCAT_FILE_NAME} -C ${USR_LOCAL_DIR}
  sudo ln -s ${TOMCAT_REAL_PATH} ${CATALINA_HOME}
  sudo chown -R vagrant:vagrant ${CATALINA_HOME}
else
  echo "${CATALINA_HOME} Is Already Exists"
fi

# copy setenv.sh
echo "copy setenv.sh"
sudo cp -p /vagrant/confs/tomcat/setenv.sh ${CATALINA_HOME}/bin
sudo chown -R vagrant:vagrant ${CATALINA_HOME}/

# setup tomcat init script
echo "copy /etc/init.d/tomcat"
sudo cp -p /vagrant/confs/tomcat/tomcat /etc/init.d/
sudo chown vagrant:vagrant /etc/init.d/tomcat

sudo /etc/init.d/tomcat start

sudo service iptables stop
confs/tomcat/setenv.sh
#!/bin/sh

export CATALINA_OPTS="$CATALINA_OPTS -Xms64m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx512m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"
export CATALINA_OPTS="$CATALINA_OPTS -server"

#DATE=`date +'%Y%m%d-%H%M'`
#CATALINA_OPTS="-server -XX:MaxPermSize=256m -XX:PermSize=256m -XX:SurvivorRatio=2 -Xmn256 -Xmx256 -Xms256"
#CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintGCDetails -Xloggc:${CATALINA_BASE}/logs/gc.log.${DATE}"
#CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3333 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
#CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.password.file=${CATALINA_BASE}/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=${CATALINA_BASE}/conf/jmxremote.access"

echo "Using CATALINA_BASE: ${CATALINA_OPTS}"
export CATALINA_OPTS
confs/tomcat/tomcat
#!/bin/bash
#
# Startup script for the Tomcat Servlet Container
#
# chkconfig: 2345 35 65
# description: Tomcat is the servlet container that is used in the official \
#              Reference Implementation for the Java Servlet and JavaServer \
#              Pages technologies

TOMCAT_USER=vagrant
CATALINA_HOME=/usr/local/tomcat7

. /etc/rc.d/init.d/functions
prog=tomcat

start() {
    echo -n $"Starting $prog: "
    daemon --user $TOMCAT_USER $CATALINA_HOME/bin/startup.sh > /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        echo_success
    else
        echo_failure
    fi
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
}
stop() {
    echo -n $"Stopping $prog: "
    daemon --user $TOMCAT_USER $CATALINA_HOME/bin/shutdown.sh > /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        echo_success
    else
        echo_failure
    fi
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  status)
    INSTANCES=`ps --columns 512 -aef|grep java|grep tomcat|grep org.apache.catalina.startup.Bootstrap|wc -l`
    if [ $INSTANCES -eq 0 ]; then
        echo $prog is stopped
        RETVAL=3
    else
        if [ $INSTANCES -eq 1 ]; then
            echo $prog is running 1 instance...
        else
            echo $prog is running $INSTANCES instances...
        fi
        RETVAL=0
    fi
    ;;
  *)
    echo $"Usage: $prog {start|stop|restart|status|help}"
    exit 1
esac

exit $RETVAL

上記を配置して、vagrant upした後、ブラウザから「http://192.168.55.10:8080/」にアクセスして、Tomcatのデフォルトのページが出てくればOKです。
あとは、適宜アプリを配置してあげれば、ちょっとした実験に使えます。

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?