Help us understand the problem. What is going on with this article?

備忘録 Apache2.4.6 - Tomcat 8.5.11 を連携してみた

More than 3 years have passed since last update.

初めてApacheとTomcatとの連携にチャレンジしてみた!

【環境】
OS: Cent OS 7.2
Apache : 2.4.6  ※ portは11080を指定しています
Tomcat : 8.5.11

事前に、 firewall-cmdを用いて、11080やApacheのポート8080は解放しています

サンプルアプリの確認

1.サンプルアプリをダウンロード
  とりえずサンプルアプリを動かしてみたいので、以下のURLからダウンロード。
  ※sample.warファイル
  
  http://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/

  2017032901.JPG

2.サンプルアプリケーションをサーバー上に配置
  Tomcatのインストールディレクトリ内にある webappディレクトリに配置。
  今回は、/usr/local/apache-tomcat-8.5.11/webappsディレクトリ

3.ファイルのオーナーを変更
  この環境はtomcatユーザーで起動するため、配置したファイルをtomcatユーザーに変更。

$ sudo chown tomcat.tomcat sample.war
$ ls
ROOT  docs  examples  host-manager  manager  sample  sample.war
$ ls -l
合計 16
drwxr-x---.  3 tomcat tomcat 4096  3 23 20:39 ROOT
drwxr-x---. 14 tomcat tomcat 4096  3 23 20:39 docs
drwxr-x---.  6 tomcat tomcat   78  3 23 20:39 examples
drwxr-x---.  5 tomcat tomcat   82  3 23 20:39 host-manager
drwxr-x---.  5 tomcat tomcat   97  3 23 20:39 manager
drwxr-x---.  5 tomcat tomcat   81  3 29 10:08 sample
-rw-r--r--.  1 tomcat tomcat 4606  3 29 10:02 sample.war

 
4.ファイルを展開
  jarコマンドで、サンプルアプリを展開する。

$ jar -xvf sample.war
  META-INF/が作成されました
 META-INF/MANIFEST.MFが展開されました
  WEB-INF/が作成されました
  WEB-INF/classes/が作成されました
  WEB-INF/classes/mypackage/が作成されました
  WEB-INF/lib/が作成されました
  images/が作成されました
 WEB-INF/classes/mypackage/Hello.classが展開されました
 WEB-INF/web.xmlが展開されました
 hello.jspが展開されました
 images/tomcat.gifが展開されました
 index.htmlが展開されました
$ ls
META-INF  ROOT  WEB-INF  docs  examples  hello.jsp  host-manager  images  index.html  manager  sample  sample.war

5.Webブラウザでの確認
  Webブラウザより http://IPアドレス:8080/sample/ へアクセスする。
  以下のような画面が表示される。

2017032902.JPG

Tomcat上での設定(確認)

apacheとtomcatを連携するためには、ajpモジュールが必要となる。
Tomcatのインストールディレクトリ内にある confディレクトリにあるserver.xmlで以下の記述があることを確認する。
※ 今回は、/usr/local/apache-tomcat-8.5.11/conf/server.xmlファイルの確認

server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Apache上の設定

1.LoadModuleの設定
  apacheとtomcatを連携するために、LpadModuleの設定が必要となる。
  以前は httpd.confに記述されていたが、 今回のバージョンでは、httpd.confファイルにへ記述されていない。
  /etc/httpd/conf.modules.dディレクトリに、モジュールをロードするためのconfファイルが存在するため、必要に応じて記述を行う。

  今回、必要となる記述は以下の2つとなる。 

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

  これらの記述は、00-proxy.confファイルにすでに記述されているため、今回は追記の必要はない。

# grep proxy *conf
00-proxy.conf:# This file configures all the proxy modules:
00-proxy.conf:LoadModule proxy_module modules/mod_proxy.so
00-proxy.conf:LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

2.extraディレクトリの作成
  /usr/httpd/confディレクトリ内に、extraディレクトリを作成する。

# pwd
/etc/httpd/conf
# mkdir extra
# ls
extra  httpd.conf  httpd.conf.20170322  httpd.conf.rpmsave  magic

3.httpd-proxy.confファイルの作成
  extraディレクトリ内に、httpd-proxy.confファイルを作成する。
  このファイルに、ajpの設定内容を記述する。

ProxyPass /sample/ ajp://192.168.56.106:8009/sample/

  これによりApacheへきたリクエストが ajpモジュールが、8009ポートで、Tomcat上のsampleアプリを呼び出す。
  また、このポートはTomcatのserver.xmlファイルでajp連携の設定を確認したときのポートっ番号である。

4.httpd.confファイルの編集
  先ほど作成したファイルをApacheが読み込むために、httpd.confファイルの末尾に、以下の内容を追記する。

Include /etc/httpd/conf/extra/httpd-proxy.conf

5.Apacheを再起動
  Apacheの設定変更を反映するため、再起動する。

$ sudo systemctl restart httpd

Webブラウザでアクセス

Apache経由で、サンプルアプリへ接続する。

http://IPアドレス:11080/sample/

Apache経由でアクセスできた!

2017032903.JPG

よかった、よかった。

brighton0725
中年。 最近ChefとかOSSはじめる。 自分の備忘録的なメモとして残している。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした