JavaのWebアプリケーションサーバーの構築手順


JDKのインストール

OracleのダウンロードページからLinux版JDKをダウンロードする.

  • 「Accept License Agreement」をチェックしてダウンロード.
  • 執筆時点の最新版はjdk-8u45-linux-x64.rpm
  • 64bit Linux 用の「Linux x64」は tar.gz 版と RPM 版がありますが、今回は RPM 版.
      

    scpコマンドまたはFTPツール等でサーバーにjdkをアップロード.

    JDKのインストール

  • rpm コマンドだけでインストールは完了する.

      # rpm -ivh jdk-8u45-linux-x64.rpm
      準備しています...              ################################# [100%]
      更新中 / インストール中...
        1:jdk1.8.0_45-2000:1.8.0_45-fcs    ################################# [100%]
       Unpacking JAR files...
        rt.jar...
        jsse.jar...
        charsets.jar...
        tools.jar...
        localedata.jar...
        jfxrt.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...

JDKのインストール先の確認

$ ls -l /usr/java/
合計 4
lrwxrwxrwx 1 root root   16  6月  7 09:42 default -> /usr/java/latest
drwxr-xr-x 9 root root 4096  6月  7 09:42 jdk1.8.0_45
lrwxrwxrwx 1 root root   21  6月  7 09:42 latest -> /usr/java/jdk1.8.0_45
  • 実態は /usr/java/jdk1.8.0_45 配下にインストールされている.
  • 2つのリンク default と latest が作成されている.

環境変数の設定

~/.bash_profile へ追記

  export JAVA_HOME=/usr/java/default
  • 次回、最新のJDKをインストールしたとき、パス設定を変更不要とするためにJAVA_HOME を   /usr/java/default とする.

変更した ~/.bash_profile を有効化

 $ source ~/.bash_profile

Tomcatのインストール

Tomcatの公式ホームページからパッケージをダウンロードする.

Coreの中の[tar.gz]をダウンロードすれば良い。 8.0.23ならapache-tomcat-8.0.23.tar.gzというファイルになる.

ダウンロードしたtar.gzを/usr/localに展開する

```
# tar xvzf apache-tomcat-8.0.23.tar.gz
# mv apache-tomcat-8.0.23 /usr/local
```

Tomcat管理ユーザーを作成する

  • Tomcatをroot権限で扱っていると、セキュリティホールがあった時に サーバのroot権限が取られる可能性がある.
  • そこで実行専用のユーザとして、tomcatというアカウントを作成する.
  • このtomcatユーザは、-s オプションでログインシェルに/sbin/nologinを指定して通常利用はできないようにしておく.
 # useradd -s /sbin/nologin tomcat

展開後、ディレクトリのオーナーをtomcatユーザーにする.

# cd /usr/local
#  chown -R tomcat:tomcat apache-tomcat-8.0.23

tomcatという名前でシンボリックリンクを作成しておく

# ln -s apache-tomcat-8.0.23 tomcat

/usr/local/tomcat/logs/内のファイルオーナーをtomcatユーザーにする

chown tomcat:tomcat /usr/local/tomcat/logs/*

環境変数の設定

~/.bash_profile へ追記

  export CATALINA_HOME=/usr/local/tomcat

変更した ~/.bash_profile を有効化

  $ source ~/.bash_profile

Tomcatの起動確認

  • 実行権限の確認
 # ls -l /usr/local/tomcat/bin/
 -rw-r--r-- 1 tomcat tomcat  28386  5月 19 15:00 bootstrap.jar
-rw-r--r-- 1 tomcat tomcat   1647  5月 19 15:03 catalina-tasks.xml
-rw-r--r-- 1 tomcat tomcat  13825  5月 19 15:00 catalina.bat
  • 実行権限の付与
 # chmod +x /usr/local/tomcat/bin/*
  • 再確認
 # ls -l /usr/local/tomcat/bin/
 rwxr-xr-x 1 tomcat tomcat  28386  5月 19 15:00 bootstrap.jar
-rwxr-xr-x 1 tomcat tomcat   1647  5月 19 15:03 catalina-tasks.xml
-rwxr-xr-x 1 tomcat tomcat  13825  5月 19 15:00 catalina.bat
  • 起動
 # /usr/local/tomcat/bin/startup.sh
 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
 Tomcat started.
  • 停止
  # /usr/local/tomcat/bin/shutdown.sh
  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

自動起動スクリプト作成

init.dにスクリプトを新規登録.

# vim /etc/rc.d/init.d/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=tomcat
  CATALINA_HOME=/usr/local/tomcat

  . /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

確認

# ls -l /etc/rc.d/init.d/tomcat
-rw-r--r-- 1 root root 1603  6月  7 12:05 /etc/rc.d/init.d/tomcat

実行権限を付与

# chmod +x /etc/rc.d/init.d/tomcat

再確認

# ls -l /etc/rc.d/init.d/tomcat
-rwxr-xr-x 1 root root 1603  6月  7 12:05 /etc/rc.d/init.d/tomcat

起動スクリプトからの起動確認

# /etc/rc.d/init.d/tomcat start
tomcat を起動中:                                           [  OK  ]

停止

# /etc/rc.d/init.d/tomcat stop
tomcat を停止中:                                           [  OK  ]

自動起動登録

chkconfig確認

# chkconfig --list tomcat
サービス tomcat は chkconfig をサポートしますが実行レベルで参照されていません (run 'chkconfig --add tomcat')

chkconfig にTomcatを追加

# chkconfig --add tomcat

もう一度確認

chkconfig --list tomcat
tomcat          0:off   1:off   2:on    3:on    4:on    5:on    6:off

Tomcat自動起動セット

# chkconfig tomcat on

Apache/Tomcatの連携設定

Apacheの設定ファイル追加

  • http:/ホスト名/hello/で始まるURLを使ってアクセスがあった場合にTomcat側のファイルを呼び出すようにする.そこでセクションコンテナとして「Location」を使う。
  • Tomcat側へアクセスを飛ばす設定をこの中に記述する。Tomcat側へはAJP/1.3プロトコルで8009番ポートを使って接続を行う
  • 下記のように/etc/httpd/conf/extra/httpd-proxy.confに追記
  mkdir /etc/httpd/conf/extra
  vim /etc/httpd/conf/extra/httpd-proxy.conf
    <Location /hello/>
        ProxyPass ajp://localhost:8009/hello/
    </Location>

/etc/httpd/conf/httpd.confファイルに「Include」を使って上で作成した「httpd-proxy.conf」を呼び出すようにする

/etc/httpd/conf/httpd.confファイルに下記を追加

    Include conf/extra/httpd-proxy.conf

httpdのリロード

/etc/rc.d/init.d/httpd reload

http:://ホスト名/hello/でブラウザからアクセス