0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Apache HTTP Sever(Webサーバ)とApache Tomcat(APサーバ)の環境構築を行い、連携させる。

Last updated at Posted at 2023-02-05

<全体構成調整中>

はじめに

前回はWeb三層構造への理解を深めるために、仮想マシンを3台構築し、各サーバー同士の疎通確認を行いました。
今回は仮想マシンを2台構築し、それぞれの仮想マシン上にWEBサーバとAPサーバを構築し、連携を行っていきたいと思います。

①Apache HTTP Sever(Webサーバ)のインストールと設定
②Apache Tomcat(APサーバ)のインストールと設定
③連携が取れているかを試す。ログファイルを確認

の流れで行います。

事前準備

Java 8 (JDK) ランタイムのインストール

Apache Tomcatの動作をする為には、java7以上のランタイムが必要となります。
以下のコマンドを実行してJava 8 (JDK) ランタイムをインストールします。

前回は、Web三層構造への理解を深めるために、まずは仮想マシンを3台構築し、各サーバー同士の疎通確認を行いました。
続いて、今回はWebサーヴァ

事前準備

Java 8 (JDK) ランタイムのインストール

Apache Tomcatの動作をする為には、java7以上のランタイムが必要となります。
以下のコマンドを実行してJava 8 (JDK) ランタイムをインストールします。

実行コマンド
yum install java-1.8.0-openjdk

Apache HTTP Sever(Webサーバ)のインストール

yumコマンドでインストールをします。

実行コマンド
yum -y install httpd

以下のコマンドで起動します。

実行コマンド
systemctl start httpd

以下のコマンドでサービスの状況を確認することが出来ます。

実行コマンド
systemctl status httpd

httpd.confの設定

httpd.confはApache HTTP Severの設定ファイルになります。
中身を見ると、リッスンポートの指定やサーバ名、ログの出力先等の基本設定が書かれていることがわかります。

Apache HTTP SeverはAJPというプロトコルを用いてApache Tomcatと連携を行います。
その為にはmod_proxy_ajpというモジュールを読み込めるようにする必要があります。

httpd.conf内56行目を確認すると、モジュールの配置する場所が書かれています。
conf.modules.dディレクトリ内の拡張子が.confのファイル
を全て読み込んでくれてることがわかります。

image.png
/etc/httpd/conf.modules.dディレクトリに移動し中身を確認すると、下記confファイルがあることが確認できます。

image.png

この中の00-proxy.confの中身を確認すると、
下記のように、いくつかモジュールファイルがあるのが分かります。その中でもAJPプロトコルを使うには、

  • mod_proxy.so
  • mod_proxy_ajp.so
    の2つのモジュールファイルが必要となります。2つともあることを確認します。
    image.png

ProxyPass設定

どのようなHTTPリクエストがきたらAJPリクエストをApache Tomcatに送るのかを設定します。
httpd.confの編集をします。
編集する前にオリジナルの状態でバックアップを取ります。

実行コマンド
cd /etc/httpd/conf
cp httpd.conf httpd.conf.`date +%Y%m%d`

httpd.conf内の最下部に以下を追記します。
ProxyPass /tomcat/ ajp://APサーバのIP:8009/test/
ProxyPassReverse /tomcat/ ajp://APサーバのIP:8009/test/

Apache Tomcat(APサーバ)のインストール・設定

まずuseraddコマンドを使い、Tomcat を起動する為のユーザとして tomcat を登録します。
Tomcatを動かすためだけのユーザーですので、ログインシェルは/sbin/nologinに指定します。

実行コマンド
useradd -s /sbin/nologin tomcat

次に、wget コマンドで Apache Tomcat 9 のダウンロードページから、Apache Tomcatの圧縮ファイルをダウンロードします(wgetコマンドは事前にyumでインストールが必要です)。
2023年1月時点ではバージョン 9.0.71 が最新版でした。
次のURLでダウンロードリンクを指定します。

実行コマンド
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz

ダウンロードした tar.gz ファイルを解凍して配置します。次のように tar コマンドで解凍し、/opt に配置します。解凍したApache Tomcatは、先ほど作成した tomcat ユーザで起動する為、所有者をtomcatに変更します。(chownコマンドに-Rオプションを付けて実行し、ディレクトリ以降も同じ権限を付与します)

実行コマンド
tar -xzvf ~/apache-tomcat-9.0.71.tar.gz
mv ~/apache-tomcat-9.0.71 /opt
chown -R tomcat:tomcat /opt/apache-tomcat-9.0.71

systemctlコマンドで起動できるようにする

yumでインストールしてきたhttpd等ならば、systemctlコマンドから実行ができます。しかし、今回のようにダウンロードして配置したのみでは、systemctlからの実行はできません。起動できるようにするには定義ファイルの登録が必要になります。
/etc/systemd/system/配下にユニットファイル
 tomcat.serviceを作成します。

実行コマンド
vi /etc/systemd/system/tomcat.service

ユニットファイルにはユニットの設定や実行するコマンドライン等を記載できます。以下を入力し、:wqで保存します。

tomcat.service
[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/apache-tomcat-9.0.71/tomcat.pid
RemainAfterExit=yes

ExecStart=/opt/apache-tomcat-9.0.71/bin/startup.sh
ExecStop=/opt/apache-tomcat-9.0.71/bin/shutdown.sh
ExecReStart=/opt/apache-tomcat-9.0.71/bin/shutdown.sh;/opt/apache-tomcat-9.0.71/bin/startup.sh

[Install]
WantedBy=multi-user.target

次のコマンドで、作成した定義ファイルの権限を 755 に変更します。
(所有者は何でもできるければ、その他のユーザーは実行と読み取りしかできないようにする)

実行コマンド
chmod 755 /etc/systemd/system/tomcat.service

/etc/systemd/system/配下にユニットファイルを時は、次のコマンドを実行することで設定ファイルの変更が反映されます。

実行コマンド
systemctl daemon-reload

server.xmlの修正

Tomcat はデフォルトで8080番ポート(HTTP)と8009番ポート(AJP)での通信を受け付けています。
sever.xmlはApache Tomcatの動作を定義する設定ファイルです。
apache HTTP SeverとApache Tomcatを連携するにあたり、sever.xmlで下記2点を修正する必要があります。

sever.xml/opt/apache-tomcat-9.0.71/conf/配下にあります。
編集する前にオリジナルの状態でバックアップを取ります。

実行コマンド
cd /opt/apache-tomcat-9.0.71/conf/
cp sever.xml sever.xml.`date +%Y%m%d`

下記コマンドを使用し編集します。

実行コマンド
vi /opt/apache-tomcat-9.0.71/conf/server.xml

①8080番ポートの停止

Apache HTTP Sever経由でのアクセスに変更する為、現状可能となっている8080ポートでのTomcatへの接続を出来ないようにコメントアウトします。
修正前
image.png
修正後 
image.png

②AJP1.3プロトコルの適用。8009番ポート開放

apache HTTP SeverからApache TomcatへはAJP/1.3というプロトコルを使って、8009ポートでの接続を行えるようにし修正します。
下記の部分のコメントアウトを外して、iPv6の許可設定の構文も削除しました(今回は使用しない為)。
「secretRequired」を設定すると、

Connectorの属性「secretRequired」はシークレットキーの設定のようですが、今回は使用しない為、「false」へ変更します。

修正前
image.png
修正後 
image.png

httpd.confの設定

接続テスト・通信確認

Apache HTTP Severにブラウザからアクセス、Apache Tomcatへの連携が取れているか確認。
tail -fコマンドを用いて、ログファイルを確認

振り返り(学んだこと)

- うまく連携できない時はログを確認してみる

/var/log/messages、access.log、error.log、catalina.out

- mod_proxy_ajp.soが必要となること
- 自身の環境に合う情報を取捨選択する

終わりに

参考

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?