77Lifeworkベータ版

77Lifeworkベータ版

IT関係の話をメインとして、その他私の趣味や雑記用のブログです。ここに書いた内容が少しでも参考になれば嬉しいです。

ApacheとTomcatを連携させる方法

はじめに

ここでは、Linuxサーバ(CentOS)上にインストールしたApacheTomcatを連携させ、Apacheで受けた通信をTomcatに転送する方法を書いていきます。

構成情報

CentOS 7.7(1908)
Apache 2.4.43
Tomcat 9.0.34

Apacheの設定

Apache側で転送用のモジュールを有効化します。ここではApacheのインストールディレクトリが「/opt/httpd-2.4.43」である場合について書いていますので、適宜読み替えてください。

まずは「/opt/httpd-2.4.43/conf/httpd.conf」をテキストエディタで開き、以下が記述されている行のコメントアウトをはずして有効化します。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

f:id:J-back:20200503204646p:plain:w600

次に、Apacheが受けたリクエストの転送先を設定をするため「/opt/httpd-2.4.43/conf/extra」ディレクトリの「httpd-proxy.conf」を編集します。
「extra」ディレクトリや「httpd-proxy.conf」ファイルがない場合は作成しましょう。
httpd-proxy.conf」をテキストエディタで開き、以下を追記して保存します。
以下のように記載すると、Apacheへの全てのリクエストをajpによって192.168.1.12のポート8009に転送できます。

ProxyPass / ajp://localhost:8009/

このファイルをApacheに読み込ませるために「/opt/httpd-2.4.43/conf/httpd.conf」をテキストエディタで開き、以下を追記します。

Include conf/extra/httpd-proxy.conf

f:id:J-back:20200503213602p:plain:w600

以上でApache側の設定は終わりです。

Tomcatの設定

ここでのTomcatのインストールディレクトリは「/opt/tomcat-9.0.34」として進めます。
「/opt/tomcat-9.0.34/conf/server.xml」をテキストエディタで開き、以下から始まる記述を探します。

<Connector protocol="AJP/1.3"・・・

ここで指定されているポートが「port="8009"」となっていることを確認しましょう。
上記がコメントアウトされている場合、コメントアウトをはずして有効化しておきます。
f:id:J-back:20200503220138p:plain:w600

ここまでできたらTomcatApacheをそれぞれ再起動します。
ブラウザから80番ポートへアクセスするとTomcatへ転送されるようになります。

しかし、この状態でブラウザからアクセスして表示される画面はエラーとなってしまいます。
f:id:J-back:20200503220625p:plain:w600

エラーとなる原因を調べるため、Apacheのログファイルを見てみます。
「/opt/httpd-2.4.43/logs」にある「error_log」を開きましょう。
Connection refusedとなっていて、ajpでうまく転送できていないようです。

AH00957: AJP: attempt to connect to 192.168.1.12:8009 (192.168.1.12) failed
AH00896: failed to make connection to backend: 192.168.1.12

Tomcatの起動ログを確認してみます。「/opt/tomcat-9.0.34/logs/catalina.out」を開くと、以下のようにajpに関するメッセージが出ています。

The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.

secretRequiredをfalseにすることで対応します。
「/opt/tomcat-9.0.34/conf/server.xml」をテキストエディタで開き、ajpのConnectorの部分に「secretRequired="false"」を追記します。
f:id:J-back:20200504005112p:plain:w600

Tomcatを再起動後、ブラウザで80番ポートにアクセスすると、Tomcatの画面が表示されました。
f:id:J-back:20200504005249p:plain:w600

これでApacheからTomcatへの通信転送設定は完了です。