Apache + Tomcat + PebbleをMacのローカルで構築した

#About
※この記事はセキュリティ度外視の課題専用の内容です。予めご了承ください。

大学の課題でApacheを設定、SSL化し、Apacheと連携させたTomcatからPebbleを起動させたので備忘録です。
Apacheの設定部分やローカルでのSSL化は省略します。
ちなみにSSL化については以下の記事に記載しました。
https://qiita.com/Raluer/items/02b848437844ba3cbb6c

#httpd.confの編集
以下のLoadModuleをコメントアウト

```terminal:/usr/local/etc/httpd/httpd.conf
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
```

ファイル末尾に以下の一文を追加
外部のコンフィグファイルに記載したAJP通信用の設定（これから作ります）を読み込み。

```terminal:/usr/local/etc/httpd.conf
Include /usr/local/etc/httpd/extra/httpd-proxy.conf
```

#httpd-proxy.confの編集

ターミナル上で`/usr/local/etc/httpd/extra/`にて

```terminal:/usr/local/etc/extra
$ sudo vim httpd-proxy.conf
```

するとvimが起動して新規ファイルの作成になるので、以下のコードをコピペする。

```terminal:/usr/local/etc/extra/httpd-proxy.conf
<Location /pebble >
  ProxyPass ajp://localhost:8009/pebble
  Order allow,deny
  Allow from all
</Location>
```

これでApache側の設定はオールオッケー
ここからTomcatを入れていきます。

#Tomcatインストール
[公式サイト](https://tomcat.apache.org/)から、好きなバージョンを選んで「Download」を押す。
飛んだページの「Core」の中から「tar.gz」をクリックしてダウンロード。
ルートディレクトリ（~/のところ）にダウンロードしておくと後々楽かも？ぶっちゃけどこでもいいです。

ダウンロードしたtar.gzファイルをFinderから解凍して中を見ます。
「conf」というフォルダがあるので中に入り、server.xmlをお好きなテキストエディタで開きます。

74行目あたりにある以下のコードを、

```xml:conf/server.xml
<Connector executor="tomcatThreadPool"
          port="8080" protocol="HTTP/1.1"
          connectionTimeout="20000"
          redirectPort="8443" /> 
```
今回HTTP通信は使わないので、コメントアウトします。

```xml:conf/server.xml
<!--
<Connector executor="tomcatThreadPool"
          port="8080" protocol="HTTP/1.1"
          connectionTimeout="20000"
          redirectPort="8443" /> 
-->
```

続いて117行目あたりにある、今回用いるAJP通信用の設定のアドレスを`127.0.0.1`に書き換え、secretRequiredを追加し、パラメータをfalseに設定します（ローカルのときのみ！）

```xml:conf/server.xml
<Connector protocol="AJP/1.3"
           address="127.0.0.1"
           port="8009"
           redirectPort="8443"
           secretRequired="false" />
```

ちなみにsecretRequiredを設定しなかったせいで相当ハマりました。

#Pebbleの導入
ここまで来たらラストスパート。
まずはPebbleを[このサイト](http://pebble.sourceforge.net/installation.html)からダウンロードします。
ダウンロード場所が少し分かりづらいですが、右上のPebble 2.6.4をクリックするとダウンロードできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484621/935b284b-9fb5-41a0-7d25-9fd4254f21d4.png)

ダウンロードしたファイルを解凍し、解凍したフォルダ内にある`pebble-2.6.4.war`を**解凍せずに**コピーし、先程のTomcatディレクトリに移動し、`webapps`直下にペーストします。もともとのフォルダは不要です。中に入ってる**warファイルだけ**を使います。
warファイルにあとでアクセスするので、`pebble.war`に**リネーム**しておきましょう。

#TomcatとApacheサーバの起動
ここまで来たらほとんどゴールです。
ターミナルを開き、Tomcatの`bin`の中に入ります。
Tomcatのサーバを起動するには、ターミナル上`bin`の中で

```terminal:tomcat/bin
$ ./startup.sh
```

のコマンドを打つだけです。ちなみに止めるときは

```terminal:tomcat/bin
$ ./shutdown.sh
```

を同じ場所で実行するだけです。
起動するのを確認したら、そのまま

```terminal:terminal
$ apachectl start
```

を実行し、apacheサーバを起動します。

#ゴール！
Tomcatサーバとapacheサーバがどちらも起動した状態になったので、ブラウザのURLに`localhost/pebble`と入力すると、少し読み込んだ後にPebbleのWelcomeページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484621/dd7983a6-6750-b47f-972e-567074f3c811.png)

#あとがき
非常にハマってしまったので、是非とも参考にしてスムーズに駆け抜けてください…。


#ハマった場合のチェックポイント
ポート8009は埋まってない？
埋まってたら適当に別のポート（8019とか）使うと出来ますよ。
server.xmlとhttpd-proxy.confどちらも変更するのを忘れずに！

#参考サイト
https://ameblo.jp/g-pinchan-new/entry-11573378743.html
https://qiita.com/brighton0725/items/0e116db637a8fea1d907