Laravel Homestead でLaravel 開発環境を構築してみた

# 概要

Laravel HomesteadというLaravel公式の仮想マシンで、
Laravel開発環境を構築してみました。
ここではその構築手順を記載します。

このLaravel Homesteadでは必要なソフトウェアが仮想環境内に入っていて、
ローカルマシンにそれぞれインストールせずに環境構築を完了できます。
[Laravel公式ページ](https://readouble.com/laravel/5.8/ja/installation.html)で推奨されているやり方です(2019/04/01当時)。

# 注意事項、留意点

- 基本的には[公式ドキュメント](https://readouble.com/laravel/5.8/ja/homestead.html)を参考にしてます
- というよりほぼそれを見て構築しました。
- 他の仮想化ソフトウェアでもOKらしいです(VMWareなど)が、無料なのでVirtualBoxを使いました。

# 前提条件

- バージョン
    - OS: MacOS 10.14.2
    - VirtualBox: 6.0.4
    - Vagrant: 2.2.4
    - laravel: 5.8
- 更新日
    - 2019/04/17
   
---

# 実際の手順

## 1. VirtualBoxのインストール(インストールしてない場合のみ)

- [VirtualBox](https://www.virtualbox.org/wiki/Downloads)からダウンロードします
  - お使いのOSのhostsを選んでクリックし、ダウンロードします
- ダウンロードされたdmgファイルをクリックします
- pkgファイルのアイコンが表示されるので、それをダブルクリックしします
- そのあとはインストール画面に則ってインストールします
  - 「安全でないアプリケーション」等が出てインストールできない場合は、以下を確認してください
    - 左上のアップルマーク →「システム環境設定」 →「セキュリティとプライバシー」
  - 左下の鍵マークをクリックしてインストールの許可を行ってください
- VirtualBoxがアプリケーションに表示されていればOKです

## 2. Vagrant のインストール(インストールしてない場合のみ)

- [Vagrant](https://www.vagrantup.com/downloads.html)からダウンロードします
  - お使いのOSを選んでクリックし、ダウンロードします
- ダウンロードされたdmgファイルをクリックします
- pkgファイルのアイコンが表示されるので、それをダブルクリックします
- そのあとはインストール画面に則ってインストールします(怒られたらVirtualBoxと同様に対応してください)
- ターミナルで`vagrant -v`を叩いて、バージョン情報が表示されればOKです(こちらはアプリケーションに出ません)

## 3. Homestead Vagrant Boxのインストール

- Laravel用のボックス(ベースとなるイメージ)であるHomestead Vagrant Boxを以下コマンドでインストールします
- これを叩くことで、複数の環境で laravel/homestead ボックスを呼び出せるようになります

```
vagrant box add laravel/homestead
```

- 途中provider を選択する箇所があるので、VirtualBoxを選択します
- 問題なくいけば成功です
- Vagrantのバージョンが古い場合に失敗する可能性があるらしいので、その場合はバージョンを確認してみてください

## 4. Homesteadのインストール

- Homestead をリポジトリからクローンします

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

- masterだと安定しない可能性があるため、バージョンタグがついたHomesteadをチェックアウトします  
(私が見た時の最新バージョンは`v8.2.0`でした)

```
cd ~/Homestead
git checkout v8.2.0
```

- `Homestead.yaml`設定ファイルを生成する用のバッシュコマンドを実行します  
(`init.sh`ファイルの中をみたらわかりますが、resourceディレクトリ内のyamlファイルをコピーしているだけです)

```
bash init.sh
```

## 5. Homesteadの設定

- `Homestead.yaml`内の`provider`を`virtualbox`に書き換えます  
(デフォルトが`virtualbox`になっていたので書き換え不要でしたが、一応確認しましょう)

```
provider: virtualbox
```

- `Homestead.yaml`内の`folders`を書き換え、共有フォルダを設定します
(ここでは`/laravel/environment_homestead/`ディレクトリを作って、この中のディレクトリ全てをHomestead環境と同期するようにします)

```
folders:
    - map: ~/laravel/environment_homestead
      to: /home/vagrant/code
      type: "nfs"
```

## 6. Nginxの設定

- `Homestead.yaml`内の`sites`を書き換え、Nginxを設定します
(ここでは`startlaravel`という名前のlaravelプロジェクトをあとで作成することを前提としています)

```
sites:
    - map: homestead.test
      to: /home/vagrant/code/startlaravel/public
```

## 7. hostsファイルの書き換え

- `/etc/hosts`ファイルに以下を追加し、ローカルドメインへのリクエストをHomesteadに転送されるようにします

```
192.168.10.10  homestead.test
```


## 8. Vagrantの起動、ssh接続

- 以下コマンドでvagrantを起動します

```
vagrant up
```

- 以下コマンドでssh接続します

```
vagrant ssh
```

## 9. vagrant内でLaravelプロジェクトを作成

- 以下コマンドで`code`ディレクトリに移動して、laravelプロジェクトを作成します  
(ここでは `startlaravel`というプロジェクトを開始しますが、何でも構いません。ただし6で行ったNginxの設定と同じディレクトリルートにしましょう)

```
vagrant@homestead:~$ cd code
vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel startlaravel
```

## 10. サイトを開く

- `http://homestead.test`で以下の画面が表示されればOKです![スクリーンショット 2019-04-17 21.39.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195687/2c9972ed-cc8c-19d9-9acf-694831cffcc7.png)


# 参照

以下のサイトを参考にしました。

[Laravel Homestead イントロダクション](https://readouble.com/laravel/5.8/ja/homestead.html)
[Homestead GitHubリポジトリ](https://github.com/laravel/homestead)