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をダウンロードします。
ダウンロードするのは、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や他のアプリケーションを一度終了したうえで、起動/停止を試行してください。