<全体構成調整中>
はじめに
前回は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のファイル
を全て読み込んでくれてることがわかります。
/etc/httpd/conf.modules.d
ディレクトリに移動し中身を確認すると、下記confファイルがあることが確認できます。
この中の00-proxy.conf
の中身を確認すると、
下記のように、いくつかモジュールファイルがあるのが分かります。その中でもAJPプロトコルを使うには、
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
で保存します。
[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への接続を出来ないようにコメントアウトします。
修正前
修正後
②AJP1.3プロトコルの適用。8009番ポート開放
apache HTTP SeverからApache TomcatへはAJP/1.3
というプロトコルを使って、8009ポートでの接続を行えるようにし修正します。
下記の部分のコメントアウトを外して、iPv6の許可設定の構文も削除しました(今回は使用しない為)。
「secretRequired」を設定すると、
Connectorの属性「secretRequired」はシークレットキーの設定のようですが、今回は使用しない為、「false」へ変更します。
httpd.confの設定
接続テスト・通信確認
Apache HTTP Severにブラウザからアクセス、Apache Tomcatへの連携が取れているか確認。
tail -fコマンド
を用いて、ログファイルを確認
振り返り(学んだこと)
- うまく連携できない時はログを確認してみる
/var/log/messages、access.log、error.log、catalina.out