Apache Tomcat 9 を CentOS 7 にインストールする手順

投稿者 : OSCA

 本稿では Java のアプリケーション・サーバー Apache Tomcat 9 を CentOS 7 にインストールする手順について解説します。

事前準備

 Apache Tomcat をインストールする前に、まずは Apache Tomcat 9 の動作の前提となる環境を作ります。 Apache Tomcat 9 は Java で作られているため JDK (Java SE Development Kit) が必要です。 つぎの記事などを参考に JDK をインストールしてください。

また、Linux 上で Tomcat を動かすための専用ユーザとして tomcat を追加します。

# useradd -s /sbin/nologin tomcat

Apache Tomcat 9 のダウンロードと配置

 それでは Apache Tomcat 9 のインストール作業に移ります。 まずは Apache Tomcat 9 のダウンロードページから、tar.gz 形式の Apache Tomcat 9 本体をダウンロードします。 ここでは、つぎのように curl コマンドでダウンロードします。 2017年06月現在はバージョン 9.0.0.M21 が最新版なので次のURLを指定しますが、最新のバージョンのURLを確認の上で実行してください。

# cd ~
# curl -O http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.0.M21/bin/apache-tomcat-9.0.0.M21.tar.gz

 次はダウンロードした tar.gz ファイルを解凍して配置します。 つぎのように tar コマンドで解凍して、今回は /opt に配置します。 また、解凍した Apache Tomcat の所有者を、先ほど作成した tomcat ユーザの所有とします。

# tar -xzvf ~/apache-tomcat-9.0.0.M21.tar.gz
# mv ~/apache-tomcat-9.0.0.M21 /opt
# chown -R tomcat:tomcat /opt/apache-tomcat-9.0.0.M21

サービスの作成と登録

 CentOS 7 からはサービスを systemd が管理するようになりました。 ここでは Apache Tomcat 9 をサービスとして登録します。 まずは /etc/systemd/system/tomcat.service を新たに作成して、つぎのように記述して保存します。 これはサービスの定義ファイルです。

[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/apache-tomcat-9.0.0.M21/tomcat.pid
RemainAfterExit=yes

ExecStart=/opt/apache-tomcat-9.0.0.M21/bin/startup.sh
ExecStop=/opt/apache-tomcat-9.0.0.M21/bin/shutdown.sh
ExecReStart=/opt/apache-tomcat-9.0.0.M21/bin/shutdown.sh;/opt/apache-tomcat-9.0.0.M21/bin/startup.sh

[Install]
WantedBy=multi-user.target

 作成した定義ファイルの権限を 755 に変更します。

# chmod 755 /etc/systemd/system/tomcat.service

 定義ファイルの作成が完了したら、つぎのように systemctl enable コマンドでサービスを有効にします。

# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.

 これでサービス登録が完了です。

Apache Tomcat 9 の起動と停止

 Apache Tomcat 9 を起動してみましょう。 systemctl start tomcat コマンドで起動できます。

# systemctl start tomcat

 なお Apache Tomcat 9 を停止する場合は systemctl stop tomcat コマンドです。

# systemctl stop tomcat

ファイアウォール (Firewalld) が有効な場合の設定

 Apache Tomcat では、デフォルトの HTTP の待ち受けポートとして8080番が利用されますが、CentOS 7 ではデフォルトでファイアウォール(Firewalld)が有効なっている場合があります。 ファイアウォールが有効になっている場合は8080番ポートへのアクセスを許可しないとブラウザから閲覧することができませんので、ここではその設定手順についてざっと説明します。

 Firewalld 自身が認識しているサービスは /usr/lib/firewalld/services/ にサービス毎に xml ファイルを作成して、xml にサービスで利用するポート番号などを記載して管理しています。 しかしユーザーがカスタマイズした設定(CentOS 7 初期状態とは異なる設定)は /etc/firewalld/services/ 内に配置するように決められています。 ここでは、新たに Tomcat サービスを Firewalld で管理したいので、/etc/firewalld/services/ フォルダに tomcat.xml を作成します。 tomcat.xml を作成したら、そのファイルの中身は次のように記述します。

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Apache Tomcat 9</short>
  <description>Apache Tomcat 9</description>
  <port protocol="tcp" port="8080"/>
</service>

 Firewalld が現時点で通信を許可しているサービスは、次のような firewall-cmd コマンドで確認することができます。 次の例だと dhcpv6-client と ssh のサービスが許可されていることが分かります。

# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client ssh

 Firewalld に上で作成した tomcat の通信を許可するように、次のように firewall-cmd を実行します。

# firewall-cmd --add-service=smtp --zone=public --permanent
# firewall-cmd --reload

 もう一度、現在通信を許可しているサービスを確認すると、今度は tomcat が追加されたことが確認できます。

# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client ssh tomcat

 これでファイアウォールの設定も完了です。

おわりに

 本稿では Apache Tomcat 9 をインストールする手順について解説しました。 CentOS では 7 から導入された systemd について知識が必要ですが、systemd は Apache Tomcat 以外のソフトウェアの導入でも前提となる知識ですので、ぜひ学習されることをオススメします。

 インストールが完了したら、次のステップとして次のような記事に進むことをオススメします。

Apache Tomcat 環境構築へ戻る

著者 : OSCA

OSCA

 初級WEBエンジニアです。最近は Android, iOS, WEBアプリの作成に力を入れています。 個人として何か一つでも世の中の多くの人に使ってもらえるアプリを作ろうと日々奮闘中です。