0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CentOS7 に Apache Tomcat 9 を手動インストールする手順まとめ(Vault対応)

Last updated at Posted at 2025-07-19

はじめに

CentOS7 tomcatインストールをしてみました。

前提条件

Virtualbox CentOS7のゲストOSを作成

作業概要

CentOS7 に Apache Tomcat 9.0.96 を導入した

OpenJDK 1.8.0 を yum(JAIST Vaultリポジトリ)からインストール

systemd によるサービス化まで対応

参考サイト

/etc/yum.repos.d配下にCentOS--valut用のリポジトリを作成

[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]# ls -tlr
合計 4
-rw-r--r--. 1 root root 586  7月 19 22:54 CentOS--valut.repo
drwxr-xr-x. 2 root root 248  7月 19 23:09 disable
[root@localhost yum.repos.d]#

JAISTミラーを使用

[root@localhost yum.repos.d]# cat CentOS--valut.repo
[vault-base]
name=CentOS-7 Vault Base
baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/7.9.2009/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[vault-updates]
name=CentOS-7 Vault Updates
baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/7.9.2009/updates/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[vault-extras]
name=CentOS-7 Vault Extras
baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/7.9.2009/extras/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[root@localhost yum.repos.d]#

YUMが保持しているキャッシュをすべて削除&すべての有効なリポジトリからパッケージ情報を取得してキャッシュ化

[root@localhost yum.repos.d]# yum clean all && sudo yum makecache
読み込んだプラグイン:fastestmirror
リポジトリーを清掃しています: vault-base vault-extras vault-updates
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
vault-base                                                                                                 | 3.6 kB  00:00:00
vault-extras                                                                                               | 2.9 kB  00:00:00
vault-updates                                                                                              | 2.9 kB  00:00:00
(1/10): vault-base/x86_64/group_gz                                                                         | 153 kB  00:00:15
(2/10): vault-base/x86_64/primary_db                                                                       | 6.1 MB  00:00:16
(3/10): vault-base/x86_64/filelists_db                                                                     | 7.2 MB  00:00:39
(4/10): vault-base/x86_64/other_db                                                                         | 2.6 MB  00:00:09
(5/10): vault-extras/x86_64/filelists_db                                                                   | 305 kB  00:00:15
(6/10): vault-extras/x86_64/other_db                                                                       | 154 kB  00:00:00
(7/10): vault-extras/x86_64/primary_db                                                                     | 253 kB  00:00:16
(8/10): vault-updates/x86_64/filelists_db                                                                  |  15 MB  00:01:50
(9/10): vault-updates/x86_64/other_db                                                                      | 1.6 MB  00:00:05
(10/10): vault-updates/x86_64/primary_db                                                                   |  27 MB  00:02:46
メタデータのキャッシュを作成しました

jdkインストール

# yum -y install java-1.8.0-openjdk-devel

apache-tomcat-9.0.17をダウンロードする

# cd /usr/local/src

# wget -4 https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.96/bin/apache-tomcat-9.0.96.tar.gz

apache-tomcat-9.0.96.tar.gzを展開する

# tar xvzf apache-tomcat-9.0.96.tar.gz

/usr/local/src/apache-tomcat-9.0.96を/usr/tomcat9へリネームする

# mv apache-tomcat-9.0.96 /usr/tomcat9

環境変数設定

[root@localhost src]#
[root@localhost src]# cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/tomcat9
export CATALINA_BASE=/usr/tomcat9

環境変数読み込み

# source /etc/profile.d/tomcat.sh

Tomcat のバージョン情報と環境設定を表示するスクリプト
※Tomcatをダウンロードしたらもともと入っているスクリプト「/usr/tomcat9/bin/version.sh」です

# /usr/tomcat9/bin/version.sh

Using CATALINA_BASE:   /usr/tomcat9
Using CATALINA_HOME:   /usr/tomcat9
Using CATALINA_TMPDIR: /usr/tomcat9/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/tomcat9/bin/bootstrap.jar:/usr/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Server version: Apache Tomcat/9.0.96
Server built:   Oct 3 2024 19:44:30 UTC
Server number:  9.0.96.0
OS Name:        Linux
OS Version:     3.10.0-1160.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_412-b08
JVM Vendor:     Red Hat, Inc.

ホームディレクトリを作成せずに/usr/tomcat9をホームディレクトリとしてtomcatユーザを作成する

# useradd -M -d /usr/tomcat9 tomcat

/usr/tomcat9の配下の所有ユーザと所有グループをtomcatとする

chown -R tomcat:tomcat /usr/tomcat9

tomcat9を起動

[root@localhost src]# $CATALINA_HOME/bin/startup.sh
Using CATALINA_BASE:   /usr/tomcat9
Using CATALINA_HOME:   /usr/tomcat9
Using CATALINA_TMPDIR: /usr/tomcat9/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/tomcat9/bin/bootstrap.jar:/usr/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

tomcat9を停止

[root@localhost src]# $CATALINA_HOME/bin/shutdown.sh
Using CATALINA_BASE:   /usr/tomcat9
Using CATALINA_HOME:   /usr/tomcat9
Using CATALINA_TMPDIR: /usr/tomcat9/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/tomcat9/bin/bootstrap.jar:/usr/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:

systemdユニットファイル作成

# vi /usr/lib/systemd/system/tomcat9.service

[Unit]
Description=Apache Tomcat Servlet Container
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
ExecStart=/usr/tomcat9/bin/startup.sh
ExecStop=/usr/tomcat9/bin/shutdown.sh
KillMode=none

[Install]
WantedBy=multi-user.target

tomcat9サービスを自動起動して起動する

systemctl enable tomcat9
systemctl start tomcat9

tomcat9サービスが起動したことを確認する

[root@localhost logs]# systemctl status tomcat9.service
● tomcat9.service - Apache Tomcat Servlet Container
   Loaded: loaded (/usr/lib/systemd/system/tomcat9.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2025-07-20 00:02:49 JST; 5s ago
  Process: 10610 ExecStart=/usr/tomcat9/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 10624 (java)
   CGroup: /system.slice/tomcat9.service
           mq10624 /usr/bin/java -Djava.util.logging.config.file=/usr/tomcat9/conf/logging.properties -Djava.util.logging.manag...

 7月 20 00:02:49 localhost.localdomain systemd[1]: Starting Apache Tomcat Servlet Container...
 7月 20 00:02:49 localhost.localdomain systemd[1]: Started Apache Tomcat Servlet Container.

httpsとhttpと8080ポートを許可した

# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-service=https
# firewall-cmd --permanent --add-port=8080/tcp

ファイアウォールを反映させる
# firewall-cmd --reload

以下のURLにてブラウザでアクセスする

http://サーバのIPアドレス:8080/

image.png

Basic 認証を設定

以下のサイトを参考にしました。
https://qiita.com/KOJI-YAMAMOTO/items/c1dd9ad924ba197a9a79

/usr/tomcat9/conf/web.xmlにBasic認証の設定を追加

行末の上に追加する
先頭の+が追加した行です。

[root@localhost conf]# diff -u /usr/tomcat9/conf/web.xml_org /usr/tomcat9/conf/web.xml
--- /usr/tomcat9/conf/web.xml_org       2024-10-04 04:44:30.000000000 +0900
+++ /usr/tomcat9/conf/web.xml   2025-07-20 22:47:40.068879089 +0900
@@ -4749,4 +4749,23 @@
         <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>

+    <security-constraint>
+      <web-resource-collection>
+       <web-resource-name>User Basic Auth</web-resource-name>
+       <url-pattern>/*</url-pattern>
+     </web-resource-collection>
+     <auth-constraint>
+       <role-name>role1</role-name>
+     </auth-constraint>
+    </security-constraint>
+
+    <login-config>
+      <auth-method>BASIC</auth-method>
+      <realm-name>User Basic Auth</realm-name>
+    </login-config>
+   <security-role>
+     <role-name>role1</role-name>
+   </security-role>
+
+
 </web-app>

xmlを文法チェックするためにxmllint(libxml2)をインストールする

#  yum install -y libxml2

/usr/tomcat9/conf/web.xmlの文法チェックする
リターンコードで正常の0が返ってくること


#  xmllint --noout /usr/tomcat9/conf/web.xml
#  echo $?
# 0

/usr/tomcat9/conf/tomcat-users.xmlにユーザとパスワード情報を設定

先頭の+が追加した行です

[root@localhost conf]# diff -u /usr/tomcat9/conf/tomcat-users.xml_org /usr/tomcat9/conf/tomcat-users.xml
--- /usr/tomcat9/conf/tomcat-users.xml_org      2024-10-04 04:44:30.000000000 +0900
+++ /usr/tomcat9/conf/tomcat-users.xml  2025-07-20 22:49:05.041634227 +0900
@@ -52,5 +52,9 @@
   <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
   <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
   <user username="role1" password="<must-be-changed>" roles="role1"/>
+
 -->
+<role rolename="role1"/>
+<user username="sample" password="test" roles="role1"/>
+
 </tomcat-users>

/usr/tomcat9/conf/tomcat-users.xmlの文法チェックをする 
リターンコードで正常の0が返ってくること

# xmllint --noout /usr/tomcat9/conf/tomcat-users.xml
# echo $?
# 0

構文チェックの失敗パターンを試してみました

<5userの誤った文としました。 正しくは<userです

<role rolename="role1"/>
<5user username="sample" password="test" roles="role1"/>

エラー文が出力されます

[root@localhost conf]# xmllint --noout /usr/tomcat9/conf/tomcat-users.xml
/usr/tomcat9/conf/tomcat-users.xml:59: parser error : StartTag: invalid element name
<5user username="sample" password="test" roles="role1"/>
 ^

ブラウザにてtomcatにアクセスするとユーザとパスワードを求められた

Basic認証が動作しています。

image.png

tomcatに/usr/tomcat9/conf/tomcat-users.xmlにて設定したユーザとパスワードを入力してログインしました

image.png

OSに入ってtomcatのバージョンを確認してみた

環境変数を確認
CATALINA_HOMEに現在使用しているtomcatのパスが設定してあります。

# env | grep CATA
CATALINA_HOME=/usr/tomcat9
CATALINA_BASE=/usr/tomcat9

現在のtomcatのバージョンを確認するコマンド

# cat $CATALINA_HOME/RELEASE-NOTES | grep "Apache Tomcat Version"
                     Apache Tomcat Version 9.0.96

環境によっては以下のファイルでもtomcatのバージョンを確認できます。
本記事の環境ではVERSION.txtがないため、バージョンを確認することが出来ませんでした

# cat $CATALINA_HOME/VERSION.txt

まとめ

CentOS 7 に Apache Tomcat をインストールしました。
今回特に苦労した点は、CentOS 7 がすでにサポート終了(EOL)となっており、標準のリポジトリが利用できなかったことです。パッケージのインストールがうまくいかず苦戦しましたが、参照リポジトリを Vault(JAIST ミラー)に切り替えることで無事解決しました。

Tomcat は他の一般的なサービス(nginx や httpd など)と比べて構成がやや複雑で、Java 環境の準備や systemd サービス化の作業が必要です。ただし、一つひとつの手順を丁寧に確認しながら進めれば、安定して構築できます。

tomcatは基本的にはxmlファイルで構成されています。一部シェルなどのファイルが含まれる場合もあります。

Tomcatのサービスを再起動前にxml構文チェック「xmllint 」は実施した方が良いです。
文法エラーでTomcatのサービスの起動に失敗する可能性があるため

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?