お手軽にPHPとLaravelのローカル開発環境を構築する

#概要
お手軽にサクッと、あまり知識がなくてもLaravelの開発環境をつくる
慣れたら10分程で終わります

**必要なもの**
- Local by Flywheel
- VirtualBox
- SequelPro
- composer

#Local by Flywheelをインストール
Local by FlywheelはWordPressのローカル開発環境として用いられていますが、PHPやLaravelの開発にも用いることが出来ます。

[こちら](https://bazubu.com/local-by-flywheel-33920.html)を参考に 
> Local by FlywheelでWordpressサイトを構築する

まで行ってください。

※もし、Local by Flywheelが起動しない場合、VirtualBoxがインストールされているか確認しましょう。

#PHPを実行する
Local by Flywheelでサイトを作り
下記の**Site Path**に記されたところにアクセスします

<img width="408" alt="スクリーンショット 2019-06-18 11.28.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/f7a794c7-92ca-b39e-ed78-4adfa675b868.png">

<img width="203" alt="スクリーンショット 2019-06-18 11.33.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/513ba885-a8d9-b23c-505e-bc9fc80e3fb6.png">

publicの中にwordpressのファイルがたくさんあるので、すべて削除します。
削除したら、`index.php`を作成してみます。

<img width="226" alt="スクリーンショット 2019-06-18 11.36.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/5e551ca6-fa1f-a80a-bbdf-7566697f05ab.png">

```index.php
<?php

phpinfo();


```

Local by FlywheelからView Siteを押すと、PHPが実行されているのがわかると思います。

<img width="973" alt="スクリーンショット 2019-06-18 11.40.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/40208bca-39f5-8dee-3bfd-0ab2ab82edad.png">


#Laravelの開発環境を作成する
##Composerをインストール
**PC本体にComposerを既にインストールしている場合は不要です。**
サイト名を右クリックし、Open Site SSHを選択します。

<img width="1280" alt="スクリーンショット 2019-06-18 11.46.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/c6bac5e5-1c40-0955-547e-c867f3ca528f.png">


ターミナルが立ち上がるはずです。

```
php -r "readfile('https://getcomposer.org/installer');" | php
```

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

上記のコマンドをそれぞれ叩いた後、`composer`と入力し、Composerのロゴが出たら成功です。

##Laravelインストール

`cd /app/public/`でpublicへ移動します。

```
composer create-project laravel/laravel --prefer-dist 【プロジェクト名】 5.8
```

LaravelをComposerからインストールします。
`Do not run Composer as root/super user!`と出ますが、警告なので無視します。
あとはインストールが終わるまで待ちます。

`cd /app/public/【プロジェクト名】`でLaravelのプロジェクト内に移動します。

```
# storageのパーミッションを変更
chmod -R 777 storage

# bootstrap/cacheのパーミッションを変更
chmod -R 777 bootstrap/cache

```
パーミッションを変更しましょう。
終わったら、ターミナルを終了して問題ありません。

##ドキュメントルートを変更する
Local by FlywheelのView　Siteを押したときにLaravelのページが出るようにします。

**Apacheの場合**

000-dafault.confを開き、DocumentRootを変更します。

<img width="310" alt="スクリーンショット 2019-06-18 12.55.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/02c890ac-18ce-39b7-25eb-6f8ae4e14b78.png">

`DocumentRoot /app/public/プロジェクト名/public`
に変更します。

<img width="385" alt="スクリーンショット 2019-06-18 13.01.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/6b1cce57-dfdc-d54b-d6b8-c6e4e0bdb2e4.png">

**nginxの場合**

site.confを開き、rootを変更します。

<img width="313" alt="スクリーンショット 2019-06-18 13.10.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/0701ac23-805e-51d2-bae6-fdb099daee32.png">

`root /app/public/プロジェクト名/public`
に変更します。

<img width="306" alt="スクリーンショット 2019-06-18 13.13.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/fbacbc72-cebf-fc30-db44-c75ae476a1af.png">


Local By Flywheel から**Site Stop**し、再度立ち上げView SiteでLaravelのwelcomeページが見えるはずです

##データベース接続する
SequelProをインストールしましょう。
Local By FlywheelのDATABASEタブを選択し、CONNECTからDownload SEQUEL PROを選択します
<img width="833" alt="スクリーンショット 2019-06-18 14.43.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/fa50b91d-f84f-6347-a2ef-c39c91b02f5f.png">

ダウンロード完了後、開き接続します

<img width="730" alt="スクリーンショット 2019-06-18 14.50.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/bf5c6c3f-f822-5c65-202a-9ec2794a7737.png">

Local By FlywheelのDATABASEタブを見て入力していきます

- ホストにはRemote Hostの値
- ユーザー名とパスワードはデフォルトでroot
- ポートはRemote Portの値

を入力し接続を押します。
接続し、左上からデータベースを追加しましょう。

<img width="947" alt="スクリーンショット 2019-06-18 15.07.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/b1bf9b20-8bf4-cfe5-e8f2-6521eac248ff.png">

MySQLのバージョン的に、utf8mb4にするとマイグレーション事項した際にエラーが発生するので、それを避けるためにutf8にしてます。
utf8mb4にする場合、uniqueキーや、indexが設定されているカラムの長さを191以下に設定しておいてください

<img width="397" alt="スクリーンショット 2019-06-18 15.26.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174757/efd4cd89-97fe-a26f-5449-8127af6b317a.png">

あとは、Laravelのプロジェクト内の`.env`を設定しておきます

```.env

DB_CONNECTION=mysql
DB_HOST=【Remote Host】
DB_PORT=【Remote Port】
DB_DATABASE=【作成したDB名】
DB_USERNAME=root
DB_PASSWORD=root

```

設定したら、ターミナルから

```
php artisan migrate
```
が成功すればオッケー


ローカル環境で個人でやるにはこれでもいい気がする
本当はDockerとかvagrantとか学ぶのがいいんだろうけど...