Tomcat9.0.37(CentOS8.2 2004)
2020/8/7
概要
Apache Tomcat 9.0.31以降、server.xmlとproxy_ajp.confの記述に変更があったらしい。
Tomcat 9.0.30のつもりで設定すると
- http://localhost:8080/でTomcat Topベージが表示できる
- http://localhost/でTomcat Topベージが表示できない。Server Unavailable(エラーコード503)になる。

ログを見るとproxy_ajpの連携に失敗している。/var/log/http/error_logをみてもAJPのエラー程度にしか記述がない。
インストール
おおまかな流れはTomcat 9.0.30と同じであるので、詳細は省略する。
最新版Tomcat(Tomcat9.0.37)をhttp://tomcat.apache.org/からを入手し、いろいろ作業をすることとした。
作業手順は、前回同様
- httpdをインストール
いろいろ設定し、httpdの動作を確認
- tomcatを使うために必要な道具をインストール
java実行環境の動作を確認
- ユーザtomcatを作成
- tomcatをダウンロード
tomcatの動作をテストページで確認
- コンテナを記述
myappの動作を確認
- コンテナを記述
myappの動作を確認
- OS起動時にTomcatの扱いを記述
になる。
Apache httpd インストール
Apache httpdをインストールする。
dnf -y install httpd
dnf -y install pwgen;#後でパスワード生成時に使用
/etc/httpd/conf/httpd.confを修正する。
修正前 | 修正後 |
ServerAdmin root@localhost | 連絡先に修正 |
ServerName ... | ServerName www.takahashi.lab:80 |
AllowOverride ... | <Directory "/var/www/html">中
AllowOverride All
|
ScriptAlias ... | CGIを使用しないのでコメントアウト# ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
|
< Directory ... | 上記修正に合わせてコメントアウト#<Directory "/var/www/cgi-bin">
# AllowOverride None
# Options None
# Require all granted
#</Directory> |
| # 最終行に追記
# サーバーの応答ヘッダ
ServerTokens Prod
# キープアライブオン
KeepAlive On |
各ユーザのディレクトリを有効にする。
/etc/httpd/conf.d/userdir.confを編集する。
# UserDir disabled
UserDir public_html
Apache 動作確認(1)
テストページ(/var/www/html/index.html)を作成し、Apacheを起動する。
firewall-cmd --list-all ;#httpがないことを確認
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
systemctl start httpd
systemctl enable httpd
Apache Tomcat9.0.37 インストール
Tomcatを使うにあたり、java実行環境(JRE)が必要となる。
dnf install -y java-11-openjdk java-11-openjdk-devel java-11-openjdk-headless java-11-openjdk-javadoc java-11-openjdk-jmods
java -version
javac -version
Tomcat9.0.37をダウンロードする。
mkdir -p ~/Downloads;cd ~/Downloads
wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz
tar xvzf apache-tomcat-9.0.37.tar.gz
mv apache-tomcat-9.0.37 /usr/tomcat
mkdir -p /usr/tomcat/webapps/ROOT/WEB-INF/classes
useradd -M -d /usr/tomcat tomcat
chown -R tomcat:tomcat /usr/tomcat/
#Tomcatが動的に生成するファイルのパーミッションを750にする。
su - tomcat
echo '#!/bin/sh' > /usr/tomcat/bin/setenv.sh
echo "UMASK=0022" >> /usr/tomcat/bin/setenv.sh
chmod 750 /usr/tomcat/bin/setenv.sh ;chown tomcat:tomcat /usr/tomcat/bin/setenv.sh
/usr/tomcat/bin/startup.sh;#systemctlなしでtomcatを起動/停止できることを確認,あわせてlogをつくる
sleep 10;
/usr/tomcat/bin/shutdown.sh;#
chown -R tomcat:tomcat /usr/tomcat/;#logの所有者をtomcatに変更
systemctl用にtomcat.serviceをつくる。
起動セッションにtomcatを追加するためにこれが必要になる。
#cat /usr/lib/systemd/system/tomcat.service
#tomcat.service
# 新規作成
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/tomcat/bin/startup.sh
ExecStop=/usr/tomcat/bin/shutdown.sh
RemainAfterExit=yes
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
systemctlで動作を確認する。自動起動するようにenableをにつける。
getenforce;# SELinuxの状態を確認 Enforcingなら startup.shは拒否される
setenforce 0;# SELinuxの状態をPermissiveに変更
systemctl start tomcat;systemctl status tomcat;
systemctl enable tomcat;#起動セッションにtomcatを追加
systemctl stop tomcat;systemctl status tomcat;
systemctl start tomcat;
Tomcat9.0.37 動作確認(1)
ポート8080はfirewall-cmdで許可していないので、アクセスはlocalhostに限定される。
webブラウザでhttp://localhost:8080/にアクセスし、Tomcatの動作を確認する。
Tomcat9.0.37 動作確認(2)
tomcat top pageが開いたので、JSPを1つつくる。
cat /usr/tomcat/webapps/ROOT/hello.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>Hello JSP</title>
</head>
<%
String msg = "Hello, JSP !!!" ;
%>
<body>
<h1><%= msg %></h1>
</body>
</html>
webブラウザでhttp://localhost:8080/hello.jspにアクセスし、動作を確認する。
Tomcat9.0.37 動作確認(3)
ポート8080を使わず、webserverの一部としてtomcatを動かす。
tomcat top pag(index.jsp)とhello.jspは別々なURIにする。
パスワードは長い文字列なんでもよいが、それらしくpwgenでパスワードをつくってみた。
#パスワード生成
pwgen 16 1
#proxy_ajp.confをつくる
vi /etc/httpd/conf.d/proxy_ajp.conf
vi /usr/tomcat/conf/server.xml
systemctl restart tomcat httpd
/etc/httpd/conf.d/proxy_ajp.confを修正
secret=にpwgenで生成したパスワードをつける。パスワードにダブルクォート"は不要
<Location /tomcat/>
ProxyPass ajp://localhost:8009/ secret=Vahch5aih9aeshae
</Location>
<Location /hello/>
ProxyPass ajp://localhost:8009/hello.jsp secret=Vahch5aih9aeshae
</Location>
/usr/tomcat/conf/server.xmlを修正
パスワードにダブルクォート"が必要
修正前 | 修正後 |
#AJP 1.3 Connectorがコメントアウトされている <!-- から -->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
-->
|
#secret=にpwgenで生成したパスワードをつける。パスワードにダブルクォート"が必要
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="127.0.0.1"
port="8009"
redirectPort="8443"
secret="Vahch5aih9aeshae" />
|
webブラウザで
http://localhost/以下にアクセスし、それぞれの動作を確認する。
http://webserver.takahashi.lab/tomcat/

http://webserver.takahashi.lab/hello/
