##はじめに
CentOS7で提供されるrpmのTomcatは、systemdになったこともあり、通常のstartup.shやshutdown.shがコールされた起動スクリプトになっているようです。
Tomcatには、tomca-nativeというサービス化して起動するjsvcモジュールが提供されていますので、Apache Tomcatが提供する純正のTomcatバイナリとjsvcモジュールをコンパイルして、jsvc経由で起動する方法をメモしておきます。
個人的な見解ですが、jsvcを利用した方法のほうがTomcatを起動すると、Tomcatが高負荷になり、OutOfMemoryなどの障害が発生した場合に、プロセスがお化けになりにくいように思います。(通常のJavaプロセスで起動して、高負荷トラブルが発生すると、javaプロセスがお化けになる経験を決行しました)
2016年9月現在、JDKは、JDK8-101,Tomcatは、8.5.5が最新版です。
今回も上記のバージョンで作業を行います。
実践環境バージョン情報
ソフトウェア | バージョン |
---|---|
JDK | 1.8.0_101 |
Tomcat | 8.5.5 |
OS | CentOS 7.2 |
##JavaSDKを用意する
こちらは、ライセンスの同意の関係でWGETでダウンロードするのは難しいです。
あらかじめ管理端末でダウンロードしたものを転送するか、サーバーのブラウザーでダウンロードを行ってください。
###JavaSDKのダウンロード
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Accept License Agreementをクリックした後、「Linux x64」のJDKをダウンロードします。
###解凍し、配置する
tar xvzf jdk-8u101-linux-x64.tar.gz
cp -rf jdk1.8.0_101 /usr/local
###環境変数を設定する
vi ~/.bashrc
一番下に以下を記載します
export JAVA_HOME=/usr/local/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH
環境変数を反映します
source ~/.bashrc
正しくJavaコマンドが導入バージョンになっているかを確認する
java -version
以下が結果で出てくればOK
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
##Tomcatを配置する
###ダウンロードし配置する
cd /usr/local/src
wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz
tar xvzf apache-tomcat-8.5.5.tar.gz
cp -rf apache-tomcat-8.5.5 /usr/local
###ユーザーを追加しオーナーを変更
useradd tomcat
chown tomcat:tomcat -R /usr/local/apache-tomcat-8.5.5
###daemon-nativeをコンパイルし配置する
mkdir -p /usr/local/src/daemon-native
cd /usr/local/apache-tomcat-8.5.5/bin
cp commons-daemon-native.tar.gz /usr/local/src/daemon-native
cd /usr/local/src/daemon-native
#解凍
tar xvzf commons-daemon-native.tar.gz
cd commons-daemon-1.0.15-native-src
cd unix
#コンパイル
#
#64BIT OSの場合以下の環境変数を設定する
export CFLAGS=-m64
export LDFLAGS=-m64
#Configure
./configure --with-java=$JAVA_HOME
make
#ファイルをコピー
cp jsvc /usr/local/apache-tomcat-8.5.5/bin
##起動スクリプトを配置する
vi /usr/lib/systemd/system/tomcat.service
以下を張り付けます
[Unit]
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/usr/local/jdk1.8.0_101
Environment=CATALINA_HOME=/usr/local/apache-tomcat-8.5.5
Environment=CATALINA_BASE=/usr/local/apache-tomcat-8.5.5
Environment="CATALINA_OPTS=-server -Xms2048m -Xmx4096m -XX:MetaspaceSize=1024M -XX:MaxMetaspaceSize=2048M"
ExecStart=/usr/local/apache-tomcat-8.5.5/bin/jsvc \
-Dcatalina.home=${CATALINA_HOME} \
-Dcatalina.base=${CATALINA_BASE} \
-cp ${CATALINA_HOME}/bin/commons-daemon.jar:${CATALINA_HOME}/bin/bootstrap.jar:${CATALINA_HOME}/bin/tomcat-juli.jar \
-user tomcat \
-java-home ${JAVA_HOME} \
-pidfile /var/run/tomcat.pid \
-errfile SYSLOG \
-outfile SYSLOG \
$CATALINA_OPTS \
org.apache.catalina.startup.Bootstrap
ExecStop=/usr/local/apache-tomcat-8.5.5/bin/jsvc \
-pidfile /var/run/tomcat.pid \
-stop \
org.apache.catalina.startup.Bootstrap
[Install]
WantedBy=multi-user.target
###Tomcatの起動と自動起動の設定
Tomcatサービス自動起動設定
systemctl enable tomcat
systemctl start tomcat
##参考