CentOS7とApache2.4とTomcat8.5でAWS上にWebサーバ構築

#1.目的
AWSのEC2でインスタンスを作成しApache、Tomcat、JDKをインストールしてJavaアプリケーションが動作するWebサーバを構築します。
＃ドメインはRoute53で事前に取得済み

#2.環境
Centos7.5
Apache2.4
JDK1.8
Tomcat8.5

#3.ツール、端末OS
AWS EC2
TeraTerm
Windows10

#4.Apacheのインストール
##4-1.インスタンスの作成
AWSのEC2でインスタンス作成します。スペックは無料の範疇で。
EIPも割り当てます。

- スペック
    - AMIの選択：CentOS7　＃AWS Marketplaceから選択
    - インスタンスタイプの選択：t2.micro
    - インスタンスの設定：すべてデフォルト
    - ストレージの追加：30GB
    - タグの追加：キー　Name、値　Webserver
    - セキュリティグループの設定：新しいセキュリティグループを作成する

- EIPの割り当て
    - EC2ダッシュボード→Elastic IP→新しいIPの割り当て→割り当て
    - 割り当てたIPを選択→アクション→アドレスの関連付け→作成したインスタンスを選択

##4-2.インスタンスにsshしパスワード認証に変更
①centos / 認証キーでログイン
②sudo su - でrootユーザに移行
③passwdでpassを設定
④vi /etc/ssh/sshd_configを書き換え（PasswordAuthentication yes , permitRootLogin yes）
※sshのソースを限定した開発環境のためRootユーザのログインを許可しています
※書き換え後にsshdの再起動が必要

■参考
https://qiita.com/uhooi/items/ab845b06b136e623e51d

##4-3.apacheのダウンロード、サービスの起動
rootユーザでCLIからapacheをyum installする。
[このサイト](https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/)の手順に倣います。
Tomcatインストール＆連携モジュールの際も参考にさせていただきました。

#5.Tomcatのインストール
##5-1.JDKのインストール
Tomcatを動かすためにJava環境を構築。
[このサイト](https://qiita.com/Esfahan/items/60cf425514c66553bd42)に倣ってインストールします。

##5-2.Tomcat本体のダウンロード・解凍・配置、ユーザとグループの作成

```
$ cd /usr/local/src　#srcディレクトリにTomcatのアーカイブをダウンロード
$ yum install wget
$ wget http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-8/v8.5.33/bin/apache-tomcat-8.5.33.tar.gz
$ tar zxf apache-tomcat-8.5.33.tar.gz
$ mv apache-tomcat-8.5.33 /usr/tomcat　#tomcatディレクトリを作成し解凍したモジュールを配置
$ echo -e "export CATALINA_HOME=/usr/tomcat\nexport CATALINA_BASE=/usr/tomcat" > /etc/profile.d/tomcat.sh　#Tomcatで使用する環境変数×2の設定
$ source /etc/profile.d/tomcat.sh　#上記設定の確認
$ /usr/tomcat/bin/version.sh 
$ useradd -M -d /usr/tomcat tomcat
$ chown -R tomcat:tomcat /usr/tomcat　#tomcatユーザを作成しtomcatインストールディレクトリをchown
```
※wgetで404エラーが出た場合はtomcatのバージョンが上がっていますので、/tomcat-8/配下のバージョン部分を適宜修正します。

##5-3.サービスの作成と登録、Tomcatの起動
環境変数（CATALINA_HOME、CATALINA_BASE）とTomcatインストールフォルダはご自身の環境に合わせて書き換えてください(本記事の場合だとtomcat8)。

```
$ vi /etc/systemd/system/tomcat.service

Description=Apache Tomcat 8
After=network.target

[Service]
Environment="CATALINA_HOME=/usr/tomcat8"
Environment="CATALINA_BASE=/usr/tomcat8"

User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/usr/tomcat8/tomcat.pid
RemainAfterExit=yes
ExecStart="/usr/tomcat8/bin/startup.sh"
ExecStop="/usr/tomcat8/bin/shutdown.sh"
ExecReStart="/usr/tomcat8/bin/shutdown.sh;/usr/tomcat8/bin/startup.sh"
[Install]
WantedBy=multi-user.target

$ systemctl enable tomcat （自動起動の設定
$ systemctl is-enabled tomcat （自動起動の確認
$ systemctl start tomcat （サービスの起動

```

##5-4.ブラウザで確認
http://xxx.xxx.xxx.xxx（インスタンスのEIP）:8080

Welcomeページが表示されれば完了。
※インスタンスの8080ポートを開けていない場合、現在の設定ですとエラーになるのでセキュリティグループに追加してください

■参考
・Tomcatインストール
https://weblabo.oscasierra.net/installing-tomcat8-centos7-1/

・apacheがどうやってページを表示しているか？は以下のサイトでお勉強。
https://www.task-notes.com/entry/20150629/1435546800

#補足①：ドメイン取得
Route53を使いました。※有料ですのでご注意ください
以下のサイトでお勉強し、手順に倣って完了。
http://exrecord.net/how-to-register-aws-route53

#補足②：IPv6の遮断
https://qiita.com/qs2006/items/f437982e0a142a05593c

#おまけ：AWSの構築手順を学習する
某SIerのクラウドを運用保守していたので馴染みはあるのですが、
いかんせん構築スキルがなさすぎるので書籍でお勉強。
AWS関連の技術書にしては版も新しく、内容もわかりやすい（TCP/IPの理解があると尚よし）、かつ目的とマッチしていたこともあり大変勉強になりました。
ピンポイントで欲しい知識はグーグル、体系的に学びたい場合は書籍をよく利用します。
8時間程度で読み終えるボリュームでした。

[Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版](https://www.amazon.co.jp/Amazon-Web-Services-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89/dp/4822237443/ref=sr_1_6?ie=UTF8&qid=1536030352&sr=8-6&keywords=aws)