MacBook ProでHomesteadを使ったLaravelのローカル開発環境構築手順

# 本稿の目的 & 前置き

今更感が半端ないが、会社のPCを買い換えた関係でイチから開発環境を構築しなくてはいけなくなった。そのため、今まで愛用していたHomesteadから本格的にLaradockに乗り換えようと思ってはいるものの、以前の案件の開発環境も整えておくため、Homesteadが動かせる環境も作っておく必要がある。せっかくなので初学者向けにまとめておくことにしました。Laradockでの環境構築については以下の記事に書いてあるのでよければどうぞ（宣伝）

[MacBook ProでLaraDockを使ったLaravelのローカル開発環境構築手順](https://qiita.com/yamaji_daisuke/items/186dd51fb8aaafe9687d)

以下の環境でHomesteadを使ったLaravelのローカル環境構築をしていきます。

macOS Mojave
MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)

# インストール

Homesteadを簡単に説明すると、「Laravelで開発するのに必要なものをすべて整えた状態の仮想環境」です。この仮想環境をVirtualBoxという仮想マシンで動かします。で、このVirtualBoxを簡単に操作するためにVagrantというツールを使います。

※この部分は噛み砕いて説明するためにかなり語弊があるかと思いますが、初学者向けの記事なのでご容赦ください。もっとわかりやすい説明とかあったらコメントで教えてくださると幸いです。

なので、Homesteadを利用するにはまずVirtualBox、Vagrantの2つをインストールする必要があります。

## VirtualBox

2018.10.17現在の最新であるv5.2.20をダウンロード & インストールします。

[VirtualBox 公式](https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp)

Mojaveが出たばかりのころにインストールできない問題やら起動できない問題があったみたいですが、VirtualBox 5.2.14以降は解決しているはずです。

## Vagrant

2018.10.17現在の最新であるv2.1.5をダウンロード & インストールします。

[Vagrant 公式](https://www.vagrantup.com/downloads.html)

## Homestead

さて、いよいよ本題のHomesteadです。以下の公式ドキュメントが詳しくわかりやすいです。

[Laravel Homestead 公式](https://readouble.com/laravel/5.7/ja/homestead.html)

一応実際にやっていきます。

まずはHomesteadのboxファイルをダウンロードして、Vagrant上から利用できるようにします。boxファイルは結構な容量があるので、この操作にはそこそこ時間がかかります。

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

途中で

```
Please review the list and choose
the provider you will be working with.

1) hyperv
2) parallels
3) virtualbox
4) vmware_desktop

```

と質問されるので素直に3と答えましょう。
boxファイルのダウンロードが終わったら、つぎはHomesteadのインストールです。

```
$ git clone https://github.com/laravel/homestead.git homestead
$ cd homestead
$ git checkout v7.18.0
```

git cloneした段階ではmasterブランチなので、今回はとりあえず2018.10.17現在の最新の安定バージョンであるv7.18.0をチェックアウトしています。古いバージョンを使わなくてはいけない場合もありますので、必要なバージョンを調べてチェックアウトしてください。仮にmasterブランチのまま使ってもそう問題ないと思いますが、自己責任でどうぞ。リリースバージョンは[こちら](https://github.com/laravel/homestead/releases)で調べられます。

さて、そのままhomesteadディレクトリで作業を続けます。

```
$ bash init.sh
```

これを実行するとHomestead.yamlが生成されます。が、とりあえず無視でかまいません。Homesteadを起動させてみましょう。

```
$ vagrant up
```

ごちゃごちゃとログが流れて起動がはじまれば成功です。が、

```
Check your Homestead.yaml file, the path to your private key does not exist.
```

こんな感じでエラーが出て場合、sshの鍵を作っておく必要があります。ここでは詳しく解説しませんが、作り方だけ書いておきます。

```
$ install -m 0700 -d ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "あなたのメールアドレス" -f ~/.ssh/id_rsa
```

※パスフレーズを聞かれるのでお好きなものを

さて、Homesteadが立ち上がったら仮想マシンにログインします。

```
$ vagrant ssh

Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-32-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Oct 16 23:22:26 UTC 2018

  System load:  0.02              Processes:           127
  Usage of /:   9.5% of 61.80GB   Users logged in:     0
  Memory usage: 20%               IP address for eth0: 10.0.2.15
  Swap usage:   0%                IP address for eth1: 192.168.10.10


0 packages can be updated.
0 updates are security updates.


vagrant@homestead:~$
```

これでvagrantユーザーとして仮想マシンに入れました。そのまま仮想環境上にLaravelのプロジェクトをつくってみます。

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

プロジェクト名をcodeにしていますが、Homesteadのデフォルト設定にあわせています。こうすると設定を変更しなくてもそのままブラウザからアクセスできます。http://192.168.10.10/ にアクセスしてみましょう。

<img width="956" alt="スクリーンショット 2018-10-17 8.36.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/69727/1ec39f7c-7247-f844-3604-750be83c26ba.png">

例の画面が表示されました。これで一応終了になります。

## Laravelプロジェクトをホストに移動

ホストというのはHomesteadをインストールしたPC、この記事だとMacBook Proのことです。現在ホスト上でHomesteadを起動させているわけですが、以後、ホスト側の操作なのか、Homestead側の操作なのか注意してください。

さて、このままだと作成したLaravelプロジェクトにコードを書くにはいちいちHomesteadに入ってviなどで編集する必要がでてきます。好きなエディタで開発するためにも、Laravelプロジェクトをホスト上に配置しておきたいですよね。いまからその方法について書いてみたいと思います

Homestead上で作成したcodeというディレクトリを/vagrant/codeに移動し、一旦Homesteadからログアウトします。

```
vagrant@homestead:~$ mv code /vagrant/code
vagrant@homestead:~$ exit
```

すると、ホスト上のhomesteadディレクトリの中に、先ほどHomestead上で作成したはずのLaravelプロジェクトが出現しました。さて、つぎにHomestead.yamlを編集します。

```
$ vi Homestead.yaml

folders:
    - map: ~/code
      to: /home/vagrant/code
```

このmapのところを、ホスト上にあるcodeへのパスを書きます。私の環境だとこんな感じです。

```
folders:
    - map: ~/homestead/code
      to: /home/vagrant/code
```

編集できたらHomesteadを再起動してから再度ログインします。

```
$ vagrant reload
$ vagrant ssh

vagrant@homestead:~$ ls -la

drwxr-xr-x  1 vagrant vagrant 1120 Oct 16 22:47 code
```

先ほど`mv code /vagrant/code`したはずですが、またcodeが復活してます。ブラウザで先ほど同様に動いていることを確認しましょう。

初学者の方にはなにが起こってるのかよくわからないかとおもいますが、ホストとHomesteadでLaravelプロジェクトを共有してた、みたいな感覚でとりあえずはいいかと思います（雑）

# 終わりに

間違いあったら指摘おなしゃーす。