LoginSignup
2
1

More than 3 years have passed since last update.

【RaspberryPi】Apache2とTomcatを連携させてみる

Last updated at Posted at 2021-01-16

概要

TomcatをラズパイのApache2と連携させ、外部に公開、アクセスできるようにする。

はじめに

この記事は、Raspberry Piの初期設定、ドメインの取得、Apache2の導入、ポート開放等が済んでいる前提の記事です。
お済みでない方は、先にそちらの設定を行うことを推奨します。

使用環境

  • Raspbian 10.7
  • Apache 2.4.38
  • Tomcat 9.0.31

環境構築

まずパッケージの更新をしておきます。

$ sudo apt update
$ sudp apt upgrade

パッケージの更新が終わったらTomcatのインストールを行います。
執筆時点(2021/01/15)ではtomcat9が最新のようです。

$ sudo apt install tomcat9

インストールが完了したら正常に動作しているか確認します。

$ curl localhost:8080

Apache Tomcatの情報がかえってこれば成功です。
tomcat9はインストールした時点で起動時に自動的に開始するようになっています。

各種設定

Apache2の設定

この記事では、AJPプロトコルを使ってApacheとTomcatを連携させていきます。
似たような方法にmod_jkを用いた連携方法もありますが、余計なパッケージをインストールしたくないのでここでは説明しません。
Apache + mod_jk + 各種アプリケーションサーバの設定方法

まず、AJPを利用するためのモジュールを有効にします。

$ sudo a2enmod proxy proxy_ajp

/etc/apache2/mods-enabledディレクトリを確認してモジュールが有効になっているか確かめます。
/etc/apache2/mods-enabledディレクトリの中に、proxy.conf, proxy.load, proxy_ajp.loadの3つがあれば成功です。

次に、リバースプロキシの設定を行います。
root権限で/etc/apache2/sites-availableディレクトリに設定用のtomcat_ajp.confを作成します。

tomcat_ajp.conf
<VirtualHost *:80>
        # サーバーの名前
        ServerName example.com
        # サーバー管理者のメールアドレス
        ServerAdmin hogehoge@example.com

        # リバースプロキシの設定
        <Location />
                ProxyPass ajp://localhost:8009/
                ProxyPassReverse ajp://localhost:8009/
        </Location>
</VirtualHost>

設定ファイルが作成出来たら設定を有効にします。

$ sudo a2ensite tomcat_ajp

同じドメインでほかにもサイトを公開している場合、ロケーションにアプリケーション名を設定するか別のドメイン・サブドメインを使って設定を分けるといいと思います。
ここでは、テストのためにほかの設定ファイルは読み込まれていないものとします。

設定を反映させるためにApacheを再起動します。

$ sudo service apache2 restart

Tomcat9の設定

Tomcatの設定ファイルがあるディレクトリは、/etc/tomcat9/, /var/lib/tomcat9/conf/の2つがありますが、優先されるのは/etc/tomcat9/に含まれる方のようなので、そちらを編集します。
上手くいかない場合は、/var/lib/tomcat9/conf/の方を変更してみてください。

/etc/tomcat9/server.xmlを編集していきます。
まず、直接Tomcatにアクセスができなくするため、デフォルトの8080ポートの部分をコメントアウトします。

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

次に8009ポートの部分を編集します。コメントアウトが付いている場合は外してください。
AJPコネクタが信頼できないサイトと接続できないようにするためにsecretRequiredオプションを追記します。

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

設定を反映させるためにTomcatを再起動します。

$ sudo service tomcat9 restart

ポート8080が閉じているか確認します。

$ curl localhost:8080

接続が拒否されれば成功です。

動作確認

まず、ラズパイ上のブラウザで設定したサーバー名にアクセスします。
Tomcatのルートページが表示されれば成功です。

別の端末のブラウザでも表示されるか確かめます。
アクセスがうまくいかない場合はポート開放、ファイアウォールの設定などを見直してみてください。

お疲れ様でした。

参考

2
1
2

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
2
1