Edited at

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

More than 3 years have passed since last update.


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/でブラウザからアクセス