CentOS 7にApache Tomcatをインストールする(tarball)

yumからインストールできるTomcatは、若干古いため、最新版を使いたい場合はtarballからセットアップする必要があります。

事前にJava(JDK)のセットアップとシステムで使用するデフォルトのJDKの設定が済んでいることが条件となります。もし済んでいない場合は以下のエントリを参考にJDKの設定を行ってください。

ちなみにTomcatのバージョンとJDKのバージョンの適合性は以下の通りです(https://tomcat.apache.org/whichversion.html)。

Apache Tomcat version Supported Java version Servlet spec
9.0.x 8 and later 4.0
8.5.x 7 and later 3.1
8.0.x 7 and later 3.1
7.0.x 6 and later
(7 and later for WebSocket)
3.0
6.0.x 5 and later 2.5
5.5.x 1.4 and later 2.4
4.1.x 1.3 and later 2.3

今回は9.0.xを使うので、最低でもJava 8が必要となります。

Apache Tomcatのプロジェクトサイトから、Tomcat 9をダウンロードします。

QS_20180429-063206

ダウンロードするのは、Tomcat 9のtar.gz版です。ちなみに、Tomcatはwgetコマンドを使って直接ダウンロードできます。

[root@sakura ~]# wget http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.tar.gz
--2018-04-29 06:35:10--  http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.tar.gz
ftp.kddilabs.jp (ftp.kddilabs.jp) をDNSに問いあわせています... 192.26.91.193, 2001:200:601:10:206:5bff:fef0:466c
ftp.kddilabs.jp (ftp.kddilabs.jp)|192.26.91.193|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 9517889 (9.1M) [application/x-gzip]
`apache-tomcat-9.0.7.tar.gz' に保存中

100%[================================================================================================================================================================================================================>] 9,517,889   8.69MB/s 時間 1.0s

2018-04-29 06:35:12 (8.69 MB/s) - `apache-tomcat-9.0.7.tar.gz' へ保存完了 [9517889/9517889]

[root@sakura ~]#

ダウンロードしたらファイルを展開します。-Cオプションで展開先を/usr/share配下に指定しています。

[root@sakura ~]# tar -zxvf apache-tomcat-9.0.7.tar.gz -C /usr/share/
apache-tomcat-9.0.7/conf/
 :
(中略)
 :
apache-tomcat-9.0.7/bin/catalina.sh
apache-tomcat-9.0.7/bin/configtest.sh
apache-tomcat-9.0.7/bin/daemon.sh
apache-tomcat-9.0.7/bin/digest.sh
apache-tomcat-9.0.7/bin/setclasspath.sh
apache-tomcat-9.0.7/bin/shutdown.sh
apache-tomcat-9.0.7/bin/startup.sh
apache-tomcat-9.0.7/bin/tool-wrapper.sh
apache-tomcat-9.0.7/bin/version.sh
[root@sakura ~]#

tarballを展開すると、実行シェルなどが用意されているので、bin/startup.shで起動、shutdown.shで停止させることができます。

シェルを直接実行して起動/停止でも良いのですが、せっかくなのでsystemdを使って起動できるようにしておきたいと思います。systemdおよび設定ファイルである*.serviceファイルの細かい内容を説明すると長くなってしまうので、ここでは割愛します。Apache Tomcat 9の起動/停止用には以下のようなファイルを用意します。

/etc/systemd/system/tomcat9.service[Unit]
Description=Apache Tomcat 9.0.x
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/share/apache-tomcat-9.0.7/bin/startup.sh
ExecStop=/usr/share/apache-tomcat-9.0.7/bin/shutdown.sh
ExecReload=/bin/kill $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

既存のTomcatがすでにtomcat.serviceという名前で登録されている都合で、ファイル名をtomcat9としています。このファイルを/etc/systemd/systemディレクトリ配下に置いたら、設定を有効にします。

[root@sakura ~]# systemctl enable tomcat9.service
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat9.service to /etc/systemd/system/tomcat9.service.
[root@sakura ~]#

有効にしたら、起動と停止が出来ることを確認します。分かりやすくするためにログをtailで流しておきます。

[root@sakura ~]# tail -f /usr/share/apache-tomcat-9.0.7/logs/catalina.out &
[1] 30185
[root@sakura ~]# systemctl start tomcat9.service
[root@sakura ~]# NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
02-May-2018 02:23:16.830 情報 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
02-May-2018 02:23:16.938 情報 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8088"]
02-May-2018 02:23:16.971 情報 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
02-May-2018 02:23:16.979 情報 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8089"]
02-May-2018 02:23:16.981 情報 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
02-May-2018 02:23:16.988 情報 [main] org.apache.catalina.startup.Catalina.load Initialization processed in 895 ms
02-May-2018 02:23:17.135 情報 [main] org.apache.catalina.core.StandardService.startInternal サービス [Catalina] を起動します
02-May-2018 02:23:17.135 情報 [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/9.0.7
02-May-2018 02:23:17.152 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [/usr/share/apache-tomcat-9.0.7/webapps/ROOT] を配備します
02-May-2018 02:23:17.773 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/share/apache-tomcat-9.0.7/webapps/ROOT] has finished in [619] ms
02-May-2018 02:23:17.774 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [/usr/share/apache-tomcat-9.0.7/webapps/docs] を配備します
02-May-2018 02:23:17.796 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/share/apache-tomcat-9.0.7/webapps/docs] has finished in [22] ms
02-May-2018 02:23:17.796 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [/usr/share/apache-tomcat-9.0.7/webapps/examples] を配備します
02-May-2018 02:23:18.103 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/share/apache-tomcat-9.0.7/webapps/examples] has finished in [307] ms
02-May-2018 02:23:18.104 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [/usr/share/apache-tomcat-9.0.7/webapps/host-manager] を配備します
02-May-2018 02:23:18.131 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/share/apache-tomcat-9.0.7/webapps/host-manager] has finished in [28] ms
02-May-2018 02:23:18.131 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [/usr/share/apache-tomcat-9.0.7/webapps/manager] を配備します
02-May-2018 02:23:18.155 情報 [main] org.apache.catalina.startup.HostConfig.deploy^i;jcolHandler ["http-nio-8088"]
02-May-2018 02:23:18.169 情報 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8089"]
02-May-2018 02:23:18.174 情報 [main] org.apache.catalina.startup.Catalina.start Server startup in 1186 ms

[root@sakura ~]#

停止するときはsystemctl stop tomcat9で。

[root@sakura ~]# systemctl stop tomcat9.service
02-May-2018 02:22:16.849 情報 [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
02-May-2018 02:22:16.850 情報 [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8088"]
[root@sakura ~]#

systemctl status tomcat9でステータスを表示させてみるとこんな感じ。

[root@sakura ~]# systemctl status tomcat9
● tomcat9.service - Apache Tomcat 9.0.x
   Loaded: loaded (/etc/systemd/system/tomcat9.service; enabled; vendor preset: disabled)
   Active: active (exited) since 水 2018-05-02 02:23:15 JST; 1h 24min ago
  Process: 30302 ExecStop=/usr/share/apache-tomcat-9.0.7/bin/shutdown.sh (code=exited, status=0/SUCCESS)
  Process: 30394 ExecStart=/usr/share/apache-tomcat-9.0.7/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 30394 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/tomcat9.service
           mq30409 /usr/bin/java -Djava.util.logging.config.file=/usr/share/apache-tomcat-9.0.7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkg...

 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp systemd[1]: Starting Apache Tomcat 9.0.x...
 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp startup.sh[30394]: Using CATALINA_BASE:   /usr/share/apache-tomcat-9.0.7
 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp startup.sh[30394]: Using CATALINA_HOME:   /usr/share/apache-tomcat-9.0.7
 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp startup.sh[30394]: Using CATALINA_TMPDIR: /usr/share/apache-tomcat-9.0.7/temp
 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp startup.sh[30394]: Using JRE_HOME:        /usr
 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp startup.sh[30394]: Using CLASSPATH:       /usr/share/apache-tomcat-9.0.7/bin/bootstrap.jar:/usr/share/apache-tomcat-9.0.7/bin/tomcat-juli.jar
 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp startup.sh[30394]: Tomcat started.
 5月 02 02:23:15 tk2-219-19107.vs.sakura.ne.jp systemd[1]: Started Apache Tomcat 9.0.x.
[root@sakura ~]#
[root@sakura ~]#

ちなみにこの状態だとポート8080番を使っているので、他のTomcatがインストールされている場合、起動できない状態となっています。その場合は、8080番ポートを使用しているTomcatや他のアプリケーションを一度終了したうえで、起動/停止を試行してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください