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

投稿者 : OSCA

[PR] "東野・岡村の旅猿"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本稿では Java のアプリケーション・サーバー Apache Tomcat 8 を CentOS 7 にインストールする手順について解説します。 もっと新しい Tomcat 9 のインストール手順をお探しの方は「Apache Tomcat 9 を CentOS 7 にインストールする手順」をご覧ください。

事前準備

 Apache Tomcat をインストールする前に、まずは Apache Tomcat の動作の前提となる環境を作ります。 Apache Tomcat 8 を動作させるためには Java 7 以上のランタイムが必要です。 つぎの記事などを参考に Java Developer Kit をインストールしてください。

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

# useradd -s /sbin/nologin tomcat

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

 それでは Apache Tomcat 8 のインストール作業に移ります。 まずは Apache Tomcat 8 のダウンロードページから、tar.gz 形式の Apache Tomcat 8 本体をダウンロードします。 ここでは、つぎのように curl コマンドでダウンロードします。 2015年12月現在はバージョン 8.0.50 が最新ですが、本手順の際には、ダウンロードページから最新のバージョンのURLをそれぞれ確認してください。

# cd ~
# curl -O http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-8/v8.0.50/bin/apache-tomcat-8.0.50.tar.gz

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

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

サービスの作成と登録

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

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

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

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

[Install]
WantedBy=multi-user.target

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

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

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

# systemctl enable tomcat
ln -s '/etc/systemd/system/tomcat.service' '/etc/systemd/system/multi-user.target.wants/tomcat.service'

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

Apache Tomcat 8 の起動と停止

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

# systemctl start tomcat

 なお Apache Tomcat 8 を停止する場合は 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 8</short>
  <description>Apache Tomcat 8</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=tomcat --zone=public --permanent
# firewall-cmd --reload

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

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

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

おわりに

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

次はインストール後に行いたいセキュリティ設定について解説しますので、是非御覧ください。

Apache Tomcat 環境構築へ戻る

Apache Tomcatのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca