CentOS7でtomcat8構築

即席でTomcat8構築、ManagerでログインできるようにしてApacheと連携する手順です。
 
## Javaインストール・設定

JDKインストール

```
yum -y install java-1.8.0-openjdk-devel
```

確認

```
java -version
```

パスを通す

```
echo "export JAVA_HOME=$(readlink -e $(which java)|sed 's:/bin/java::')" >  /etc/profile.d/java.sh
echo "PATH=¥$PATH:¥$JAVA_HOME/bin"                                       >> /etc/profile.d/java.sh
source /etc/profile.d/java.sh
```
## tomcatインストール・設定
tomcat取得&配置

```
# tomcatユーザー作成
useradd -s /sbin/nologin tomcat

# tomcatダウンロード
mkdir -p /usr/local/src/tomcat
cd /usr/local/src/tomcat
curl -OL http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz
※http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/tomcat/tomcat-8/をブラウザで検索し、
その時存在するバージョンをダウンロードしないと解凍する時に失敗します。

# tar.gz展開&配置
tar zxvf apache-tomcat-8.5.43.tar.gz
mv apache-tomcat-8.5.43 /opt/
chown -R tomcat. /opt/apache-tomcat-8.5.43
ls -ld /opt/apache-tomcat-8.5.43

# シンボリックリンク
ln -s /opt/apache-tomcat-8.5.43 /opt/tomcat

# パスを通す
echo 'export CATALINA_HOME=/opt/tomcat'  >  /etc/profile.d/tomcat.sh
source /etc/profile.d/tomcat.sh
```

初期設定 & 起動

```
# サービス定義ファイルを作成
vi /etc/systemd/system/tomcat.service
※以下記載
---
[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target
 
[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/tomcat.pid
RemainAfterExit=yes
 
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
ExecReStart=/opt/tomcat/bin/shutdown.sh;/opt/tomcat/bin/startup.sh
 
[Install]
WantedBy=multi-user.target
---

# 権限付与
chmod 755 /etc/systemd/system/tomcat.service

# 起動
systemctl start tomcat
```

ブラウザで「http://サーバのIP:8080」アクセス
<img width="718" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/18148024-d594-1726-9f64-9e537dc59092.png">
お馴染みのやつが表示されます。

## Managerログイン

```
vi /opt/tomcat/conf/tomcat-users.xml
※以下追記。

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

↑だけだとtomcat8でManagerの画面に接続できないことがある。アクセス許可をする。
vi /opt/tomcat/webapps/manager/META-INF/context.xml
※以下allowの行にパイプでつないで許可したいIPを記載する。

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
```
初期画面「Manager App」よりBasic認証でusername,password入れて。
<img width="724" alt="キャプチャ2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/46ceff12-6e16-e734-78fe-120d1bf61537.png">
ログインできました。

## Apache → Tomcat連携設定
※以下Apache側のサーバで作業

```
# モジュール確認
cat /etc/httpd/conf.modules.d/00-proxy.conf
※以下2行があること
---
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
---

# ajp通信設定
vi /etc/httpd/conf.d/proxy-ajp.conf
※全てのリクエストを Tomcat で処理したい場合
---
ProxyPass / ajp://tomcatサーバのIP:8009/
---
※ sample ディレクトリへのアクセスを Tomcat上のdocsと連携したい場合
---
ProxyPass /docs/ ajp://tomcatサーバのIP:8009/docs/
---
 
# apache再起動
systemctl restart httpd
```
 
※以下Tomcat側のサーバで作業

```
vi /opt/apache-tomcat-8.5.43/conf/server.xml
※以下コメントアウト
---
<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
---
```