はじめに
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/
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認証が動作しています。
tomcatに/usr/tomcat9/conf/tomcat-users.xmlにて設定したユーザとパスワードを入力してログインしました
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のサービスの起動に失敗する可能性があるため