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」ファイルを作成する。
(別に任意の場所でいいんだけど、とりあえず作成した。)

bash
mkdir /opt/java cd /opt/java

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

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

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

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

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

bash
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

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

bash
echo $JAVA_HOME

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

shell
$ echo $JAVA_HOME /opt/java

2.Tomcatのインストール

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

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

bash
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」を作成する。

bash
mkdir /opt/tomcat cd /opt/tomcat

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

bash
tar xzvf apache-tomcat-7.0.59.tar.gz

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

bash
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」ファイルを生成する。

bash
vim /etc/init.d/tomcat

●/etc/init.d/tomcat

bash
#!/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」作成後、以下のコマンドを実行しパーミッション、自動起動設定を行う。

bash
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」ファイルを生成する。

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

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

bash
[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

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

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

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

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

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

bash
service start tomcat

もしくは

bash
systemctl start tomcat

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

bash
ps -ef | grep [t]omcat

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

shell
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自体を停止してしまう。

bash
systemctl disable firewalld systemctl stop firewalld

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

bash
vim /etc/firewalld/services/tomcat.xml

●/etc/firewalld/services/tomcat.xml

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にこのファイルを読み込ませ、サービスを再起動すればいい。

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

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

bash
firewall-cmd --list-all
shell
$ 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番ポートに対し、ブラウザでアクセスを行う。

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