【AWS】EC2にWEBサーバーを立てて表示されない場合確認箇所

**◆ 目的**
EC2にWEBサーバーとDBサーバーを立てた時に、なかなか表示されず困ったことを今後のためにメモ。
確認手順や表示されない可能性を記述します。

``何が問題か分割して原因を探る``
・ネットワーク
・サーバー環境
・ミドルウェア（Apache、PHP、Composerインストールもれ、設定ミスなど）
・ソースコード


## 環境構築完了！でも...ドメインを叩いて想定している画面が表示されない時

##１）ErasticIPをアドレスバーに入れて表示できるかチェック
``表示されてたらAppacheの設定はOK``
　（ドメインで叩くと表示されない場合以下チェック）
・DNSの設定
・Route53の設定
・セキュリティーグループ設定（HTTP 80/HTTPS 443）

``ErasticIPで何も表示されてなかったらAppacheに問題があるかも。``
・Appacheの設定ミスの可能性　→ ②

##２）Appacheの設定チェック

``/var/www/sample_site/public/``
ここに index.html 中に 「hello」 とか記述しといてちゃんと上記ドキュメントルートを閲覧できてるかチェックする。

``↑Appacheの設定チェック＆修正 「hello」は表示されるけど...プロジェクトは表示できない``
・ミドルウェア（PHP、Composerインストールもれ、設定ミスなど）　→ ３）
・mysql　→　④
・.env → ⑤
・ソースコード　→ ⑥

``↑Appacheの設定チェック&修正　ErasticIPではOK！でも、ドメインではエラー``
・DNSの設定
・Route53の設定

``どちらでも表示されない``
・Appacheエラーログチェック → ⑦

```
// Appache開くコマンド
sudo vi /etc/httpd/conf.d/custom.conf

例）
Alias /phpMyAdminSample "/var/www/html/tool/phpMyAdmin"

<VirtualHost *:80>
  ServerName domein.com
  DocumentRoot "/var/www/sample_site/public/"
 
  <Directory /var/www/sample_site/public/>
    AllowOverride All
  </Directory>
</VirtualHost>
```
**※Appacheを触ったら必ず再起動マスト！！！！！**
```sudo service httpd restart```
```sudo systemctl restart php-fpm```

##３）ミドルウェア（PHP、Composerインストールもれ、設定ミスなど）　
自分の環境に必要な言語やパッケージ管理ファイルがちゃんと入っているかチェック

```
例）
// PHP
php -v

// composer
comporser

//node.js
node -v
```

##４）mysql
この辺確認。
インストールできてなかったらそもそもインストール必要
ちゃんと動いてないとパッケージ足りないかな
接続できてなかったらまずは接続問題解決。

```
//　インストールできているか
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
sudo yum install mysql-community-server -y
mysql -v

// ちゃんと起動しているか
sudo service mysqld start
sudo service mysqld status

// DBに接続できているか
mysql -u root -p
↑ 初期パスワード求められる
【初期パス確認方法】　　https://qiita.com/miriwo/items/457d6dbf02864f3bf296


----------- ここから migrate できない時チェック -----------
// DB作ってなかったら作る
create database <DB名>;

// 　作成したDBで接続できるか
mysql -u <user名> -p <DB名>

//  認証方式　確認
【MySQL8.0 認証方式を変更する】  https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917

```

##５）.env ＆ 認証方法あってる？

```
DB_CONNECTION=mysql // ここはmysqlがデフォらしい
DB_HOST=localhost   // 確認する※
DB_PORT=3306
DB_DATABASE=<DB名>
DB_USERNAME=<user名>
DB_PASSWORD=<password>
```
※確認方法
【MySQL8.0 認証方式を変更する】  https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693810/d2d435c1-17f5-818c-a9cf-edd8611b1d73.png" width=50%>
↓↓↓↓↓　変更
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693810/1c47522c-97ce-4807-86e6-d8e1e399fcc2.png" width=50%>





##６）ソースコード
storageのlogチェックすればいいと思う。

##７）Appacheエラーログチェック
権限付与してもフォルダに入るのは無理だったのでsudoコマンドでパスで開きに行く
ログチェックして原因を探る。

```
sudo cat /var/log/httpd/access_log
sudo cat /var/log/httpd/error_log
```

###８）その他（おまけ1） Please provide a valid cache path
`` composer install 時にエラーが出た時``

```PHP
# storage_pathで設定している値を確認できるコマンド
# /var/www/<pj>で実行
$ find config/ -type f | xargs grep storage_path | grep framework
config/cache.php:            'path' => storage_path('framework/cache/data'),
config/session.php:    'files' => storage_path('framework/sessions'),
config/view.php:        realpath(storage_path('framework/views'))

# 存在していないディレクトリを自分で作成する
$ mkdir -p storage/framework/cache/data/
$ mkdir -p storage/framework/sessions
$ mkdir -p storage/framework/views
```


【ComposerでPlease provide a valid cache pathとなったときの対応方法】
https://qiita.com/ponsuke0531/items/f0b68546068ac8922665


##9）その他（おまけ2） 権限まわり

```
＊＊　権限
chmod -R 777 bootstrap/
cd ./storage
chmod -R 777 logs/
chmod 777 app/tmp/
chmod -R 777 framework/
```