【Laravel 5.5 or latest】Homestead で mac に Laravel 開発環境を構築

# はじめに

前回の記事：[Qiita - 【Laravel超入門】開発環境の構築（VirtualBox + Vagrant + Homestead + Composer）](https://qiita.com/7968/items/97dd634608f37892b18a)

前回の記事は Laravel 5.4 のときに構築した手順です。
少し古い箇所もあるため書き直しました。
今回は下記のバージョンで構築した手順を記載しています。

|OS|git|VirtualBox|Vagrant|
|:--|:--|:--|:--|
|macOS High Sierra 10.13.6|2.19.1|5.2|2.1.5|

Laravel の最新バージョンのダウンロード方法と、LTS の Laravel 5.5 の最新バージョンのダウンロード方法を説明しています。
今回は mac のみの手順となります。Windowsの方は前回の記事を参考にしてください。

前回の記事の第1章から第5章で Laravel、VirtualBox、Vagrant、Homestead、Composerの基本的な説明をしております。
この記事では第6章にあたる開発環境の構築のみ言及しています。
基本的なことについて理解していない方は、前回の記事をご覧ください。

# 開発環境の構築

Homestead を利用して、開発環境の構築をしていきましょう。

1. [Vagrant と VirtualBox のダウンロードとインストール](https://qiita.com/7968/items/68b3566d92d2b007038e#step-1vagrant-%E3%81%A8-virtualbox-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
1. [Homestead vagrant box のダウンロード](https://qiita.com/7968/items/68b3566d92d2b007038e#step-2homestead-vagrant-box-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89)
1. [Laravel Homestead のダウンロード](https://qiita.com/7968/items/68b3566d92d2b007038e#step-3homstead-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89)
1. [Homestead の設定ファイルの作成](https://qiita.com/7968/items/68b3566d92d2b007038e#step-4laravel-homestead-%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90)
1. [SSH 鍵ファイルの作成](https://qiita.com/7968/items/68b3566d92d2b007038e#step-5ssh%E9%8D%B5%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90)
1. [Homestead の設定ファイルの編集](https://qiita.com/7968/items/68b3566d92d2b007038e#step-6homestead-%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%B7%A8%E9%9B%86)
1. [仮想マシンの起動](https://qiita.com/7968/items/68b3566d92d2b007038e#step-7%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%AE%E8%B5%B7%E5%8B%95)
1. [仮想マシン上で Composer を利用して、Laravel ファイルをダウンロードする](https://qiita.com/7968/items/68b3566d92d2b007038e#step-8%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E4%B8%8A%E3%81%A7-composer-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6laravel-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B)
1. [Laravel ページの表示](https://qiita.com/7968/items/68b3566d92d2b007038e#step-9laravel-%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%A1%A8%E7%A4%BA)

## Step 1　Vagrant と VirtualBox のダウンロードとインストール

### Vagrant のインストール

Vagrant を [DOWNLOAD VAGRANT](https://www.vagrantup.com/downloads.html) からダウンロードして、インストールしてください。

###VirtualBox のインストール

VirtualBox を [Download VirtualBox](https://www.virtualbox.org/) からダウンロードして、インストールしてください。
「Download VirtualBox 5.2」を選択したあとに、mac の方は「OS X hosts」を選択してください。
ダウンロード後、インストールしてください。
私の環境では、VirtualBox のインストールを試したときに「インストールできませんでした」と表示されました。
新しい mac ではセキュリティ強化のために「許可」する必要があります。

「システム環境設定 > セキュリティとプライバシー」を開いてください。
「ダウンロードしたアプリケーションの実行許可」の「開発元"Oracle America, Inc."のシステムソフトウェアの読み込みがブロックされました。」の右側に「許可」があります。
「許可」を選択してください。
クリックしても反応しない場合があります。
その場合は、セーフモードで起動して、「許可」してください。
セーフモードは起動時に「shift」キーを教えて起動できます。

> セーフモードで起動する
> 
> セーフモードで起動するには、以下の手順を実行してください。
> 
> 1.mac を起動または再起動して、すぐに「shift」キーを押し、そのまま押し続けます。Apple ロゴが画面に表示されます。Apple ロゴが表示されない場合の対処法については、こちらの記事を参照してください。
> 
> 2.ログインウインドウが表示されたら「shift」キーを放します。起動ディスクが FileVault で暗号化されている場合は、ログインが 2 回必要になることがあります。1 回目で起動ディスクのロックが解除され、2 回目で Finder にログインします。
> 
> 引用：[セーフモードを使って Mac の問題を切り分ける - Apple サポート](https://support.apple.com/ja-jp/HT201262)

セーフモードで起動すると「許可」できます。
「許可」したらセーフモードは必要ないので、再起動してください。

## Step 2　Homestead vagrant box のダウンロード

ターミナルから下記のコマンドを打って、Homestead vagrant box をダウンロードしてください。

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

`Enter your choice` とお使いの仮想化ソフトウェアを聞かれます。
今回は virtualbox を利用しますので、Virtualbox の番号を入力してください。
私が試したときは、 `3) virtualbox` と表記されていたので、 `3` と入力しました。
これで、ダウンロードが開始されます。
私の環境では、約 10 分ほどかかりました。

## Step 3　Homestead のダウンロード

任意のディレクトリを作成して、そこに Homestead のファイルをダウンロードします。
ディレクトリの作成場所は、ユーザーディレクトリの直下などターミナルからアクセスしやすいディレクトリがよいかと思います。
この記事では、ホームディレクトリ（/Users/ユーザー名）の直下に Homestead のファイルをダウンロードします。

```txt:ディレクトリ
/Users/ユーザー名/Homestead/以下ファイル
```

ダウンロード時に Homestead のフォルダが作成されますので、予め作成しておく必要はありません。
ユーザー名の直下のディレクトリに移動してください。
ユーザー名の直下に移動するには下記のようにコマンドを打ちます。

```txt:ターミナル（ユーザー名直下ディレクトリに移動するコマンド）
cd ~/
```

下記のコマンド打ち Homestead のファイルをダウンロードします。

```txt:ターミナル（Homesteadをダウンロードするコマンド）
git clone https://github.com/laravel/homestead.git Homestead
```

mac を利用している方で、gitコマンドをはじめて使う方は、Xcode をインストールする必要があります。
App Store から Xcode をインストールした後に、再度コマンドを打ってください。

## **Step 4　Laravel Homestead の設定ファイルの作成**

ダウンロードした Homestead のフォルダに移動してください。
今回、ユーザー名直下に Homestead のファイルをダウンロードしたので、下記のディレクトリに移動します。

```txt:ディレクトリ
Users\ユーザー名\Homestead
```

Homestead ディレクトリに移動したら、下記のコマンドを入力してください。

```txt:ターミナル（Homesteadを初期化するコマンド）
bash init.sh
```

`Homestead initialized!` と表示され、`Homestead.yaml` が作成されます。

### **YAML って何？**

このYAML（ヤムル・ヤメル）ファイルとは何者なのか簡単に見ていきましょう。

YAML は 「YAML Ain't a Markup Language」 の略で 「YAMLはマークアップ言語ではない」 という意味です。
HTML（HyperText Markup Language）のようなマークアップ言語ではないということですね。

YAMLファイルの拡張は `yml` または `yaml` です。
YAML は 主に設定ファイル を記述するのに用いられる言語です。
YAML には  読みやすい、書きやすい、わかりやすい という特徴があります。
例えば、配列を表すには先頭に `-` を入力するだけです。

```yaml:YAML
- aaa
- bbb
- ccc
```

こんな感じで簡単に記述できます。
実際に `Homestead.yaml` の記述を見ると簡単な記述です。

`Homestead.yaml` の記述を変更する前に SSH鍵ファイルを作成しましょう。

## **Step 5　SSH鍵ファイルの作成**

SSH とは Secure Shell（セキュアシェル）の略で、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルです。
ホストOSとゲストOSとのやり取りは SSH で行います。
SSH でやり取りするのに必要な鍵を作成します。

まずは、既にSSH鍵ファイルが作られていないか確認します。
ホームディレクトリ移動します。

```txt:ターミナル（ホームディレクトリに移動するコマンド）
cd ~/
```

ホームディレクトリに移動した後に、下記コマンドを打ち、SSH鍵ファイルが存在しないか確認します。

```txt:ターミナル（SSH鍵ファイルが存在するか確認するコマンド）
ls -la I grep .ssh
```

`id_rsa` と `id_rsa.pub` が表示されれば、既にSSH鍵ファイルはあります。

無い方は、作成します。

```txt:ターミナル（SSH鍵ファイルを作成するコマンド）
ssh-keygen -t rsa
```

`Enter file in which to save the key` と保存するディレクトリを聞かれるので、そのまま enter を押します。

`Enter passphrase` パスフレーズを求められますので、任意のパスフレーズを入力してください。
再度パスフレーズを求められるので、先程入力したパスフレーズを入力してください。
これでSSH鍵ファイルが作成されます。

確認のために先程のコマンドを入力してみましょう。

```txt:ターミナル（SSH鍵ファイルが存在するか確認するコマンド）
ls -la I grep .ssh
```

`id_rsa` と `id_rsa.pub` が表示されます。

## **Step 6　Homestead の設定ファイルの編集**

Homestead の設定を記述した Homestead.yaml というファイルがあります。
設定の変更・確認するには Homestead.yaml を利用します。
今回、Homestead.yaml の初期設定のまま利用するため、基本的には編集する必要はありませんが、編集方法を一通り説明します。
このあとの手順でネットワークのエラーが表示された方は、 Homestead.yaml の設定を変更する必要があります。
一通り読んで把握してください。

最初に Homestead のディレクトリに移動してください。

```txt:ターミナル（Homesteadディレクトリに移動するコマンド）
cd ~/Homestead
```

このディレクトリに Homestead.yaml があります。
フォルダを開いて、直接テキストエディタで編集することもできますが、今回はターミナル上から編集します。

Homestead のディレクトリに移動したら `vim Homestead.yaml` と入力して Homestead.yaml を開きましょう。
vim というのは高機能なテキストエディタのことで、ターミナル上からファイルを編集できます。
下記が Homestead.yaml のデフォルトの記述です。

```yaml:Homestead.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

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

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

# zray:
#  If you've already freely registered Z-Ray, you can place the token here.
#     - email: foo@bar.com
#       token: foo
#  Don't forget to ensure that you have 'zray: "true"' for your site.
~                                                                                                
~                                                                                                
~                                                                                                
~                                                                                                
~                                                                                                
~                                                                                                
~                                                                                                
~                                                                                                
~                                                                                         
```

様々な記述がありますが、変更するなら `folders` の設定かと思います。
mac 側と仮想環境側のフォルダを共有するとこで、mac 側から Laravel のファイルを変更することができます。
その共有フォルダの設定が `folders` です。
`folders` の `map` は mac 側の共有ディレクトリのことで、デフォルトでは `~/code` です。
これはユーザー名直下の `code` ディレクトリを指しています。
`code` ディレクトリはありませんので、`code` フォルダを作成してください。

```ディレクトリ
/Users/ユーザー名/code
```

今後、`code` フォルダに Laravel 自体のファイルをここに入ります。	
フォルダ名やディレクトリの位置を変更したい方はここのパスを変更するようになります。
`folders` の `to` の `/home/vagrant/code` は仮想環境側の共有フォルダのディレクトリです。
今後、仮想環境にアクセスしてこのディレクトリに移動して操作をすることもあるので、ディレクトリの位置だけ覚えておいてください。

ちなみに、vim で開いた状態で `i` を入力すると INSERT モードになり、編集ができます。
ディレクトリなど変更する場合は、 `i` を入力してから適宜変更してください。
`esc` を押すと INSERT モードが解除されます。
`:wq` を押して enter を押すと上書き保存されます。

今回は、`folders` について説明しましたが、`Homestead.yaml` では下記の設定が可能です。

|項目|内容|
|:--|:--|
|ip|Vagrant に割り当てられるIPアドレス。|
|memory|仮想サーバに割り当てるメモリの容量。|
|cpus|CPUの数。|
|provider|利用する仮想化ソフトウェアの指定。Vagrant では仮想化ソフトウェアのことをプロバイダと呼びます。|
|authorize|SSH公開鍵のディレクトリ。|
|keys|SSH秘密鍵のディレクトリ。|
|folders|共有フォルダの指定です。`map` がホストOS側のディレクトリで、`to` がゲストOS側のディレクトリ。|
|sites|ホスト名 `homestead.test` でアクセスしたときに `to` に記載した仮想マシンのディレクトリを参照。|
|databases|データベース。|

## **Step 7　仮想マシンの起動**

今までの手順通りなら、Homestead のディレクトリにいると思いますが、別のディレクトリにいる方は、Homestead のディレクトリに移動してください。

今回の場合なら、下記のように記述すると Homestead ディレクトリに移動します。

```txt:ターミナル（Homesteadディレクトリに移動）
cd ~/Homestead
```

Homested ディレクトリに移動した後に下記のようにコマンドを入力します。

```txt:ターミナル
vagrant up
```

仮想マシンが起動します。

`vagrant up` に成功した方は、VirtualBox を見ると homestead-7 と表示され、起動しているのを確認できます。

![vb.jpg](https://qiita-image-store.s3.amazonaws.com/0/72985/c0fada89-ed7b-94c5-2a79-978021808e55.jpeg)


私の場合は `vagrant up` をしたときに下記のエラーが表示されました。
同様のエラーが表示された方は、参考に対処してください。
エラーが表示されなかった方は、次のステップへ進んでください。

### **【エラー】ネットワークの設定エラー**

私の環境では、`vagrant up` を行ったときに、下記のネットワークのエラーが表示されました。

```txt:エラー
The specified host network collides with a non-hostonly network!
This will cause your specified IP to be inaccessible. Please change
the IP or name of your host only network so that it no longer matches that of
a bridged or non-hostonly network.
```

mac のローカルIPアドレスと ホストオンリーネットワークが同じセグメントにあるのでエラーが表示されました。
別のセグメントに変更する必要があります。
mac のローカルIPアドレスは、`ifconfig` で確認できます。
確認すると、おそらく、`192.168.○○.○` になっているはずです。
私の場合は、mac のローカルIPアドレスが `192.168.10.○` で、`Homestead.yaml` で設定したIPアドレスも `192.168.10.10` にしており、同じセグメントになっておりました。
別のセグメントにするために `Homestead.yaml` の IP を `192.168.30.10` に変更しました。
その後に、Homestead のディレクトリ内で `vagrant up` をすると問題なく仮想マシンが起動しました。

## **Step 8　仮想マシン上で Composer を利用して、Laravel ファイルをダウンロードする**

`vagrant up` で仮想マシンは起動されていますので、仮想マシンを操作するために仮想マシンにログインします。

```txt:ターミナル（仮想マシンにログインするコマンド）
vagrant ssh
```

ターミナルの先頭の文字が `vagrant@homestead:` になります。
これは仮想マシン上にログインして操作しているためです。
SSHを利用して仮想マシンにログインしたので、次は `code` ディレクトリに移動します。

```txt:ターミナル（codeディレクトリに移動するコマンド）
cd code
```

Laravel の最新バージョンを利用したい方は下記のコマンドでダウンロードできます。

```txt:ターミナル（現在いるディレクトリの中に最新のLaravelをダウンロードするコマンド）
laravel new
```

LTS の Laravel 5.5 を利用したい方もいるかと思います。
Lravel 5.5 の最新バージョンをダウンロードするときは、下記のコマンドでダウンロードできます。

```txt:ターミナル（Laravelディレクトリの中にダウンロードするコマンド）
composer create-project --prefer-dist laravel/laravel blog "5.5.*"
```

いずれかのコマンドを打つとダウンロードが開始されます。完了するまでに、私の環境では約 10 分ほどかかりました。

バージョンを指定する方法では、`code` 内に `blog` フォルダが作成され、その中に  Laravel のファイルがダウンロードされます。
現在、仮想マシンにログインした状態なので、ターミナルの先頭の文字も `vagrant@homestead` になっているはずです。
仮想マシンの `code` フォルダは mac のユーザーフォルダ直下の `code` と共有されるように設定されています。
この共有設定は先ほど説明した通り、 `Homestead.yaml` の `folders` に記述しています。

```yaml:Homestead.yamlの抜粋
folders:
    - map: ~/code
      to: /home/vagrant/code
```

mac のユーザーフォルダ直下の `code` フォルダを開いてください。
`blog` フォルダ内に Laravel のファイルがダウンロードされているのが確認できます。
先ほどの `Homestead.yaml` の `sites` を改めて見てみましょう。

```yaml:Homestead.yamlの抜粋
sites:
    - map: homestead.test
      to: /home/vagrant/code/public
```

`to` は仮想マシン側を表していますが、`/home/vagrant/code/public` になっています。
現状は `blog` フォルダを新たに作成してそこに Laravel のファイルをダウンロードしたため、`/home/vagrant/code/blog/public`  　になっています。
`blog` の階層は不要です。
`blog` フォルダ内にある全てのファイルを、一つ上の階層の `code` 直下に移動してください。
`code` フォルダ内は mac と仮想マシンで共有されているので、この移動は mac の `code` フォルダを開いてファイルをドラッグして移動しても問題ありません。

ターミナル上で仮想マシン側で操作したい方は、`cd blog` で `blog` フォルダに移動してください。
下記のコマンドで `blog` フォルダ内のファイルを一つ上の階層へ移動できます。

```
mv ./* ..
```

`cd ~/code` で `code` フォルダに移動してください。
`ls` を入力すると `code` フォルダ内にあるファイル・フォルダの一覧を確認できます。
`blog` フォルダは不要ですので、下記のコマンドで削除できます。

```txt
rmdir blog
```

現在、仮想マシンに入っているので、`vagrant@homestead:` で始まっているかと思います。
仮想マシンからログアウトするときは、`logout` とコマンドを打つとログアウトします。
仮想マシン上での操作は一通り終わりましたので、ログアウトしてください。

今回、`blog` フォルダ内にダウンロードしてから一つ上の階層へ移動するという無駄な作業をしています。
composer でダウンロードするときに `blog` フォルダを作らずにカレントディレクトリにダウンロードする方法を調べましたが、わかりませんでした。
**composerで新たにフォルダを作らずにカレントディレクトリにダウンロードするコマンドをご存知の方は、教えてください。**

## **Step 9　Laravel ページの表示**

`Homestead.yaml` に記述した IPアドレスにブラウザからアクセスすると下記の Laravel ページが表示されます。
設定を変更していない方は、`192.168.10.10` で、私の変更された方は `192.168.30.10` です。

![laravel.png](https://qiita-image-store.s3.amazonaws.com/0/72985/4563a98d-44d1-6047-fd0f-7d2638bc5e4d.png)

私の場合は、`Homestead.yaml` の IP を `192.168.30.10` に設定したため、ブラウザで `192.168.30.10` を入力するとLaravelのページが表示されます。
設定を変えていない方は、`192.168.10.10` で表示されるはずです。
IPアドレスでアクセスしても問題はないですが、わかりやすいように `homestead.test` と入力しても、Laravel のページが表示されるように設定してみましょう。
設定するには、ホスト名 `homestead.test` とIPアドレスの対応付けをします。

### **mac の場合**

mac の場合は、ホスト名とIPアドレスの対応付けは `/etc/hosts` に記述されています。
Homestead.yaml を編集したときと同じく `vim` を使って `hosts` を編集します。
`hosts` は管理者権限がないと編集できないので、管理者権限で編集するために頭に `sudo` と記述します。
`sudo` と記述すると、管理者権限で実行できます。

```txt:ターミナル（hostsファイルを管理者権限で開くコマンド）
sudo vim /etc/hosts
```

管理者権限で実行したため、パスワードを入力が必要になると思いますので、mac のパスワードを入力してください。
hosts ファイルが表示されますので、`i` を入力して INSERTモードにし、最後の行に下記を追加します。

```txt:ターミナル（hosts）
192.168.10.10 homestead.test
```

私の環境と同じように `192.168.30.10` にされた方は下記のように記述してください。

```txt:ターミナル（hosts）
192.168.30.10 homestead.test
```

`esc` を押し、INSERTモードを終了します。
`:wq` を入力し、enter を押して上書き保存します。
これでブラウザから `homestead.test` を入力すれば、Laravelのページが表示されるようになります。

vagrant を終了するときは、下記のコマンドで終了させてください。

```
vagrant halt
```

## php artisan migrate でエラーが発生する

`php artisan migrate` を実行すると下記のエラーが表示されました。

```txt
In Connection.php line 664:
                                                                                                                                                       
  SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations)  
                                                                                                                                                       

In Connector.php line 67:
                                             
  SQLSTATE[HY000] [2002] Connection refused
```

これは mac 側から `php artisan migrate` を実行しているためです。
`vagrant ssh` で仮想マシンへログインして、Laravel のファイルをダウンロードしてあるディレクトリ（この記事では `code`）に移動して `php artisan migrate` を実行すると問題なく実行できました。

mac 側から `php artisan migrate` を実行したい場合は、`/Users/ユーザー名/code` にある `.env` を開いて編集する必要があります。
`.` からはじまるファイルは最初から表示されていません。
`command + shift + .` で `.` からはじまるファイルが表示されます。もう一度押すと非表示になります。
`.` からはじまるファイルを誤って削除すると動作しなくなる場合がありますので、削除しないように気をつけてください。
`.env` をテキストエディタで開くと下記の記述があります。
（テキストエディタではなく、ターミナル上から `vim` で開いても結構です。）

```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
```

`127.0.0.1` を `192.168.10.10` に変更して保存してください。
私のように Homestead.yaml の IP を `192.168.30.10` に変更した方は、`192.168.30.10` としてください。

# **TIPS**

## **仮想マシンを起動・停止するには？**

**Vagrantfile があるディレクトリに移動**してから、`vagrant up` してください。
Homestead を利用して開発環境を構築した方は、Homestead ディレクトリに Vagrantfile があります。

仮想マシンの起動だけではなく、`vagrant halt` で仮想マシンの停止をする場合も **Vagrantfile があるディレクトリに移動**してからコマンドを打ってください。

別のディレクトリで  `vagrant up` を打つと下記のエラーが表示されます。

```txt:エラー
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or,
get an ID of a target machine from `vagrant global-status` to run
this command on. A final option is to change to a directory with a
Vagrantfile and to try again.
```

`vagrant ssh` で仮想マシン内で操作している方は、`logout` と打つとホストOSのディレクトリに戻ります。
ホストOSの Vagrantfile があるディレクトリに移動してから、`vagrant halt` などを入力してください。


## **よく使う Vagrant ＆ Linux/Unix コマンド一覧**

vagrant を利用するときに、よく使うコマンドです。

|コマンド|内容|
|:--|:--|
|vagrant up|仮想マシンの起動|
|vagrant halt|仮想マシンの停止|
|vagrant ssh|仮想マシンにSSHでログイン|
|vagrant status|仮想マシンの状態を確認|
|vagrant reload|仮想マシンの再起動|
|vagrant destroy|仮想マシンの破棄|
|vagrant suspend|仮想マシンの一時停止|
|vagrant resume|一時停止の復帰|
|vagrant -v|vagrant のバージョン確認|
|vagrant box list|ダウンロード済みのboxを確認|
|vagrant box remove xxx|boxの削除 xxxにはbox名を入力　※homesteadを削除するなら `vagrant box remove laravel/homestead`|
|logout|仮想マシンからログアウト|

# Laravel を学べる書籍

2018年11月現在、Laravel について学べる代表的な書籍は下記の3冊になるかと思います。
他におすすめの書籍があれば教えてください。

## [「PHPフレームワークLaravel入門 第 2 版」 秀和システム(2019/12/27)](https://amzn.to/2EV4Fy4)

本のタイトルの通り、Laravel入門者向けの書籍です。
2019 年 12 月 27 日に第 2 版が販売されました。
私は第 1 版しか見たことありませんが、第 2 版は Laravel 6 に対応しているようです。
Laravel 6 に対応しているのは嬉しいですね。

![laravel-.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72985/8c2f5034-5191-ce9b-50ab-1ef3aa106a47.png)


引用：[PHPフレームワークLaravel入門 第２版 | 掌田津耶乃 |本 | 通販 | Amazon](https://amzn.to/2EV4Fy4)

## [「絶対に挫折させないアプリ開発　はじめてのLaravel」(2018/10)](https://plumsa.booth.pm/items/1048008)

PHP と Laravel の違い、フレームワークを利用するメリットを学ぶことを目的とした書籍です。
TODO アプリを素の PHP、Laravel（ルーティングメイン）、Laravel（MVC）で3回作成することで、PHP と Laravel の違いを学ぶことができます。
実際にコードベースで Laravel（フレームワーク）を利用するとどんなメリットがあるの？という方に最適です。
PHP でも TODO アプリを作成するため、理解するには PHP の基本的な知識な必要になります。
Laravel の基礎的なことは「PHPフレームワーク Laravel入門」の方がより詳説しているので、Laravel入門者は「PHPフレームワーク Laravel入門」で学んだ後にこの書籍を手に取るのがよいかと思います。
書籍版とダウンロード版があります。

![3.jpg](https://qiita-image-store.s3.amazonaws.com/0/72985/f615602e-48d4-ad73-1bea-b8a14a5a5e68.jpeg)

引用：[絶対に挫折させないアプリ開発　はじめてのLaravel - plumsa - BOOTH（同人誌通販・ダウンロード）](https://plumsa.booth.pm/items/1048008)

## [「PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応」ソシム (2018/9/26)](https://amzn.to/2z8M8fh)

Laravel の基礎を学んだ後に、より深く知りたい方向けの書籍です。
右も左もわからない方には理解するのが難しいと思うので、入門書を終えてステップアップしたい方はこちらの書籍を読みましょう。

![2.jpg](https://qiita-image-store.s3.amazonaws.com/0/72985/66578bd9-5228-9395-4e6b-0332e13597e4.jpeg)

引用：[PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 | 竹澤 有貴, 栗生 和明, 新原 雅司, 大村 創太郎, 丸山 弘詩 |本 | 通販 | Amazon](https://amzn.to/2z8M8fh)

# note

note でも記事を公開してるので、興味がある方はご覧ください。

・[【初学者向けコードリーディング】 PHP の TODO アプリのコードを一緒に読み解こう](https://note.mu/7968/n/n46a8beb87c93)