Posted at

ApacheとTomcatを連携させてみた

More than 1 year has passed since last update.

ちょっと使いそうな感じだったので、いろいろネット上の記事を見つつ、検証してみた。



参考にしたサイト

http://www.bnote.net/linux/a_ajp_t.shtml

http://t-team.seesaa.net/article/268330406.html

http://d.hatena.ne.jp/nemunemu10/20110914/1316016268



サーバ環境準備

AWS上にRHEL7環境を構築し、今回の検証に利用する。

なお、利用したAMIは下記のとおり。

RHEL-7.3_HVM_GA-20161026-x86_64-1-Hourly2-GP2 (ami-5de0433c)

※CPUやメモリはデフォルトのまま

スクリーンショット 2017-05-23 9.20.25.png



Apacheのインストール

yumを利用して、インストールする。

# yum -y install httpd

サービス登録し、起動する。

# systemctl enable httpd.service

# systemctl start httpd.service
# systemctl status httpd.service

SELINUXを無効化する。

# setenforce 0

# getenforce
# sed -i.bak "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
# cat /etc/selinux/config

Firewallを無効化する。

# systemctl stop firewalld

# systemctl status firewalld.service
# systemctl disable firewalld

テストページが表示されることを確認する。

http://<IPADDR>

スクリーンショット 2017-05-23 9.30.12.png

[アップロードに失敗しました スクリーンショット 2017-05-23 9.30.12.png: 不明なエラー]()



Tomcatのインストール

Tomcatをインストールする事前条件として、JDKがインストールされている必要がある。

デフォルトで、「OpenJDK」がインストールされているが、今回は商用環境などで利用する機会の多い、

OracleJDKをインストールすることとする。

OTNよりOracleJDKのインストール資材をDLし、rpmコマンドを使用してインストールする。

scp -i xxx.pem <ローカル上の転送するファイル> ec2-user@<転送先IPAddress>:<転送先配置パス>

# cd /tmp/work/

# rpm -ivh jdk-8u131-linux-x64.rpm

Tomcat実行ユーザを作成する。

# useradd -s /sbin/nologin tomcat

Tomcatのインストール媒体をDLし、インストールする。

# cd /tmp/work/

# curl -O http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-8/v8.0.44/bin/apache-tomcat-8.0.44.tar.gz
# tar -xzvf apache-tomcat-8.0.44.tar.gz
# mv apache-tomcat-8.0.44 /opt/
# chown -R tomcat:tomcat /opt/apache-tomcat-8.0.44/
# cat /etc/systemd/system/tomcat.service
----------------
[Unit]
Description=Apache Tomcat 8
After=network.target

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

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

[Install]
WantedBy=multi-user.target
----------------

# chmod 755 /etc/systemd/system/tomcat.service
# systemctl enable tomcat.service
# export JAVA_HOME=/usr/java/default
# export CATALINA_HOME=/opt/apache-tomcat-8.0.44/
# PATH=$PATH:$JAVA_HOME/bin
# systemctl start tomcat.service
# systemctl status tomcat.service

テストページが表示されることを確認する。

http://<IPADDR>:8080

スクリーンショット 2017-05-23 9.46.59.png



Webアプリケーションマネージャを起動する。

Webアプリケーションマネージャは、WeblogicでいうWeb管理コンソール的なもの。

マネージャにログイン(認証)するために、設定が必要となる。

configの設定を変更する。

cat /opt/apache-tomcat-8.0.44/conf/tomcat-users.xml

----------------
以下の設定を行末に追加する。
<role rolename="manager-gui"/>
<user username="admin" password="pass" roles="manager-gui"/>
----------------

Tomcatのサービスを再起動する。

# systemctl restart tomcat.service

Webアプリケーションマネージャを表示し、ログインできることを確認する。

http://<IPADDR>:8080/manager/html

----------------
user : admin
pass : pass
----------------

スクリーンショット 2017-05-23 9.54.13.png



ApacheとTomcatの連携設定

まずは、Apache側の設定をする。

# cat /etc/httpd/conf.modules.d/00-proxy.conf

----------------
以下の設定が含まれていることを確認する。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
----------------

/etc/httpd/conf.dディレクトリにサーブレットへのリクエストがあった場合の設定を作成する。

cat /etc/httpd/conf.d/proxy-ajp.conf

<Location /docs >
ProxyPass ajp://localhost:8009/docs
Order allow,deny
Allow from all
</Location>

続いて、Tomcat側の設定をする。

# cat /opt/apache-tomcat-8.0.44/conf/server.xml

----------------
以下の設定が含まれていることを確認する。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
----------------

# cat /opt/apache-tomcat-8.0.44/conf/server.xml

----------------
Apache側からTomcatのページを表示させるため、8080ポートの設定を無効化する。
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
----------------

Apacheのサービスを再起動する。

systemctl restart httpd.service



動作確認

以下のURLに接続し、Tomcat側のページが表示できることを確認する。

http://<IPADDR>/docs/

スクリーンショット 2017-05-23 10.01.42.png