ApacheとWildflyを連携する方法を3つの手順でご紹介する。Jboss AsがWildflyとなってまだ日が浅いためかサーバ上でWildflyをstandaloneで立ち上げて別のクライアントパソコンからブラウザでアクセスするための日本語での情報が少なく感じた。この記事があなたの参考になっていただければ幸いだ。

サーバ環境は以下の通りで、apacheはapt-getによりインストールした。UbuntuでApacheをapt-getによりインストールした場合、Ubuntu流のディレクトリ構成となるらしく、ここでの解説はこのディレクトリ構成をもとにしている。Wildflyはhttp://www.wildfly.org/よりダウンロードして適当なディレクトリに解凍してある。また、ApacheとWildflyは同一パソコン上にある。

  • Ubuntu server 12.04 LTS
  • Apache 2.2.22
  • Wildfly-8.0.0.Final

手順1:Apacheにリバースプロキシを設定

Apacheにリバースプロキシを設定するために以下のコマンドを実行してmod_proxyとmod_proxy_ajp を有効化する。


$ sudo a2enmod proxy
$ sudo a2enmod proxy_ajp

pacheにmod_proxyとmod_proxy_ajp が設定されているかを確認するために「/etc/apache2/mods-enable」ディレクトリ内に以下のシンボリックリンクがあるかを確認する。

  • proxy.conf
  • proxy.load
  • proxy_ajp.load

$ ls /etc/apache2/mods-enable

手順2:ApacheへのアクセスをWildflyに転送する設定

ApacheへのアクセスをAJP/1.3プロトコル8009番ポートでWildflyに転送するために「/etc/apache2/mods-enable」ディレクトリ内にconfファイルを作成する。ファイル名は適当でかまわないがここではwildfly-proxy-ajp.confとした。まず、vimを開いて、


$ sudo vim /etc/apache2/mods-enable/wildfly-proxy-ajp.conf

以下を入力後、保存して閉じる。


<Location /<warファイル名>/>
	ProxyPass ajp://127.0.0.1:8009/<warファイル名>/
</Location>

以上のApacheの設定を有効化するために以下のコマンドを実行する。


$ sudo service apache2 restart

手順3:Wildflyの設定

Wildfly側でAJP/1.3プロトコル8009番ポートで受け取る設定を行う。Wildflyを解凍したディレクトリ内のstandalone/configuration/standalone.xmlをvimで開き、一行追加後、保存して閉じる。


<subsystem xmlns="urn:jboss:domain:undertow:1.0">
    <buffer-caches>
        <buffer-cache name="default" buffer-size="1024" buffers-per-region="1024" max-regions="10"/>
    </buffer-caches>
    <server name="default-server">
        <http-listener name="default" socket-binding="http"/>
        <host name="default-host" alias="localhost">
            <location name="/" handler="welcome-content"/>
            <filter-ref name="server-header"/>
            <filter-ref name="x-powered-by-header"/>
        </host>

	<!--- 以下の一行を追加 -->
        <ajp-listener name="ajpListner" socket-binding="ajp" scheme="http" enabled="true"/>

    </server>
    <servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">
        <jsp-config/>
    </servlet-container>
    <handlers>
        <file name="welcome-content" path="${jboss.home.dir}/welcome-content" directory-listing="true"/>
    </handlers>
    <filters>
        <response-header name="server-header" header-name="Server" header-value="Wildfly 8"/>
        <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/>
    </filters>
</subsystem>

この設定が有効かを確認するために、一度Wildflyを立ち上げて8009番ポートが開いているかを確認する。
そのために、Wildflyを解凍したディレクトリ内のbinディレクトリ内のstandalone.shを実行後、以下のコマンドを実行して確認する。


$ nmap 127.0.0.1
PORT        STATE      SERVICE
80/tcp      open       http
8009/tcp    open       ajp13
8080/tcp    open       http-proxy

これでWildflyの設定は完了だ。いったんWildflyの実行を「Ctrl+c」などで終了しておく。

ブラウザで表示

後はWildflyを解凍したディレクトリ内の「standalone/deployments」ディレクトリにwarファイル配置して、「standalone.sh」を実行後、違うパソコンのブラウザでアクセスしてみればよい。例えば、サーバのIPアドレスが「192.168.1.100」でwarファイルが「demo.war」であった場合は、「http://192.168.1.100/demo/」でアクセスしてみる。

もし、表示されない場合は、Apacheのログ「/var/log/apache2/」とWildflyのログ「standalone/log/」を確認してどこで躓いてるのかを把握する。

ApacheとWildflyの連携方法