行う事
・EC2に、ApacheとApache Tomcatインストール
・ApacheとTomcatを連携
本記事のゴール
Apache経由のTomcatのテストページの表示
環境・インストールするもの
・OS:Amazon Linux 2 AMI (HVM) – Kernel 5.10, SSD Volume Type
インストール
・Apache/2.4.37
・Tomcat8.5
事前知識
環境構築手順
1.EC2にWEBサーバ Apacheをインストール
rootユーザになるに変更する
[ec2-user@ip-172-31-4-253 ~]$ sudo su -
[root@ip-172-31-4-253 ~]#
ウェブサーバとして動かすための Apache2.4インストール
[root@ip-172-31-4-253 ~]# yum install httpd -y
Apacheの 自動起動の設定
[root@ip-172-31-4-253 ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
自動起動の設定確認
[root@ip-172-31-4-253 ~]# systemctl is-enabled httpd
enabled
バージョン確認
[root@ip-172-31-4-253 ~]# httpd -version
Server version: Apache/2.4.52 ()
Server built: Dec 30 2021 21:40:08
Apacheのウェルカムページの確認
セキュリティグループにタイプ「HTTP」、ソースに「0.0.0.0/0」にを追加します。
EC2インスタンスのパブリックアドレスにアクセスします。
2.Tomcat8.5のインストール
amazon-linux-extrasコマンドでインストールできるパッケージの確認をします。
[root@ip-172-31-4-253 ~]# amazon-linux-extras | grep tomcat
23 tomcat8.5 available \
52 tomcat9 available [ =stable ]
Tomcatのインストール
amazon-linux-extras install tomcat8.5 -y
バージョン確認
[root@ip-172-31-4-253 ~]# tomcat version
Server version: Apache Tomcat/8.5.75
Server built: Feb 28 2022 18:26:53 UTC
Server number: 8.5.75.0
OS Name: Linux
OS Version: 5.10.102-99.473.amzn2.x86_64
Architecture: amd64
JVM Version: 17.0.2+8-LTS
JVM Vendor: Amazon.com Inc.
[root@ip-172-31-4-253 ~]# tomcat version
Server version: Apache Tomcat/8.5.75
Server built: Feb 28 2022 18:26:53 UTC
Server number: 8.5.75.0
OS Name: Linux
OS Version: 5.10.102-99.473.amzn2.x86_64
Architecture: amd64
JVM Version: 17.0.2+8-LTS
JVM Vendor: Amazon.com Inc.
Tomcatの起動
systemctl start tomcat
サーバー起動時にTomcatが自動で起動できるように設定
[root@ip-172-31-4-253 ~]# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
tomcatの構成ファイルの中にwebappsがインストールされていない為、以下のコマンドでwebappsをインストールします。また、管理用admin-webappsも合わせてインストールします。
yum install tomcat-webapps -y
yum install tomcat-admin-webapps -y
tomcatのページを確認
セキュリティグループの変更を行います。
タイプ:カスタムTCP
ポート:8080
ソース:0.0.0.0/0
[パブリックIPアドレス]:8080にアクセスをします。
ApacheとTomcatの連携
Apacheの設定:ajpモジュール(mod_proxy_ajp)の有効化の確認
/etc/httpd/conf.modules.d/00-proxy.conf にリバースプロキシに使われるモジュールの設定が記載されています。
以下の2文がコメントになっていないことを確認します。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
[root@ip-172-31-4-253 ~]#
[root@ip-172-31-4-253 ~]# vi /etc/httpd/conf.modules.d/00-proxy.conf
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
httpd.confのバックアップ
httpd.confを編集する前に、練習前のhttpd.confをバックアップします。
[root@ip-172-31-4-253 ~]# cd /etc/httpd/conf/
[root@ip-172-31-4-253 conf]# ll
total 28
-rw-r--r-- 1 root root 11910 Dec 30 21:39 httpd.conf
-rw-r--r-- 1 root root 13064 Dec 30 21:40 magic
[root@ip-172-31-4-253 conf]# cp -a httpd.conf httpd.conf.org
[root@ip-172-31-4-253 conf]# ll
total 40
-rw-r--r-- 1 root root 11910 Dec 30 21:39 httpd.conf
-rw-r--r-- 1 root root 11910 Dec 30 21:39 httpd.conf.org
-rw-r--r-- 1 root root 13064 Dec 30 21:40 magic
[root@ip-172-31-4-253 conf]#
httpd.confにProxyPassの設定を追記
httpd.conf の一番下にProxyPassおよびProxyPassReverseの設定を書き込みます。
[root@ip-172-31-4-253 conf]# vi httpd.conf
末尾に追記します。
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
Tomcatの設定
/etc/tomcat/server.xml ファイルを編集します。
・8009番ポートの記述のコメントアウトを解除。
・addressの記述の変更
・secretRequired=”false” を追記
[root@ip-172-31-4-253 conf]# cd
[root@ip-172-31-4-253 ~]# vi /etc/tomcat/server.xml
変更前
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
-->
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
変更後
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="8009"
redirectPort="8443"
secretRequired="false"
/>
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
再起動
[root@ip-172-31-4-253 ~]# systemctl stop httpd
[root@ip-172-31-4-253 ~]# systemctl stop tomcat
[root@ip-172-31-4-253 ~]# systemctl start httpd
[root@ip-172-31-4-253 ~]# systemctl start tomcat
連携の確認
EC2のパブリックアドレスにアクセスして、Apacheのホーム画面からTomcatのページに変更されていることを確認します。
はまった箇所
tomcatのページを確認で8080にアクセスした時
webappsがインストールされていない為、以下のコマンドを実行していなかった。
yum install tomcat-webapps -y
yum install tomcat-admin-webapps -y
Tomcatのserver.xml ファイルの編集
address=”::1″をaddress=”0.0.0.0″に変更していない為ページが表示されなかった。
参考サイト
・Apache HTTP ServerとApache Tomcatを連携させる
・Tomcatインストール
・ApacheとTomcatを連携させる