LoginSignup
3
7

More than 5 years have passed since last update.

Tomcat8.5をインストールしjsvcでサービス起動 for CentOS7.2

Last updated at Posted at 2016-09-22

はじめに

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のダウンロード

Accept License Agreementをクリックした後、「Linux x64」のJDKをダウンロードします。
image

解凍し、配置する

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

参考

3
7
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
3
7