PHP/Laravel で作成したプロジェクトをAWSにデプロイ

<h1>前提</h1>

・ローカルで開発したプロジェクトをすでにgithubにプッシュ済み
・EC2にSSH接続できている事

<h1>PHP7.2のインストール</h1>
`````
$sudo yum install -y \
  php72 php72-devel php72-fpm php72-gd php72-mbstring \
  php72-mysqlnd php72-pdo \
  php72-xml php72-json

インストール済みを確認
$sudo yum list installed | grep php72
````

<h1>Mysqlのインストールと動作の確認</h1>
```
インストール
$sudo yum -y install mysql56-server mysql56-devel mysql56

スタート
$sudo service mysqld start

動いているか確認（runnning)になっていればOKです。
$sudo service mysqld status
mysqld (pid ) is running...
```

<h1>Mysqlのパスワードの設定</h1>
0から始まるパスワードは上手く読み込んでくれないことがあるため0から始まるのは避けましょう
この時に「Warning: Using a password on the command line interface can be insecure.」と表示されることがありますが無視しても問題ありません。

```
 $sudo /usr/libexec/mysql56/mysqladmin -u root password 'ここを設定したいパスワードに変更してからコマンドを実行してください'
```

<h1>設定したパスワードでの接続確認</h1>
以下のコマンドを入力するとEnter password: とパスワードを入力するように表示されるので、
先程設定したパスワードを入力して、Enterしてください。以下のように表示されれば、MySQLの設定は終了です。

```
$ mysql -u root -p


↓↓がパスワード入力後に表示されれば設定は終了。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.33 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```

<h1>appacheインストール</h1>

```
$sudo yum install -y httpd24


webサーバの起動
$sudo service httpd start

システムがブートするたびにapacheが起動するよう設定
$sudo chkconfig httpd on

有効か確認
$chkconfig --list httpd

```

ドキュメントルートの権限変更


```
ユーザをapacheグループに追加
sudo usermod -a -G apache ec2-user

グループのメンバーシップを検証
groups

グループ所有権をapacheグループに変更
sudo chown -R ec2-user:apache /var/www

グループの書き込み許可追加
sudo chmod 2775 /var/www

サブディレクトにグループ ID を設定するには、/var/www とサブディレクトのディレクトリ許可
find /var/www -type d -exec sudo chmod 2775 {} \;

グループ書き込み許可を追加するには、/var/www とサブディレクトリのファイル許可を再帰的に変更します。
find /var/www -type f -exec sudo chmod 0664 {} \;
```

<h1>gitのインストール</h1>

```
sudo yum install git
```

<h1>composerのインストール</h1>

```
インストール
sudo curl -sS https://getcomposer.org/installer | php

パスを通す
sudo mv composer.phar /usr/local/bin/composer
```

<h1>git clone</h1>

```
cd /var/www/html

git clone クローンしたいgitのURLをここに貼る
```

<h1>appacheのドキュメントルートの設定</h1>

```
設定ファイルを開く
sudo vi /etc/httpd/conf/httpd.conf

ファイルを開くと真ん中より上のあたりにDocumentRoot "/var/www/html
という記述があるためそれを以下にに変更

DocumentRoot "/var/www/html/自分のlaravel_project/public

最終行に以下を追記
# .htaccess 有効化
<Directory /var/www/html/自分のlaravel_project/public>
    AllowOverride All
</Directory>

サービス再起動
sudo service httpd restart
```

<h1>パッケージのインストール</h1>

```
cd /var/www/html/laravelプロジェクト
composer install
```

<h1>プロジェクトの許可設定を変更</h1>

```
chmod 777 storage -R
chmod 777 bootstrap/cache -R
```

<h1>.envの設定</h1>

```
cp .env.example .env
vi .env

APP_URL=http://ElascticIPにする

DB_CONNECTION=mysql
DB_DATABASE=データベース名
DB_PASSWORD=設定したパスワード
```

<h1>キーを作成しキャッシュをクリア</h1>

```
php artisan key:generate
php artisan config:clear
```

<h1>データベースの作成</h1>
envファイルに記載したDB名と同じ名前のものを実際に作成します。

```
mysql -u root -p

create database envファイルにあるDB名と同じ名前にする;

exit

```

<h1>テーブル作成</h1>
```
php artisan migrate
```

<h1>シンボリックリンクの設定</h1>

```
php artisan storage:link
```

これで完了です。
あとはElasticIPを入力してサーバーアクセスしてみてください。
こちらの記事を参考にさせていただきながら一部は自分の環境に合わせて進めていきました。
https://qiita.com/nakm/items/0bcc6564538a0604b2ce