LaravelのHomestead環境構築方法（Windows10）

<img width="500" alt="laravel_logo" src="https://qiita-image-store.s3.amazonaws.com/0/211393/2e286291-c070-2c3f-3480-cfec1c4fe821.png">

# はじめに
PHPのフレームワークlaravelを使ってみました。
ここ数年で急激に人気上昇しているようです。
詳しくは、Googleトレンドを見ていただければ分かるかと思います。

今回は、公式が提供しているHomesteadという環境を構築をしてみました。
Homesteadでは以下のソフトウェアがデフォルトで入っているそうです。（[詳細ページ](https://readouble.com/laravel/5.6/ja/homestead.html)）


`Ubuntu 18.04`
`Git`
`PHP 7.2`
`PHP 7.1`
`PHP 7.0`
`PHP 5.6`
`Nginx`
`Apache (オプション)`
`MySQL`
`MariaDB (オプション)`
`Sqlite3`
`PostgreSQL`
`Composer`
`Node (Yarn、Bower、Bower、Grunt、Gulpを含む)`
`Redis`
`Memcached`
`Beanstalkd`
`Mailhog`
`Elasticsearch (オプション)`
`ngrok`
`wp-cli`
`Zend Z-Ray`
`Go`
`Minio`

色々入っていて、便利そうですね。
では始めます。

# 実行環境

- PCスペック
    - OS : windows 10 Home
    - CPU : corei7 4790
    - GPU : GeForce GTX 1060 6GB
    - RAM : 16GB
- ソフトウェアバージョン
    - PHP : 7.2.6
    - laravel : 5.6.26
    - VirtualBox : 5.2.12
    - Vagrant : 2.1.2
    - Git fot Windows : 2.17.1


# 用意するもの
- 実行環境に記載のあるソフトウェア
- 公開鍵・秘密鍵
    - ※この記事では、秘密鍵・公開鍵の生成方法は書いていないため


# Homestead環境の構築

## Laravelプロジェクト作成
最初にプロジェクトを作成します。

```shell

$ laravel new lara_app
```

## VagrantでHomestead用boxを追加

```shell

# 仮想環境構築のための基盤（box）を作成
# 以下コマンドを実行後、どのツールを使用するかの選択肢が表示
# 今回はvirtualboxを選択（数字を入力）
$ vagrant box add laravel/homestead

```

## GitでHomesteadのリポジトリをクローン
```shell

# Homesteadというディレクトリを作成し、その中にクローンしたものが入る
$ git clone https://github.com/laravel/homestead.git Homestead

# 作成したディレクトリに移動
$ cd Homestead
```

## Homestead設定ファイル作成

```
「init.bat」をダブルクリック
```

### init.batの中身
以下のコードが入力してあります。（日本語コメントは私が入れました）

```text:init.bat
@echo off

if ["%~1"]==["json"] (
    copy /-y resources\Homestead.json Homestead.json
)
if ["%~1"]==[""] (
    copy /-y resources\Homestead.yaml Homestead.yaml
)

# 指定したファイルをコピー
copy /-y resources\after.sh after.sh
copy /-y resources\aliases aliases

# 処理の最後にHomestead initialized!を表示
echo Homestead initialized!

```

## Homestead設定ファイル編集
```shell

# 「Homestead.yaml」を開き、編集
# コマンドはvimにしたが、メモ帳で開いても問題ない
$ vim Homestead.yaml
```

### Homestead.yamlの中身と編集内容
```yaml
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

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

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

databases:
    - homestead

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp
```
|*設定項目*|*説明*|*備考*
|---|---|---|
|ip|割り当てるIP|デフォルトOK|
|memory|割り当てるメモリ|デフォルトOK|
|cpus|割り当てるコア数|デフォルトOK|
|provider|使用しているVM|今回はVirtualBox|
|authorize|SSH公開鍵のパス|デフォルトOK|
|keys|SSH秘密鍵のパス|デフォルトOK|
|folders|共有フォルダ設定|map : 共有元(windows上のプロジェクトのパス<br>to　 : 共有先(仮想マシンのパス)　デフォルトOK|
|sites|公開設定|map : ホスト名　　デフォルトOK<br>to　 : 公開ルート　デフォルトOK|
|databases|データベース|デフォルトOK|
|blackfire|[blackfire設定](https://blackfire.io/)|デフォルトOK|
|ports|ポート設定|デフォルトOK|

## ホストファイルの編集
hostsファイルにHomestead.yamlで設定したIPアドレスとホスト名を追記します。
hostsファイルは以下の場所に置いてあります。

`C:\Windows\System32\drivers\etc\hosts`

しかし編集しようとすると、権限がなく読み取り専用となってしまうため、
そのまま開くのではなく編集の仕方を変えましょう。

### hostsファイルの編集の仕方
以下の手順に従ってhostsを開きましょう。


*①メモ帳を右クリックし、「管理者として実行」で開く*
*②メモ帳内のメニューバー「ファイル」から「開く」をクリック*
*③ `C:\Windows\System32\drivers\etc\hosts`を選択*


他の開き方もあるので、これでダメな場合は、他の方法も試してみてください。
### hostsファイルの編集内容
最終行に以下を追加

```
192.168.10.10  homestead.test
```


## 仮想マシン起動
```
$ vagrant up
```

## ブラウザ確認
以下にアクセスし、Laravelの文字が表示されれば完了です。


http://homestead.test/


![laravel.png](https://qiita-image-store.s3.amazonaws.com/0/211393/18dadc26-cfab-743e-778d-459c6d7b8d66.png)


# 感想
公式がboxを用意してくれて、簡単に環境構築できるので助かります。
環境構築が楽でも、フレームワークとして使いにくければ意味がないですが、
Laravelは評価が高く、人気のようなので期待して使ってみます。

ありがとうございました。