Laravel5.8 MAMPを利用した開発環境構築

# 内容
- MacでのMAMPを使用したLaravel5.8開発環境を構築
- 環境構築と言っても必要なものをインストールし、プロジェクトを作成するだけのシンプルな手順解説


# 環境
- OS macOS Mojave 10.14.6
- MAMP 5.3
- PHP 7.3.1
- MySQL 5.7.25
- Composer 1.8.6


# MAMPの導入
入っていることを想定して省略

# Composerのインストール
LaravelなどのPHPのフレームワークを使用する際にComposerというPHPのパッケージ管理ソフトを利用する。

```sh
# Composerのインストール
$ curl -sS https://getcomposer.org/installer | php

# ファイルをusr/local/binへ移動
$ sudo mv composer.phar /usr/local/bin/composer

# パーミッションの変更
# aは全てという意味、xは実行権、この場合全ての項目で実行権を与えるということ
$ chmod a+x /usr/local/bin/composer
```

これでComposerがインストールされ、Laravelをインストールする準備完了

```sh
# 確認
$ composer -V
```

# Laravelのインストール
Composerを使ってLaravelをインストールする

```sh
$ composer global require "laravel/installer"
```

Laravelインストール後は環境変数PATHを設定する

```sh
$ export PATH="$PATH:~/.composer/vendor/bin"

# パスをsourceコマンドで有効にする
$ source ~/.bash_profile
```

※ PATHの通し方についての説明
https://qiita.com/KZ-taran/items/0cb2cfa64625ec1b58a9



# プロジェクトの作成
`/Application/MAMP/htdocs/`に**laravel_sample**というプロジェクトを作成することとする
`/Application/MAMP/htdocs/`に移動し、下記コマンド入力

```sh:/Application/MAMP/htdocs/
# /Application/MAMP/htdocs/に移動
$ cd /Application/MAMP/htdocs/

# Laravelコマンドを使ってプロジェクトの作成
$ laravel new {プロジェクト名}
# laravel_sampleというプロジェクトを作成する場合
$ laravel new laravel_sample
```

コマンド実行後、成功すればプロジェクトが生成される。
laravelのフレームワークのversionを確認する場合

```sh:/Application/MAMP/htdocs/laravel_sample/
# プロジェクトまで移動
$ cd /Application/MAMP/htdocs/laravel_sample/

# Laravelフレームワークのバージョン確認
php artisan --version

# (補足)単にLaravelインストーラーのバージョン確認
$ laravel -V
```

# MySQLを使用する場合
## MySQLへのログイン(PATHを通していない場合)

```sh
# PATHを通さないmysqlログイン手順
# MAMPのmysqlmコマンドが入っているディレクトリに移動する
$ cd /Applications/MAMP/Library/bin/

# DBへログイン
$ ./mysql -u root -p
```

## MySQLへのログイン(PATHを通す場合)

```sh
# エディタviで~/.bash_profileを編集する
$ vim ~/.bash_profile

# 下記内容を追加
# テキスト挿入の際にはiを押してから
$ export PATH=/Applications/MAMP/Library/bin:$PATH

# 書き込み終了の際はescで抜けてから:wqで保存し、次のコードで変更を反映させる
$ source ~/.bash_profile
```

これにより、どのディレクトリからでも次のコマンドでmysqlログイン可能になる

```sh
$ mysql -u root -p
```



## プロジェクトのenvファイルの修正
DB設定値を使用するMySQLの情報へ変更していく

```php:/Application/MAMP/htdocs/laravel_sample/.env
// 変更前
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

// 変更後
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_sample  // (使用するDB名)
DB_USERNAME=root  // (DBのユーザー名（仮にrootとする))
DB_PASSWORD=root  // (DBのPW（仮にrootとする))
```

# DBのコネクションの設定
`/config/databases.php`の変更

```php:/Application/MAMP/htdocs/laravel_sample/config/databases.php
// 変更箇所　デフォルト
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),

// 今回の修正
'database' => env('DB_DATABASE', 'laravel_sample(.envで設定したDB名)'),
'username' => env('DB_USERNAME', 'root（.envで設定したユーザー名）'),
'password' => env('DB_PASSWORD', 'root（.envで設定したPASS）'),
'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),

// 'DB_SOCKET'はmysqlで次のコマンドで確認できる
SHOW VARIABLES LIKE '%sock%';
```

# デバッグ設定の有効
Laravelではエラーや例外処理はすでに設定されているため**try**, **catch**を書く必要はなく、アプリケーションエラー発生時にどの程度の情報を表示させるか```config/app.php```設定ファイルのdebug設定オプションで設定する

```php:/Application/MAMP/htdocs/laravel_sample/config/app.php
// 変更前
// デバッグを有効にする際には'APP_DEBUG'をtrueにし、リリースするときには必ずfalseにする
'debug' => env('APP_DEBUG', false),　　

// 変更後
'debug' => env('APP_DEBUG', true),
```

# サーバーの起動
LaravelにはWebサーバー機能が備わっている

```sh
# サーバー起動方法
$ php artisan serve
```

以上で完了
`http://localhost:8000`で確認できる

# (補足) Laravel よく使うディレクトリ構成
https://readouble.com/laravel/5.8/ja/structure.html

```php
app   // ModelやContoller
└─ Http
    └─ Controllers  // Controller
    
config  // 各種設定ファイル

database  // マイグレーションと初期設定(シーディング)
├─ factories
├─ migrations  // マイグレーションファイル
└─ seeds  // シーディングファイル
    
public  // アセット(画像, JavaScript, CSSなど)

resources  // Viewやアセットのビルド前のファイル
└─ views  // View

routes
└─ web.php  // ルーティング設定

storage  // コンパイルされたBladeテンプレート、ファイルベースのセッション、ファイルキャッシュなどのフレーム
└─ logs  // ログ
```