[101]さくらVPSに挑戦5、Apache2.4とTomcat8連携

Apache2.4とTomcat8を連携させる

ありがとう!!!引き続き!!!!

 

Tomcat8のインストールが終わったので、今度は、ApacheTomcatの連携です。

ApacheTomcatを連携する理由はグーグル先生に聞けば色々と出てきますが、アクセスしたときにポート番号(8080とか)見えるのはなんだかダサいですよね。(はい。。。。。)

今回はこれを無くします。(よろしくお願いします。!!)

ajpモジュールによる連携

今回、ApacheTomcatを連動させるには、ajpモジュールを使います。

/opt/tomcat/apachetomcat-8.5.4/conf/server.xml

<!– Define an AJP 1.3 Connector on port 8009 –>
<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />

という記述があるか確認してください。(たぶんあると思います。なければ追加。)

(はい、あります!!!!)

 

次に、/opt/httpd/httpd-2.4.23/modules

mod_proxy.so
mod_proxy_ajp.so

があるかを確認してください。(たぶんあると思います。)

(はい、あります!!!!)

次に、/opt/httpd/httpd-2.4.23/conf/httpd.confを編集します。

このファイルのどこかに、以下のような記述があると思います。

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

もし、この行の先頭に#がついているのでしたら、削除してください。#はコメントアウトを意味するので、#があると、この二つのモジュールを使うことができません。

 

次にajpを使ってApacheからTomcatに飛ばすための設定をします。

この設定は、httpd.confに記述すればいいのですが、httpd.confには直接記述せず、外部に記述することが推奨されているようですし、多くの解説サイトでもそう解説しています。

まず、/opt/httpd/httpd-2.4.23/conf/の中に、extraディレクトリはあるでしょうか。なければ作成してください。(大丈夫!あります!)

extraディレクトリの中に、httpd-proxy.confというファイルを作ります。このhttpd-proxy.confというファイルにajpの設定を記述しますが、まだ中身は何もなくて構いません。ここで一旦、/opt/httpd/httpd-2.4.12/conf/httpd.confの編集に戻りましょう。

 

/opt/httpd/httpd-2.4.23/conf/httpd.confの最下部に、以下の1行を追加してください。

Include /opt/httpd/httpd-2.4.23/conf/extra/httpd-proxy.conf

これは、先ほど作った/opt/httpd/httpd-2.4.23/conf/extra/httpd-proxy.confファイルを読み込みますよということを意味します。これで、httpd-proxy.confに書かれた内容が、httpd.confに書かれたかのように振舞います。

そして、ajpの設定をhttpd-proxy.confに記述します。httpd-proxy.confに以下の1行を書き加えてください。

ProxyPass /examples/ ajp://localhost:8009/examples/

ajp://localhost:8009/examples/に移しますという意味です。それで、ajpモジュールが8009ポートでTomcatを呼び出します。最初に確認したserver.xmlの設定ですね。それで/examples/ですが、これは、Tomcatのwebappsの中(私の例では、/opt/tomcat/apachetomcat-8.5.4/webapps)に入っていて、Tomcatで使われるWebアプリは、この中に格納していくわけですが、サンプルとして、あらかじめ、examplesというのが入っているわけですね。

 

そして、今、ApacheTomcatが起動している人は、この設定を有効にするため、ApacheTomcatを再起動してください。

 

Tomcatの終了は、

/opt/tomcat/apachetomcat-8.5.4/bin/shutdown.sh

Apacheの終了は、

/opt/httpd/httpd-2.4.23/bin/apachectl stop

Tomcatの起動は、

/opt/tomcat/apachetomcat-8.5.4/bin/startup.sh

Apacheの起動は、

/opt/httpd/httpd-2.4.23/bin/apachectl start

になります。(パスは各自の環境に合わせてください、、、と)

 

http://160.16.50.187/examples/

にアクセスすると次のような画面が出れば、ここまでは正しく設定できています。(localhostの所は、適宜ご自身のIPアドレスなどに変えてください)ポート番号8080つけずとも、Tomcatのページが表示されました。

(やった!!!!!!)

Capture_2016_08_04_23_16_06_822

 

 

Apache2.4とTomcat8を連携させてWebSocket接続をする

で、ここまでは、他のサイトにも書いてありますし、そんなに問題なくできます。(最初はそれなりに苦労しますが、、、はい、しました!!)

次のWebSocketが問題です。先ほど表示したTomcatのExamplesのページにWebSocket Examplesがあります。それをこのまま使ってみます。

http://localhost/examples/の画面でWebSocket Examplesをクリックします。

 

4つのサンプルが出てきました。適当にどれかクリックして遊んでみてください。

WebSocket connection closedなどという文字が出て、WebSocket接続ができていないことが確認できます。

http://localhost:8080/examples/websocket/

のように8080ポートを明示的につけて、同様に4つのサンプルのうちのどれかで遊んでみてください。こんどはWebSocket connection openedなどというのがでて、正しく動くと思います。

つまり、ajpモジュールでは、WebSocketが動作しないわけです。

(へえ、、、、なじぇ???)

そして、いよいよ、Apache経由でもWebSocket接続が出来るようにします。

まずは、/opt/httpd/httpd-2.4.23/modulesに、

mod_proxy_wstunnel.so

があるかどうか確認してください。WebSocket接続をするには、このモジュールが必要です。wstunnelとはWebSocketTunnelを意味すると思われます。

そして、このモジュールを使うために、/opt/httpd/httpd-2.4.23/conf/httpd.confを編集します。httpd.confを開いて、

LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

と書かれているところを探してください。おそらく、この文字列が書かれている先頭には#がついていると思います。この#を外して、モジュールを使うように設定を変えます。

次に、wstunnelを使うための設定を、/opt/httpd/httpd-2.4.23/conf/extra/httpd-proxy.confに記述します。現在、httpd-proxy.confには次の1行のみが書かれていると思います。

ProxyPass /examples/ ajp://localhost:8009/examples/]

この行のに、

ProxyPass /examples/websocket/ ws://localhost:8080/examples/websocket/
ProxyPassReverse /examples/websocket/ ws://localhost:8080/examples/websocket/

を付け加えてください。

。/examples/websocket/で呼ばれたものは、ws://localhost:8080/examples/websocket/に渡しますよということを意味しています。これをwstunnelモジュールがやってくれます。

ProxyPass /examples/websocket/ ws://localhost:8080/examples/websocket/
ProxyPassReverse /examples/websocket/ ws://localhost:8080/examples/websocket/
ProxyPass /examples/ ajp://localhost:8009/examples/

の順番になります。(ProxyPassReverseは最後でも良いですが、ProxyPassの順番は変えないでください)

……………….と。

この設定をしたのち、ApacheTomcatを再起動します。コマンドは覚えていますか?

いえ、、、、

コピーします。。。。。。。

Tomcatの終了は、

/opt/tomcat/apachetomcat-8.5.4/bin/shutdown.sh

Apacheの終了は、

/opt/httpd/httpd-2.4.23/bin/apachectl stop

Tomcatの起動は、

/opt/tomcat/apache-tomcat-8.5.4/bin/startup.sh

Apacheの起動は、

/opt/httpd/httpd-2.4.23/bin/apachectl start

 

上で、ajpの設定をした時に書いてあるので、参考にしてください。

そして、再度、

http://160.16.50.187/examples/

にアクセスしてください。たとえば、Echo exampleだと、次のような応答になるかと思われます。

Multiplayer snake exampleとMultiplayer drawboard exampleも遊んでみてください。動くと思います。(操作の説明は英語で書いてあったりするので、分かりにくいかも)

あれ、、、、でも私も動かない。。。。

今日は疲れたので。。ここまで。。。。

ま、、、Tomcat動いたからいいかな。。。。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です