LoginSignup
1
0

More than 1 year has passed since last update.

WindowsでApacheとTomcatを連携させてwarファイルをデプロイする

Posted at

はじめに

APIを作成してデプロイした際に躓いたので、投稿します。
連携とは具体的にApache側で受け取ったHTTPリクエストをリバースプロキシでTomcatに投げます。

環境

  • Windows10
  • Java JDK 1.8.0.222
  • Apache HTTP Server 2.4.56
  • Tomcat 9.0.73
    ※インストール方法は省略します。私はC:ドライブ直下にファイルを置きました。

Apacheの設定

以下の設定ファイルを編集します。
C:¥Apache24¥conf¥httpd.conf

リバースプロキシ用のモジュールを有効化

以下の2文がコメントアウトされているので、#を外して有効にしましょう。

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

リバースプロキシの設定

末尾に以下を追加します。

httpd.conf
...
ProxyPass /{リクエストパス} ajp://localhost:8009/{コンテキスト名}
ProxyPassReverse /{リクエストパス} ajp://localhost:8009/{コンテキスト名}

警告
Tomcatでデプロイするとwarファイル名がそのままコンテキスト名になります。

warファイル名がsample.warであればsampleがコンテキスト名です。
リクエストパスを/apiとしたければ以下のようになります。

httpd.conf
...
ProxyPass /api ajp://localhost:8009/sample
ProxyPassReverse /api ajp://localhost:8009/sample

私はここの設定を誤って、躓きました;;

デフォルトのポート番号を変更(任意)

Apacheでデフォルトのポート番号は80番なのですが、

httpd.conf
...
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
...

私のWindowsでは何かのシステムに占有されていたので8080に変更しました。

httpd.conf
...
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 8080
...

以上で「http://localhost:8080/apiのリクエストが来たら8009番ポートに投げる」設定ができました!

次に、Tomcatで8009番ポートの接続設定を行います。

Tomcatの設定

以下の設定ファイルを編集します。
C:¥apache-tomcat-9.0.73¥conf¥server.xml

8080番ポートの停止

以下の記述をコメントアウトします。

server.xml
...
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8443" />
-->
...

8009番ポートでの接続設定

以下の文字列を追加します。コメントアウトした部分の直後に追加しました。

server.xml
...
<Connector protocol="AJP/1.3" 
address="::1"
port="8009" 
protocol="HTTP/1.1" 
secretRequired="false"
redirectPort="8443" />
...

以上で8009番ポートでAJP通信を受け付けることができます!

Tomcatへのデプロイ

以下にwarファイルを配置してTomcatを起動します。
C:¥apache-tomcat-9.0.73¥webapps
デプロイの詳細に関しては省略します。

まとめ

WindowsでApacheとTomcatを連携する方法でした。
Linuxの記事が多かったり、記事自体が古かったりしたので更新する意味を込めて書きました。

リバースプロキシの設定は、リクエストパスとコンテキスト名に注意してください。
私はこの部分を適当に流していました。コンテキスト名でリクエストを送り続け、長い時間”NotFound”状態でした(応答も解決策も)。いっそのこと同じ名前ににしてしまうのもアリかと思います!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0