AWS EC2 Laravel8 Apache 環境構築

#はじめに
EC2:AmazonLinux2
php7.4:laravel8
apache2.4
の環境を構築する

#aws EC2インスタンス作成
awsにログイン
「EC2」を検索し、移動
![WS000018.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/d2063ba9-38aa-309f-96d0-41542292389c.jpeg)

「インスタンス」を選択
![WS000000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/bea3737a-5476-1f14-6dc5-0e985e5384e1.jpeg)

「インスタンスの作成」を選択
![WS000000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/adb52407-4ca0-62c4-1e6c-70ff6fdd0bf7.jpeg)

「Amazon Linux 2 」を選択
![WS000001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/c1ddda1e-fcfa-4a57-9265-1c7df515b969.jpeg)

「t2.micro」「確認と作成」を選択

![WS000002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/d7e67f7d-825b-7ecb-e9bd-b575ffbc0484.jpeg)

セキュリティグループ設定

![WS000003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/923537a1-d9e6-543e-45a2-0d620c7b8b62.jpeg)

![WS000005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/04ca6e13-3490-2e2f-c193-890cd3e7c893.jpeg)

起動

![WS000006.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/08fb1bf8-431e-6c1a-aecd-0fa58a40d026.jpeg)

「キーペアのダウンロード」「インスタンスの作成」

![WS000008.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/10b0fbfe-80c3-b2fa-cde5-88e728f8b75d.jpeg)

インスタンス作成完了（起動までしばらく時間がかかります）
![WS000009.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/576dcf2b-0212-e7a0-9939-860312e02723.jpeg)

#ssh接続
今回は「putty」でssh接続をします。

https://web.kudpc.kyoto-u.ac.jp/manual/ja/install/putty

検索から「puTTYgen」を起動
![WS000010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/b6636933-e9fd-bff0-2993-923aa46c60d6.jpeg)

ダウンロードした「test.pen」を選択

![WS000011.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/cf12fddc-4cba-46f8-8268-45b1a323f7b1.jpeg)

![WS000012.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/b02b3cdb-8188-c9d4-edac-3bad4df5311d.jpeg)

「test.ppk」で保存

![WS000013.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/f912af69-c8c1-95f9-ac9a-502bf38deb91.jpeg)

#環境構築

作成したインスタンスを選択、IPアドレスを確認
![WS000014.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/3e26166c-dbcb-8f39-31c5-373dc518c06e.jpeg)

「test.ppk」を設定

![WS000016.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/9d889c71-3221-6bc4-ab7f-82edf26e72e2.jpeg)

「Open」「はい」を選択
![WS000017.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/c30de1e0-373f-c4f5-d67a-3d3fc32ed0f3.jpeg)

「ec2-user」でログイン

![WS000018.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/0fd645a3-7849-c669-10f9-e3552a9681e0.jpeg)

![WS000019.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/7c63fb19-bac8-3416-d481-36ddd7e1fa6a.jpeg)

#初期設定
パッケージを最新に更新

```
$ sudo yum update -y
```

タイムゾーンを日本時間にセット
```
$ sudo vim /etc/sysconfig/clock
```

```/etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
```

日本時間にセット

```
$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
```

```
$ sudo vim /etc/sysconfig/i18n
```
```/etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
```

#PHP7.4インストール
```
$ sudo amazon-linux-extras install php7.4
```

```
$ php -v 
PHP 7.4.21 (cli) (built: Jul  7 2021 17:35:08) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
```

拡張モジュールをインストール

```
$sudo yum install php-mbstring php-pecl-memcached php-gd php-apcu php-xml php-mysql php-mysqlnd
```

/etc/php.ini 設定変更

```/etc/php.ini
$sudo vim /etc/php.ini

# HTTPヘッダにPHPのバージョンを記載しない(一応セキュリティ的にOffにしておいたほうが良い)
# expose_php = On
expose_php = Off

# メモリ上限を引き上げる(結構デフォルトのメモリは少なめなので増やしておくことが多い)
# memory_limit = 128M
memory_limit = 256M


# POST送信の許容サイズを引き上げる
# post_max_size = 8M
post_max_size = 16M

# アップロードファイルの許容サイズを引き上げる
# upload_max_filesize = 2M
upload_max_filesize = 16M

# timezoneの設定
# date.timezone =
date.timezone = Asia/Tokyo
```

php-fpmの再起動

```
$ sudo systemctl restart php-fpm
```

#apache2.4インストール
```
sudo yum install httpd
```

起動

```
sudo systemctl start httpd
```


起動確認

```
sudo systemctl status httpd
```
※『active (running)』が出ればOK

http://13.231.219.67/
![WS000000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/9b646f54-5ffa-8d11-02b1-4546d972357a.jpeg)

表示できることを確認

laravelのルート「/」以外 Not foundになるため、.htaccessの有効にする

```
$ sudo vim /etc/httpd/conf/httpd.conf
```

```/etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/"
  ↓
DocumentRoot "/var/www/html/【laravelパス】/public/"

<Directory "/var/www/html">
    AllowOverride None
</Directory>
  ↓
<Directory "/var/www/html">
    AllowOverride All
</Directory>
```

再起動

```
$ sudo systemctl restart httpd
```

#Laravelインストール

Composerをインストール

```
curl  -sS https://getcomposer.org/installer | php
```

composer のコマンドで実行できるように、PATHが通っている場所へ移動

```
sudo mv composer.phar /usr/local/bin/composer
```

```
cd /var/www/html
sudo chmod 777 /var/www/html/
```

```
composer create-project --prefer-dist laravel/laravel test
```

```
$ cd /var/www/html/test
$ composer update
$ chmod -R 777 bootstrap/cache
$ chmod -R 777 storage
$ cp .env.example .env
$ php artisan key:generate
```

http://13.231.219.67/test/public/
![WS000001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97130/76f70aa9-b0e2-6f0e-71d3-1ea7269dfde5.jpeg)