CentOS 7 にTomcat 7をインストールする

個人的には、あまりTomcatやJavaといったものが好きではなかったのだが、今のプロジェクトがTomcatを扱っているため、忘れないように設定方法についてを記述していくことにする。
まずはOracle JDK及びTomcatのインストールから。

1.Oracle JDKのインストール

まずは、Tomcatをインストールする上で前提となるJDKのインストールを行う。
JDKにはOpenJDKとOracleJDKがあるが、通常業務で利用する場合はOracleJDKを用いるので、そちらをインストールする。

まずは、Oracle社のこちらのページからOracle JDKをダウンロード。今回はOracle JDK 7u75を用いる。

ファイルダウンロード後、サーバ側で以下のように「/opt/jdk」ファイルを作成する。
(別に任意の場所でいいんだけど、とりあえず作成した。)

mkdir /opt/java
cd /opt/java

作成した「/opt/jdk」フォルダに先ほどダウンロードしたファイルを転送する。Teratermなどを利用しているならば、SCP機能を利用すると良いだろう。
次に、ダウンロードしたJDKのアーカイブファイルを展開する。

tar xzvf jdk-7u75-linux-x64.gz

上記コマンドを実行することにより、「/opt/java/jdk1.7.0_75」というディレクトリが作成された。
このままこのディレクトリをJAVA_HOMEに設定するのもあれなので、中身を全て「/opt/java/」に移動し、古いファイルを削除する。

mv ./jdk1.7.0_75/* ./
rm -rf ./jdk1.7.0_75/
rm -rf ./jdk-7u75-linux-x64.gz

次に、環境変数の設定を行う。
起動時に読み込まれるよう、まずは「/etc/profile」の末尾に以下のコマンドを実行して追記を行う。

echo 'JAVA_HOME=/opt/java' >> /etc/profile
echo 'export JAVA_HOME' >> /etc/profile
echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
echo 'CATALINA_HOME=/opt/tomcat' >> /etc/profile
echo 'export CATALINA_HOME' >> /etc/profile
. /etc/profile

設定した環境変数が反映されているか、以下のコマンドで確認を行う。

echo $JAVA_HOME

以下のように出力されたら設定が行われている。

$ echo $JAVA_HOME
/opt/java

2.Tomcatのインストール

次に、Tomcatのインストールを行う。
まずは、Tomcatのインストールファイルをこちらのページからダウンロードする。今回は、「apache-tomcat-7.0.59.tar.gz」を用いる。

もしくは、以下のコマンドでダウンロードを行う。

wget http://ftp.riken.jp/net/apache/tomcat/tomcat-7/v7.0.59/bin/apache-tomcat-7.0.59.tar.gz

まずは、tomcatようのhomeディレクトリとして「/opt/tomcat」を作成する。

mkdir /opt/tomcat
cd /opt/tomcat

その後、ダウンロードした「apache-tomcat-7.0.59.tar.gz」を「/opt/tomcat」に転送し、アーカイブファイルを展開する。

tar xzvf apache-tomcat-7.0.59.tar.gz

上記コマンドを実行することにより、「/opt/tomcat/apache-tomcat-7.0.59」というディレクトリが作成された。
OracleJDKと同様、「/opt/tomcat」にファイルの中身を移動する。

mv ./apache-tomcat-7.0.59/* ./
rm -rf ./apache-tomcat-7.0.59/
rm -rf ./apache-tomcat-7.0.59.tar.gz

次に、起動ファイルを作成する。

CentOS 7ということで、「/etc/init.d」版と「/usr/lib/systemd/system/」版の2種類を用意した。

「/etc/init.d」版

serviceコマンドでの起動の場合はこちら。
「/etc/init.d/」ディレクトリ配下に、以下の内容で新規に「tomcat」ファイルを生成する。

vim /etc/init.d/tomcat

●/etc/init.d/tomcat

#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat\
# chkconfig: 234 20 80
JAVA_HOME=/opt/java
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/opt/tomcat

case $1 in
start)
    sh $CATALINA_HOME/bin/startup.sh
;;
stop)
    sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
    sh $CATALINA_HOME/bin/shutdown.sh
    sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0

「/etc/init.d/tomcat」作成後、以下のコマンドを実行しパーミッション、自動起動設定を行う。

chmod 755 /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig --level 234 tomcat on

「/usr/lib/systemd/system/」版

systemdでの起動の場合はこちら。
「/usr/lib/systemd/system/」ディレクトリ配下に、以下の内容で新規に「tomcat.service」ファイルを生成する。

vim /usr/lib/systemd/system/tomcat.service

●/usr/lib/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/opt/java/
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment=CATALINA_OPTS=

ExecStart=$CATALINA_HOME/bin/startup.sh
ExecStop=$CATALINA_HOME/bin/shutdown.sh
ExecReStart=$CATALINA_HOME/bin/shutdown.sh;$CATALINA_HOME/bin/startup.sh

[Install]
WantedBy=multi-user.target

ファイル作成後、以下のコマンドを実行しパーミッション、自動起動設定を行う。

chmod 755 /usr/lib/systemd/system/tomcat.service
systemctl enable tomcat

サービスの起動前に、tomcatユーザの 作成を行う。
以下のコマンドで、tomcatユーザを作成、「/opt/tomcat」配下の所有者を変更する。

useradd -s /sbin/nologin -d /opt/tomcat tomcat
chown -R tomcat:tomcat /opt/tomcat

後は、tomcatサービスを実際に起動させてみるだけだ。
以下のコマンドを実行する。

service start tomcat

もしくは

systemctl start tomcat

以下のコマンドで、tomcatのプロセスが起動している事を確認する。

ps -ef | grep [t]omcat

無事起動している場合は、以下のように表示される。

ps -ef | grep [t]omcat
root      3251     1  0  3月01 ?      00:00:06 /opt/java/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/tomcat/endorsed -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start

3.firewalldの設定

さて、これでtomcatのプロセスが起動するようになった訳だが、CentOS7の場合は通常であればfirewalledが動作しているため、このままではアクセス出来ない。
ファイアーウォール自体が不要な場合は、以下のコマンドでfirewalld自体を停止してしまう。

systemctl disable firewalld
systemctl stop firewalld

firewalldが動作している状態でtomcatを動作させる場合、まず以下のファイルを作成する。

vim /etc/firewalld/services/tomcat.xml

●/etc/firewalld/services/tomcat.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
    <short>Tomcat (HTTP)</short>
    <description>Tomcat HTTP Server.</description>
    <port protocol="tcp" port="8080"/>
</service>

後は、firewalldにこのファイルを読み込ませ、サービスを再起動すればいい。

firewall-cmd --permanent --add-service=tomcat
systemctl restart firewalld

これで、firewalldの設定が完了した。
設定が無事追加されているかどうかは、以下のコマンドで確認する。

firewall-cmd --list-all
$ firewall-cmd --list-all
public (default, active)
  interfaces: ens192
  sources:
  services: dhcpv6-client ssh tomcat
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

4.接続

さて、実際にtomcatが動作している事を確認してみよう。
インストール先のホストの8080番ポートに対し、ブラウザでアクセスを行う。

無事、アクセスできることを確認した。