Tomcat 9.0.1をAWSのEC2(RHEL 7.4)へインストールし、Systemdで起動を管理する設定
目次
概要
AWSのEC2インスタンス(OSはRHEL 7.4)にTomcatをインストールします。 RHEL 7.4のyumリポジトリにもTomcatが含まれていますが、バージョンが7と古いため、 Apacheソフトウェア財団のウェブサイトから(2017年10月22日時点で)最新のバージョン9.0.1をダウンロードしてインストールしました。 ただ、逆に新し過ぎてこの時点ではまだベータ版でしたので、正式版になった時点で再インストールすることをお勧めします。 同じ手順でインストールできると思います(たぶん)。 Apacheソフトウェア財団のサイトで配布されているtar.gz形式のファイルでインストールを行うと、基本的にはファイルをただ解凍するだけという お手軽インストールができますが、Systemdで起動を管理するためのサービスユニットファイルがインストールされません。 そのため、個別に手動で作成しています。
構成
想定環境
AWS(Amazon Web Services)のEC2インスタンスを準備し、Tomcatをインストールました。 参考までに、サーバのスペックは以下のとおりです。
項目 | 内容 |
---|---|
インスタンスタイプ | t2.micro |
vCPU | 1 |
メモリ | 1GB |
ディスク | SSD 10GiB |
リージョン | 日本 |
サーバ構成
OSバージョン
Red Hat Enterprise Linux 7.4 x86_64
ソフトウェア・パッケージ一覧
- apache-tomcat-9.0.1.tar.gz
- jdk-8u131-linux-x64.rpm
クライアント構成
OSバージョン
Windows 10 Pro 64bit
ソフトウェア・パッケージ一覧
- Microsoft Edge 40.15063.674.0
環境構築
インストール
wgetパッケージのインストール
Oracle JDKとTomcatのインストールモジュールをインターネットから取得するために、 wgetパッケージをインストールします。
$ sudo su - Last login: Tue Aug 29 13:31:01 UTC 2017 on pts/0 # yum install -y wget Loaded plugins: amazon-id, rhui-lb, search-disabled-repos epel/x86_64/metalink | 6.9 kB 00:00:00 epel | 4.3 kB 00:00:00 rhui-REGION-client-config-server-7 | 2.9 kB 00:00:00 rhui-REGION-rhel-server-releases | 3.5 kB 00:00:00 rhui-REGION-rhel-server-rh-common | 3.8 kB 00:00:00 (1/4): epel/x86_64/updateinfo | 840 kB 00:00:00 (2/4): rhui-REGION-rhel-server-releases/7Server/x86_64/updateinfo | 2.3 MB 00:00:00 (3/4): epel/x86_64/primary_db | 4.8 MB 00:00:00 (4/4): rhui-REGION-rhel-server-releases/7Server/x86_64/primary_db | 43 MB 00:00:01 Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-15.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: wget x86_64 1.14-15.el7 rhui-REGION-rhel-server-releases 547 k Transaction Summary ======================================================================================================================== Install 1 Package Total download size: 547 k Installed size: 2.0 M Downloading packages: wget-1.14-15.el7.x86_64.rpm | 547 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : wget-1.14-15.el7.x86_64 1/1 Verifying : wget-1.14-15.el7.x86_64 1/1 Installed: wget.x86_64 0:1.14-15.el7 Complete!
gccパッケージのインストール
Tomcatはインストールモジュールに同梱されているjsvcツールを利用することで、 デーモンとして起動することができます。jsvcツールはソースコードのみが同梱されており、 環境に合わせてコンパイルする必要があるため、gccをインストールします。
# yum install -y gcc Loaded plugins: amazon-id, rhui-lb, search-disabled-repos Resolving Dependencies --> Running transaction check ---> Package gcc.x86_64 0:4.8.5-16.el7 will be installed --> Processing Dependency: cpp = 4.8.5-16.el7 for package: gcc-4.8.5-16.el7.x86_64 --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-16.el7.x86_64 --> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-16.el7.x86_64 --> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-16.el7.x86_64 --> Running transaction check ---> Package cpp.x86_64 0:4.8.5-16.el7 will be installed ---> Package glibc-devel.x86_64 0:2.17-196.el7 will be installed --> Processing Dependency: glibc-headers = 2.17-196.el7 for package: glibc-devel-2.17-196.el7.x86_64 --> Processing Dependency: glibc-headers for package: glibc-devel-2.17-196.el7.x86_64 ---> Package libmpc.x86_64 0:1.0.1-3.el7 will be installed ---> Package mpfr.x86_64 0:3.1.1-4.el7 will be installed --> Running transaction check ---> Package glibc-headers.x86_64 0:2.17-196.el7 will be installed --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-196.el7.x86_64 --> Processing Dependency: kernel-headers for package: glibc-headers-2.17-196.el7.x86_64 --> Running transaction check ---> Package kernel-headers.x86_64 0:3.10.0-693.2.2.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================== Package Arch Version Repository Size ======================================================================================================================== Installing: gcc x86_64 4.8.5-16.el7 rhui-REGION-rhel-server-releases 16 M Installing for dependencies: cpp x86_64 4.8.5-16.el7 rhui-REGION-rhel-server-releases 5.9 M glibc-devel x86_64 2.17-196.el7 rhui-REGION-rhel-server-releases 1.1 M glibc-headers x86_64 2.17-196.el7 rhui-REGION-rhel-server-releases 675 k kernel-headers x86_64 3.10.0-693.2.2.el7 rhui-REGION-rhel-server-releases 6.0 M libmpc x86_64 1.0.1-3.el7 rhui-REGION-rhel-server-releases 51 k mpfr x86_64 3.1.1-4.el7 rhui-REGION-rhel-server-releases 203 k Transaction Summary ======================================================================================================================== Install 1 Package (+6 Dependent packages) Total download size: 30 M Installed size: 60 M Downloading packages: (1/7): cpp-4.8.5-16.el7.x86_64.rpm | 5.9 MB 00:00:00 (2/7): glibc-devel-2.17-196.el7.x86_64.rpm | 1.1 MB 00:00:00 (3/7): glibc-headers-2.17-196.el7.x86_64.rpm | 675 kB 00:00:00 (4/7): gcc-4.8.5-16.el7.x86_64.rpm | 16 MB 00:00:00 (5/7): libmpc-1.0.1-3.el7.x86_64.rpm | 51 kB 00:00:00 (6/7): kernel-headers-3.10.0-693.2.2.el7.x86_64.rpm | 6.0 MB 00:00:00 (7/7): mpfr-3.1.1-4.el7.x86_64.rpm | 203 kB 00:00:00 ------------------------------------------------------------------------------------------------------------------------ Total 29 MB/s | 30 MB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Warning: RPMDB altered outside of yum. Installing : mpfr-3.1.1-4.el7.x86_64 1/7 Installing : libmpc-1.0.1-3.el7.x86_64 2/7 Installing : cpp-4.8.5-16.el7.x86_64 3/7 Installing : kernel-headers-3.10.0-693.2.2.el7.x86_64 4/7 Installing : glibc-headers-2.17-196.el7.x86_64 5/7 Installing : glibc-devel-2.17-196.el7.x86_64 6/7 Installing : gcc-4.8.5-16.el7.x86_64 7/7 Verifying : kernel-headers-3.10.0-693.2.2.el7.x86_64 1/7 Verifying : mpfr-3.1.1-4.el7.x86_64 2/7 Verifying : glibc-headers-2.17-196.el7.x86_64 3/7 Verifying : cpp-4.8.5-16.el7.x86_64 4/7 Verifying : gcc-4.8.5-16.el7.x86_64 5/7 Verifying : glibc-devel-2.17-196.el7.x86_64 6/7 Verifying : libmpc-1.0.1-3.el7.x86_64 7/7 Installed: gcc.x86_64 0:4.8.5-16.el7 Dependency Installed: cpp.x86_64 0:4.8.5-16.el7 glibc-devel.x86_64 0:2.17-196.el7 glibc-headers.x86_64 0:2.17-196.el7 kernel-headers.x86_64 0:3.10.0-693.2.2.el7 libmpc.x86_64 0:1.0.1-3.el7 mpfr.x86_64 0:3.1.1-4.el7 Complete!
Oracle JDKのインストールモジュールをダウンロード
Oracle社のウェブサイトからOracle JDKのインストールモジュールをダウンロードします。 ダウンロードするファイルはrpm形式のものとします。
# cd /media/
# mkdir installer
# cd /media/installer/ ←インストールモジュールのダウンロード先
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"
--2017-10-19 14:53:00-- http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
Resolving download.oracle.com (download.oracle.com)... 23.44.174.243, 23.44.174.249
Connecting to download.oracle.com (download.oracle.com)|23.44.174.243|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://edelivery.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm [following]
--2017-10-19 14:53:00-- https://edelivery.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
Resolving edelivery.oracle.com (edelivery.oracle.com)... 104.71.165.94, 2600:140b:7000:3b3::2d3e, 2600:140b:7000:380::2d3e
Connecting to edelivery.oracle.com (edelivery.oracle.com)|104.71.165.94|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm?AuthParam=1508424900_27aea12855497be886afee89a3836728 [following]
--2017-10-19 14:53:00-- http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm?AuthParam=1508424900_27aea12855497be886afee89a3836728
Connecting to download.oracle.com (download.oracle.com)|23.44.174.243|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 169983496 (162M) [application/x-redhat-package-manager]
Saving to: ‘jdk-8u131-linux-x64.rpm’
100%[==============================================================================>] 169,983,496 6.45MB/s in 20s
2017-10-19 14:53:20 (8.25 MB/s) - ‘jdk-8u131-linux-x64.rpm’ saved [169983496/169983496]
#
Tomcatのインストールモジュールをダウンロード
Apacheソフトウェア財団のウェブサイトからTomcatのインストールモジュールをダウンロードします。 インストールモジュールはzip形式とtar.gz形式で配布されていますが、今回はtar.gz形式の方を選択しました。
# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz --2017-10-19 14:39:57-- http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz Resolving ftp.yz.yamagata-u.ac.jp (ftp.yz.yamagata-u.ac.jp)... 133.24.248.19, 133.24.248.16, 133.24.248.17, ... Connecting to ftp.yz.yamagata-u.ac.jp (ftp.yz.yamagata-u.ac.jp)|133.24.248.19|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9397803 (9.0M) [application/x-gzip] Saving to: ‘apache-tomcat-9.0.1.tar.gz’ 100%[==============================================================================>] 9,397,803 16.3MB/s in 0.6s 2017-10-19 14:39:58 (16.3 MB/s) - ‘apache-tomcat-9.0.1.tar.gz’ saved [9397803/9397803] # ls -l total 175180 -rw-r--r--. 1 root root 9397803 Sep 27 18:37 apache-tomcat-9.0.1.tar.gz -rw-r--r--. 1 root root 169983496 Mar 15 2017 jdk-8u131-linux-x64.rpm
Oracle JDKのインストール
ダウンロードしたrpmファイルをrpmコマンドでインストールします。 インストール後にjavaのバージョン表示コマンドを実行し、バージョンが表示されたら正常にインストールされています。
# rpm -ihv jdk-8u131-linux-x64.rpm Preparing... ################################# [100%] Updating / installing... 1:jdk1.8.0_131-2000:1.8.0_131-fcs ################################# [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar... # java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Tomcatのインストール
ダウンロードしたtar.gz形式のファイルを/opt/ディレクトリ内に解凍します。
# tar zxvf apache-tomcat-9.0.1.tar.gz -C /opt/
apache-tomcat-9.0.1/conf/
apache-tomcat-9.0.1/conf/catalina.policy
apache-tomcat-9.0.1/conf/catalina.properties
apache-tomcat-9.0.1/conf/context.xml
apache-tomcat-9.0.1/conf/jaspic-providers.xml
(中略)
apache-tomcat-9.0.1/bin/setclasspath.sh
apache-tomcat-9.0.1/bin/shutdown.sh
apache-tomcat-9.0.1/bin/startup.sh
apache-tomcat-9.0.1/bin/tool-wrapper.sh
apache-tomcat-9.0.1/bin/version.sh
jsvcツールのコンパイル
Tomcatをデーモンとして起動するためのjsvcというツールが標準で提供されています。 Tomcatをインストールするとjsvcツールのソースコードのみが同梱されているため、 利用するには環境に合わせてコンパイルする必要があります。 jsvcツールはこれまで使ったことがなかったのですが、 Systemdで起動・停止を行うためにTomcat標準のシェルスクリプトを利用しようとしたところ、 シェルスクリプト内でjsvcコマンドが使われていたので、準備することにしました。 jsvcツールのコンパイル後は jsvc というファイルが生成されますので、これを /opt/apache-tomcat-9.0.1/bin/ ディレクトリにコピーして配置します。
# cd /opt/apache-tomcat-9.0.1/bin/
# tar zxvf commons-daemon-native.tar.gz
commons-daemon-1.0.15-native-src/README
commons-daemon-1.0.15-native-src/LICENSE.txt
commons-daemon-1.0.15-native-src/NOTICE.txt
commons-daemon-1.0.15-native-src/RELEASE-NOTES.txt
commons-daemon-1.0.15-native-src/unix/
(中略)
commons-daemon-1.0.15-native-src/windows/resources/procrunr.ico
commons-daemon-1.0.15-native-src/windows/resources/procrunw.ico
commons-daemon-1.0.15-native-src/windows/resources/susers.bmp
commons-daemon-1.0.15-native-src/windows/apps/prunmgr/prunmgr.rc
commons-daemon-1.0.15-native-src/windows/apps/prunsrv/prunsrv.rc
# cd commons-daemon-1.0.15-native-src/unix/
# ./configure --with-java=/usr/java/latest
*** Current host ***
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking cached host system type... ok
*** C-Language compilation tools ***
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for ranlib... ranlib
checking for strip... strip
*** Host support ***
checking C flags dependant on host system type... ok
*** Java compilation tools ***
checking JAVA_HOME... /usr/java/latest
checking for JDK os include directory... linux
gcc flags added
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/capability.h usability... no
checking sys/capability.h presence... no
checking for sys/capability.h... no
configure: WARNING: cannot find headers for libcap
*** Writing output files ***
configure: creating ./config.status
config.status: creating Makefile
config.status: creating Makedefs
config.status: creating native/Makefile
*** All done ***
Now you can issue "make"
# make
(cd native; make all)
make[1]: Entering directory `/opt/apache-tomcat-9.0.1/bin/commons-daemon-1.0.15-native-src/unix/native'
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c jsvc-unix.c -o jsvc-unix.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c arguments.c -o arguments.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c debug.c -o debug.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c dso-dlfcn.c -o dso-dlfcn.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c dso-dyld.c -o dso-dyld.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c help.c -o help.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c home.c -o home.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c java.c -o java.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c location.c -o location.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c replace.c -o replace.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c locks.c -o locks.o
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/latest/include -I/usr/java/latest/include/linux -c signals.c -o signals.o
ar cr libservice.a arguments.o debug.o dso-dlfcn.o dso-dyld.o help.o home.o java.o location.o replace.o locks.o signals.o
ranlib libservice.a
gcc jsvc-unix.o libservice.a -ldl -lpthread -o ../jsvc
make[1]: Leaving directory `/opt/apache-tomcat-9.0.1/bin/commons-daemon-1.0.15-native-src/unix/native'
# cp -piv jsvc /opt/apache-tomcat-9.0.1/bin/
‘jsvc’ -> ‘/opt/apache-tomcat-9.0.1/bin/jsvc’
# cd /opt/apache-tomcat-9.0.1/bin/
# ls -l jsvc
-rwxr-xr-x. 1 root root 170512 Oct 19 15:21 jsvc
設定
tomcatユーザ・グループの作成
Tomcatデーモンの起動ユーザとして tomcat という名のLinuxユーザを作成します。 また、インストールしたTomcat関連のプログラム、設定ファイルの所有者、所有グループを Linuxの tomcat ユーザ、tomcat グループとします。 以下では GID:10003のtomcatグループと、UID:10003のtomcatユーザを作成します。 GIDとUIDは任意ですので、既存のものと重複しないように自由に割り当ててください。
# groupadd -g 10003 tomcat # tail -n 1 /etc/group tomcat:x:10003: ←tomcatグループが作成された # useradd -u 10003 -g 10003 tomcat # tail -n 1 /etc/passwd tomcat:x:10003:10003::/home/tomcat:/bin/bash ←tomcatユーザが作成された
Tomcat関連ファイルの所有者・所有グループ変更
インストールしたTomcat関連ファイルの所有者をtomcatに、所有グループをtomcatに変更します。
# cd /opt/ # chown -R tomcat:tomcat apache-tomcat-9.0.1 # ls -l /opt/apache-tomcat-9.0.1/ total 92 drwxr-x---. 3 tomcat tomcat 4096 Oct 19 15:23 bin drwx------. 2 tomcat tomcat 238 Sep 27 17:32 conf drwxr-x---. 2 tomcat tomcat 4096 Oct 19 14:41 lib -rw-r-----. 1 tomcat tomcat 57092 Sep 27 17:32 LICENSE drwxr-x---. 2 tomcat tomcat 6 Sep 27 17:32 logs -rw-r-----. 1 tomcat tomcat 1804 Sep 27 17:32 NOTICE -rw-r-----. 1 tomcat tomcat 6705 Sep 27 17:32 RELEASE-NOTES -rw-r-----. 1 tomcat tomcat 15946 Sep 27 17:32 RUNNING.txt drwxr-x---. 2 tomcat tomcat 30 Oct 19 14:41 temp drwxr-x---. 7 tomcat tomcat 81 Sep 27 17:32 webapps drwxr-x---. 2 tomcat tomcat 6 Sep 27 17:32 work
TomcatのSystemd用サービスユニットファイル作成
SystemdでTomcatの起動・停止を管理するには、Systemdのサービスユニットファイルが必要ですが、 Tomcatをインストールしても標準では準備されていないようだったので、新規に作成しました。
なお、今回はApacheソフトウェア財団のウェブサイトから最新のTomcat 9をダウンロードしてインストールしましたが、 RHEL 7.4のyumリポジトリではTomcat 7が配布されています。試しにこのTomcat 7をインストールするとサービスユニットファイルが 同梱されていたため、ファイルの内容を参考にTomcat 9用のサービスユニットファイルを作成しました。
# cd /etc/systemd/system/ # vi tomcat.service
※ファイルを新規作成※
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/tomcat
ExecStart=/opt/apache-tomcat-9.0.1/bin/daemon.sh start
ExecStop=/opt/apache-tomcat-9.0.1/bin/daemon.sh stop
SuccessExitStatus=143
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
TomcatのSystemd用設定ファイル作成
Tomcatのサービスユニットファイルで利用している環境変数に値を設定するための 設定ファイルを作成します。 こちらもRHEL 7.4で配布されているTomcat 7のファイルを参考にして新規作成しました。
# cd /etc/sysconfig/ # vi tomcat
※ファイルを新規作成※
# Where your java installation lives
JAVA_HOME="/usr/java/latest"
# Where your tomcat installation lives
CATALINA_BASE="/opt/apache-tomcat-9.0.1"
CATALINA_HOME="/opt/apache-tomcat-9.0.1"
#JASPER_HOME="/usr/share/tomcat"
#CATALINA_TMPDIR="/var/cache/tomcat/temp"
# You can pass some parameters to java here if you wish to
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
# Use JAVA_OPTS to set java.library.path for libtcnative.so
#JAVA_OPTS="-Djava.library.path=/usr/lib"
# What user should run tomcat
TOMCAT_USER="tomcat"
# You can change your tomcat locale here
#LANG="en_US"
# Run tomcat under the Java Security Manager
#SECURITY_MANAGER="false"
# Time to wait in seconds, before killing process
#SHUTDOWN_WAIT="30"
# Whether to annoy the user with "attempting to shut down" messages or not
#SHUTDOWN_VERBOSE="false"
# Connector port is 8080 for this tomcat instance
#CONNECTOR_PORT="8080"
# If you wish to further customize your tomcat environment,
# put your own definitions here
# (i.e. LD_LIBRARY_PATH for some jdbc drivers)
Tomcatの起動
SystemdからTomcatを起動します。
# systemctl status tomcat ● tomcat.service - Apache Tomcat Web Application Container Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled) ←自動起動無効 Active: inactive (dead) ←停止状態 # systemctl start tomcat ←起動コマンド実行 # systemctl status tomcat ● tomcat.service - Apache Tomcat Web Application Container Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled) ←自動移動無効 Active: active (running) since Sun 2017-10-22 09:11:09 UTC; 36min ago ←起動状態 Process: 30540 ExecStart=/opt/apache-tomcat-9.0.1/bin/daemon.sh start (code=exited, status=0/SUCCESS) Main PID: 30548 (jsvc) CGroup: /system.slice/tomcat.service tq30548 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /opt/apache-tomcat-9.0.1/logs/catalina... mq30549 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /opt/apache-tomcat-9.0.1/logs/catalina... Oct 22 09:11:04 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Starting Apache Tomcat Web Application ..... Oct 22 09:11:09 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Started Apache Tomcat Web Application C...r. Hint: Some lines were ellipsized, use -l to show in full.
Tomcatの自動起動有効化
Linux起動時に自動でTomcatが起動するよう設定します。
# systemctl enable tomcat ←自動起動の有効化 Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service. # systemctl status tomcat ● tomcat.service - Apache Tomcat Web Application Container Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled) ←自動起動有効 Active: active (running) since Sun 2017-10-22 09:11:09 UTC; 36min ago ←起動状態 Main PID: 30548 (jsvc) CGroup: /system.slice/tomcat.service tq30548 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /opt/apache-tomcat-9.0.1/logs/catalina... mq30549 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /opt/apache-tomcat-9.0.1/logs/catalina... Oct 22 09:11:04 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Starting Apache Tomcat Web Application ..... Oct 22 09:11:09 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Started Apache Tomcat Web Application C...r. Hint: Some lines were ellipsized, use -l to show in full.
プロセスの起動確認とTCPポートのリスニング確認
SystemdからTomcatを起動することで、jsvcのプロセスが起動していることと、 jsvcのプロセスがTCPポートをリスニングしていることを確認します。
# ps -ef | grep tomcat ←プロセスの起動確認 tomcat 30548 1 0 09:11 ? 00:00:00 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /opt/apache tomcat-9.0.1/logs/catalina-daemon.pid -wait 10 -outfile /opt/apache-tomcat-9.0.1/logs/catalina-daemon.out -errfile &1 -classpath /opt/apache-tomcat-9.0.1/bin/bootstrap.jar:/opt/apache-tomcat-9.0.1/bin/commons-daemon.jar:/opt/apache-tomcat-9.0.1/bin/tomcat-juli.jar -Djava.util.logging.config.file=/opt/apache-tomcat-9.0.1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcatalina.base=/opt/apache-tomcat-9.0.1 -Dcatalina.home=/opt/apache-tomcat-9.0.1 -Djava.io.tmpdir=/opt/apache-tomcat-9.0.1/temp org.apache.catalina.startup.Bootstrap tomcat 30549 30548 0 09:11 ? 00:00:05 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /opt/apache tomcat-9.0.1/logs/catalina-daemon.pid -wait 10 -outfile /opt/apache-tomcat-9.0.1/logs/catalina-daemon.out -errfile &1 -classpath /opt/apache-tomcat-9.0.1/bin/bootstrap.jar:/opt/apache-tomcat-9.0.1/bin/commons-daemon.jar:/opt/apache-tomcat-9.0.1/bin/tomcat-juli.jar -Djava.util.logging.config.file=/opt/apache-tomcat-9.0.1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcatalina.base=/opt/apache-tomcat-9.0.1 -Dcatalina.home=/opt/apache-tomcat-9.0.1 -Djava.io.tmpdir=/opt/apache-tomcat-9.0.1/temp org.apache.catalina.startup.Bootstrap root 30642 29829 0 09:48 pts/1 00:00:00 grep --color=auto tomcat # ss -tanp | grep jsvc ←TCPポートのリスニング確認 LISTEN 0 100 :::8080 :::* users:(("jsvc",pid=30549,fd=50)) LISTEN 0 100 :::8009 :::* users:(("jsvc",pid=30549,fd=55))
Tomcatの停止
Tomcatの起動と同様にSystemdからTomcatを停止できることを確認します。
# systemctl stop tomcat ←停止コマンド実行 # systemctl status tomcat ● tomcat.service - Apache Tomcat Web Application Container Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled) ←自動起動有効 Active: inactive (dead) since Sun 2017-10-22 10:20:26 UTC; 23s ago ←停止状態 Process: 30701 ExecStop=/opt/apache-tomcat-9.0.1/bin/daemon.sh stop (code=exited, status=0/SUCCESS) Main PID: 30548 (code=exited, status=0/SUCCESS) Oct 22 09:11:04 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Starting Apache Tomcat Web Application ..... Oct 22 09:11:09 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Started Apache Tomcat Web Application C...r. Oct 22 10:20:25 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Stopping Apache Tomcat Web Application ..... Oct 22 10:20:26 ip-172-31-23-52.ap-northeast-1.compute.internal systemd[1]: Stopped Apache Tomcat Web Application C...r. Hint: Some lines were ellipsized, use -l to show in full. # ps -ef | grep tomcat ←プロセスの確認 root 30712 29829 0 10:25 pts/1 00:00:00 grep --color=auto tomcat
動作テスト
ブラウザからのアクセス確認
Tomcatを起動します。既に起動している場合は不要です。
# systemctl start tomcat
PCのブラウザ(今回はMicrosoft Edgeを利用)からTomcatがインストールされたサーバの FQDNとポート番号8080を指定してアクセスします。 以下の画面の例ではAWSのEC2で設定された「パブリック DNS (IPv4)」が「ec2-99-99-99-99.ap-northeast-1.compute.amazonaws.com」 だった場合のURLとなります。
URL例)
http://ec2-99-99-99-99.ap-northeast-1.compute.amazonaws.com:8080/
以下のようなTomcat標準のQuick Start画面が表示されればインストール成功です。