ApacheとTomcatを連携させてみた


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

---

# 参考にしたサイト

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](https://qiita-image-store.s3.amazonaws.com/0/33479/5a376cd3-b8a7-1ebd-3d23-74ce7f7d2db9.png "スクリーンショット 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](https://qiita-image-store.s3.amazonaws.com/0/33479/52b1ca98-54a3-5df6-3e95-2420f050239c.png "スクリーンショット 2017-05-23 9.30.12.png")
![アップロードに失敗しました スクリーンショット 2017-05-23 9.30.12.png: 不明なエラー]()



---

# Tomcatのインストール

Tomcatをインストールする事前条件として、`JDK`がインストールされている必要がある。
デフォルトで、「OpenJDK」がインストールされているが、今回は商用環境などで利用する機会の多い、
`OracleJDK`をインストールすることとする。

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

````ローカルからAWS上にファイルを転送
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](https://qiita-image-store.s3.amazonaws.com/0/33479/c6c2aac6-a32a-8fe1-b4ef-3a0ed64491e4.png "スクリーンショット 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](https://qiita-image-store.s3.amazonaws.com/0/33479/92f7d9f1-11fa-d251-9f1b-7f8301cdfbc6.png "スクリーンショット 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](https://qiita-image-store.s3.amazonaws.com/0/33479/61b7f4f3-dbd7-7ad7-fb49-b5d8b90cfa5f.png "スクリーンショット 2017-05-23 10.01.42.png")


---