ありがとう!!!引き続き!!!!
Tomcat8のインストールが終わったので、今度は、ApacheとTomcatの連携です。
ApacheとTomcatを連携する理由はグーグル先生に聞けば色々と出てきますが、アクセスしたときにポート番号(8080とか)見えるのはなんだかダサいですよね。(はい。。。。。)
今回はこれを無くします。(よろしくお願いします。!!)
ajpモジュールによる連携
今回、ApacheとTomcatを連動させるには、ajpモジュールを使います。
/opt/tomcat/apache–tomcat-8.5.4/conf/server.xmlに
<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″ />
という記述があるか確認してください。(たぶんあると思います。なければ追加。)
(はい、あります!!!!)
次に、/opt/httpd/httpd-2.4.23/modulesに
があるかを確認してください。(たぶんあると思います。)
(はい、あります!!!!)
次に、/opt/httpd/httpd-2.4.23/conf/httpd.confを編集します。
このファイルのどこかに、以下のような記述があると思います。
もし、この行の先頭に#がついているのでしたら、削除してください。#はコメントアウトを意味するので、#があると、この二つのモジュールを使うことができません。
次に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/apache–tomcat-8.5.4/webapps)に入っていて、Tomcatで使われるWebアプリは、この中に格納していくわけですが、サンプルとして、あらかじめ、examplesというのが入っているわけですね。
そして、今、ApacheとTomcatが起動している人は、この設定を有効にするため、ApacheとTomcatを再起動してください。
Tomcatの終了は、
Apacheの終了は、
Tomcatの起動は、
Apacheの起動は、
になります。(パスは各自の環境に合わせてください、、、と)
http://160.16.50.187/examples/
にアクセスすると次のような画面が出れば、ここまでは正しく設定できています。(localhostの所は、適宜ご自身のIPアドレスなどに変えてください)ポート番号8080つけずとも、Tomcatのページが表示されました。
(やった!!!!!!)
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に、
があるかどうか確認してください。WebSocket接続をするには、このモジュールが必要です。wstunnelとはWebSocketTunnelを意味すると思われます。
そして、このモジュールを使うために、/opt/httpd/httpd-2.4.23/conf/httpd.confを編集します。httpd.confを開いて、
と書かれているところを探してください。おそらく、この文字列が書かれている先頭には#がついていると思います。この#を外して、モジュールを使うように設定を変えます。
次に、wstunnelを使うための設定を、/opt/httpd/httpd-2.4.23/conf/extra/httpd-proxy.confに記述します。現在、httpd-proxy.confには次の1行のみが書かれていると思います。
この行の上に、
ProxyPassReverse /examples/websocket/ ws://localhost:8080/examples/websocket/
を付け加えてください。
。/examples/websocket/で呼ばれたものは、ws://localhost:8080/examples/websocket/に渡しますよということを意味しています。これをwstunnelモジュールがやってくれます。
ProxyPassReverse /examples/websocket/ ws://localhost:8080/examples/websocket/
ProxyPass /examples/ ajp://localhost:8009/examples/
の順番になります。(ProxyPassReverseは最後でも良いですが、ProxyPassの順番は変えないでください)
……………….と。
この設定をしたのち、ApacheとTomcatを再起動します。コマンドは覚えていますか?
いえ、、、、
コピーします。。。。。。。
Tomcatの終了は、
Apacheの終了は、
Tomcatの起動は、
Apacheの起動は、
上で、ajpの設定をした時に書いてあるので、参考にしてください。
そして、再度、
http://160.16.50.187/examples/
にアクセスしてください。たとえば、Echo exampleだと、次のような応答になるかと思われます。
Multiplayer snake exampleとMultiplayer drawboard exampleも遊んでみてください。動くと思います。(操作の説明は英語で書いてあったりするので、分かりにくいかも)
あれ、、、、でも私も動かない。。。。
今日は疲れたので。。ここまで。。。。
ま、、、Tomcat動いたからいいかな。。。。