EC2でApacheとTomcatを連携させる

目次

行う事

・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を連携させる

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
目次
閉じる