Laravelの環境を最速で作ってみよう(5.5 LTS版で)

# 投稿に至った訳

SESで行った現場でスクラッチ開発だったのですが、『あ、Laravelで作りたいんだけど環境構築からよろしく』という話になり、そして一人で作る必要が出てきて必死に調べました。
そうしたら、わりと簡単に作れる方法を一筆書きでやれそうな雰囲気を感じたので、備忘録兼、別のところでも使えるように書き残そうと思いました（小並感）

---

## この記事で役立てそうな人
- 環境構築を1回以上経験している
- 環境構築苦手
- ドキュメントを読むとなぜか頭痛が痛い()状態になってしまう人
- 毎回環境構築で１日も２日も掛けてしまう人
向けのサプリメントとして容量用法を正しくお使いください。

---

## 完成フロー
PHP　導入（7.2.*）
↓
Composer　導入(最新版)
↓
VirtualBox 導入(最新版)
↓
Vagrant　導入(最新版)
↓
Vagrant Box　導入(最新版)
↓
Homestead 導入(最新版)
↓
Laravel 導入(5.5)
↓
Vagrant環境構築
↓
Laravel環境構築完了

---

ついでに`Composer　require`を用いて`twbs/bootstrap`も生成してみようかと思います。

## PHPを導入する
正直面倒なのでMacの人はMAMP、Windowsの人はXamppをインストールしてください。
LaravelはPHPのバージョン依存があるため7.0以上、セキュリティサポート面も細かく考えているのであれば7.2以上を推奨します。
サポート周りの情報を取りまとめてくださった方がいらっしゃるので[こちら](https://qiita.com/bezeklik/items/72d1ff8393f66673e2bc)からご覧ください。
(@bezeklik 様、ありがとうございます。)
どちらも7.2.*のPHP.iniを持ってこれればyumやbrewで.pearを得たりしてもOKです。

---

## Composerを導入する

#### Mac/Windows
以下をインストールしてやった方がはやいです。
https://getcomposer.org/download/

```terminal:command
#Mac/Windows 共通
// 以下コマンド
composer
```
Compsoerのコマンドやらタイトルやらが流れ始めたら導入完了です。

---

## Vagrantを導入する
以下URLから導入したら早いと思います。
https://www.vagrantup.com/downloads.html

---

## Vagrant Boxを導入する
これを自分の立ち上げたいディレクトリで叩く

```terminal:command
vagrant box add laravel/homestead
```

shellが走るとクエスチョンが発生するのでチョイスは`Vagrant`のあるナンバーを叩いてください。

---

## Homesteadを導入
自分が環境構築したい環境下で以下コマンド

```terminal:command
git clone https://github.com/laravel/homestead.git Homestead
```

---

## Laravelを導入
ようやくここで本題のLaravelです。思ったより長い。

Homestead上にプロジェクトをそのまま落とす関係上、composerから
`cd Homestead`でHomestead直下に入ってから以下コマンド

```terminal:command
composer create-project --prefer-dist laravel/laravel useProjectName "5.5.*"
```
Laravelの必要なパッケージがインストールされるまで眺めましょう



---

##### お好きなエディタをインストールしてください（してあるならそれでOKです）
初学者はAtomなどおすすめします。（個人的オススメ）
最近だとIDEはPhpStormは非常におすすめです。
　※有料なのでお財布とご検討ください。

---

## 書き換え
Homesteadを作成するためのファイルを作成します

```terminal:command
// Mac / Linux...
bash init.sh

// Windows...
init.bat
```
---

Homestead直下にある`Homestead.yaml`をエディタで開いてください。

いろいろと書いてありますが以下の場所を次のように変更ください

---

- Windows

```yaml:homestead.yaml
folders:
 - map: C:/Users/my_name_dir/Laravelのあるディレクトリまで/MyLaravel
 to: /home/vagrant/MyLaravelName ← 仮想環境上のディレクトリ

sites:
 - map: homestead.test ホスト名（あとでhostsに登録します）
 to: /home/vagrant/Code/Laravel/public
```

- Mac

```yaml:homestead.yaml
folders:
 - map: \Users\MyNameDir\Laravelのあるディレクトリまで\MyLaravelName
 to: /home/vagrant/MyLaravelName ← 仮想環境上のディレクトリ

sites:
 - map: homestead.test ホスト名（あとでhostsに登録します）
 to: /home/vagrant/Code/Laravel/public
```

---

## 秘密鍵を作成する
Vagrantで立ち上げる時は秘密鍵を参照する必要があるので作成します

秘密鍵用ディレクトリの作成

~~~terminal:command
mkdir c:\Users\myNameDir\.ssh
~~~

### Windowsの方
Windowsのcmdとpowershellには鍵を作成するコマンドが存在しないので、GitBashを導入する
https://gitforwindows.org/

ダウンロードができたらGitBashを起動してコマンドライン上で以下を叩く

~~~terminal:command
ssh-keygen -t rsa -b 4096 -C "myMailAddress" -f ~/.ssh/id_rsa
~~~
あとは流れに沿ってパスフレーズを設定すれば完了です。

### Mac
Macはterminal上で操作可能なのでそのまま以下コマンドで作成

~~~terminal:command
ssh-keygen -t rsa -b 4096 -C "myMailAddress" -f ~/.ssh/id_rsa
~~~
あとは流れに沿ってパスフレーズを設定すれば完了です。

---

ここまでやってだいたいほとんどの導線が出来上がりました。
あとは `Vagrant up` ですべてを動かす準備ができます。

---

## hostsにローカルIPを設定する
ローカルIPは `Homestead.yaml` に設定されてあります。
ipとドメインを並べてドメインでアクセスできるようにしましょう。

~~~vim:hosts
192.168.10.10 homestead.test 
~~~

---

お疲れさまでした。これでLaravelの環境構築は終了となります。
あとはドメインにアクセスすればLaravelの初期ページにいけるでしょう。

---

## twbs/bootstrapを導入する
composerで構築したLaravelディレクトリの直下に入ってコマンドを叩きます

~~~terminal:command
#特にバージョンを気にしないのであれば
compsoer require twbs/bootstrap

#何かしらの制約があってバージョンを指定する場合
composer require :4.2.1
~~~

---

### あとがきと反省
一筆書きな感じで書きました。
この記事を随時更新していきます。
正直もう少し画像とかを差し込んで作りたいなとか思っているので、早い段階で更新する予定（希望的観測）
他にもエラーが出たらどうするんだよみたいなところもケースに考慮してない、すごくうまくいくパターンしかありませんのでNGパターンも追加したいなーと。

~~そもそもこれでエラーを吐いたことないからどうやってエラーを吐くんだろう~~

反省その１
・意味の分からんチェック漏れで大幅な行間を汲み取れになっていた
　→本当に申し訳ありません……寝ぼけてたんですかね。
　~~それとも案件先の謎の圧迫抜き打ちテストで精神を削られたからですかね~~