mac Laravel環境構築

#### 環境
OS macOS 10.13 High Sierra


事前準備として、xcodeをappストアからインストールしておく。


```bash
# brew install
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# check
$ brew -v

# 正常に動くか確認する
$ brew doctor
Your system is ready to brew.
```

ここでエラーが出たらエラー分を読んで対処

エラー例
- xcodeのコマンドラインツールがない。
(xcodeと一緒にインストールされるが、OSバージョンによって自動でインストールされないケースがある)
- 必要なディレクリがない
- パスが通っていない

```bash
# 匿名使用状況(homebrew開発者が使用ソフトのトレンドの参考にする)を送りたくない場合はこちらも
$ brew analytics off
# 確認
$ brew analytics
Analytics is disabled.
```

Homebrew
https://brew.sh/index_ja.html

```bash
$ brew install composer

$ composer -v
```
																																										
```bash

$ php -v
# PHPが7.1.3以上ならphpのインストール(このブロックをスキップする)

$ brew install php

$ brew services start php

# HPが7.1.3以上を確認
$ php -v
# terminal restart(一旦閉じてひらく)
```

### 既にmysqlが入っている場合は、mysqlをインストールしなくてよいです。他のを入れると設定が競合します。

「DBを作成する」までスキップしてやってください。

```bash
$ mysql -v
# mysqlが入っていたらこのブロックをスキップする

$ brew install mysql

$ brew services start mysql

# パスを通す
$ echo 'export PATH="/usr/local/opt/mysql/bin:$PATH"' >> ~/.bashrc

# 設定反映
$ source ~/.bashrc
```

### mysql セキュリティ設定(パスワード設定)
```bash
$ mysql_secure_installation

# パスワードを設定しますか？
Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y


# パスワードの強度はどうしますか？
There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Please set the password for root here.

New password:

Re-enter new password:

# パスワードの強度は50です
Estimated strength of the password: 50

# 提供されたパスワードを続行しますか？
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

# 　匿名ユーザを削除します？
匿名ユーザ ユーザ名なし、パスワードなしでログインできるユーザ、セキュリティ上好ましくない
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

# リモートからrootユーザのログインを不可にしますか？
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

# testDBを削除しますか？
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

# 今、変更を適用しますか？
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

$ mysql -uroot -p
# passwordを聞かれるので入力
# ログインできることを確認

$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.12 Homebrew

Copyright (c) 2000, 2018, 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>
```
Mac へ MySQL を Homebrew でインストールする手順
https://qiita.com/hkusu/items/cda3e8461e7a46ecf25d

### mysql8の認証プラグインの変更

Server version: 8.0.12 Homebrew

```bash
$ mysql -uroot -p

# 現状のプラグインを確認する

mysql> select user, host, plugin from mysql.user;

+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

# プラグインを変更する
# caching_sha2_password から mysql_native_password に変更する

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hogefugapiyoPassWord';
Query OK, 0 rows affected (0.20 sec)

# 変更できたかを確認する

mysql> select user, host, plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

# 一旦ぬける
mysql>exit;


```

MYSQL8.0におけるデフォルトの認証プラグインの変更
http://variable.jp/2018/02/23/mysql8-0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E8%AA%8D%E8%A8%BC%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E5%A4%89%E6%9B%B4/

Mac での MySQL セットアップ
https://qiita.com/itooww/items/13055c8bb1d226ee5844

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





```bash

# Laravelをインストールしたいディレクトリを作る。
# 既存であればスキップ

$ mkdir product

＃ 作りたいディレクトリに移動して次でLaravelインストール
$ cd product
$ composer create-project --prefer-dist laravel/laravel bbs

$ php artisan serve

# こちらにアクセスして確認する
# http://localhost:8000/
 
ちなみに、サーバーを落とすにはcontrol + Cを押下します
```

DBを作成する

```bash
$ mysql -uroot -p

mysql>create database bbs;

# できているか確認する
mysql>show databases;
```

DBを設定する

```bash:.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bbs
DB_USERNAME=root
DB_PASSWORD=＊＊＊＊＊＊＊
````

### DBの接続をテストする

```bash

$ php artisan migrate

Migration table created successfully.

Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table

$ php artisan tinker
Psy Shell v0.9.8 (PHP 7.2.10 — cli) by Justin Hileman

>>> App\User::all()->toArray();
=> []
// エラーがでなければOK
```

初めてのLARAVEL 5.6 : (6) データベースの環境設定
https://laravel10.wordpress.com/2015/02/21/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/#more-269