vagrant
VirtualBox
Composer
laravel
homestead

【Laravel超入門】開発環境の構築(VirtualBox + Vagrant + Homestead + Composer)

はじめに

Laravel は聞いたことあるけど、Vagrant? VirtualBox? Homestead? Composer? 何それ? という方が対象です。
それぞれについても簡単に説明しますので、この記事を読めば、それぞれが何をしているのか、何となく理解できるかと思います。
単純に Laravel を動かしたいだけなら、XAMPP または MAMP の環境を利用するのが簡単ですが、今回は、Homestead というものを利用し、仮想環境を構築することで、VirtualBox 、 Vagrant 、 Composer などについても理解を深めていきたいと思います。

私は、Mac と Windows の両方で、Homestead を利用した開発環境を構築しました。

OS VirtualBox Vagrant Git for Windows
macOS Sierra 10.12.3 5.1.14 1.9.1 -
Windows 7 Home Premium 64bit 5.1.14 1.9.2 2.12.0

この記事では、Mac の環境をメインに説明しますが、Windows 環境で行う方法も補足します。

開発環境の構築は、ターミナルを使ってコマンドで指示をします。
この記事内では、コマンド自体の詳しい説明はしませんので、不明な箇所は調べてください。
Windows の方で、コマンドプロンプトを利用している方は、Git for Windows をインストールして、Git Bash というソフトを使って作業してください。

最初に Laravel、VirtualBox、Vagrant、Homestead、Composer について簡単に学んだ後に、実際に開発環境の構築を行います。
私自身未熟ですので説明に誤りがあるかもしれません。
誤りがあれば、ご指摘ください ((_ _ (´ω` )ペコ

Laravel を始めたいと考えている方の一助になれば嬉しいです。

第1章 Laravel とは

Laravel(ララベル)は、Taylor Otwell さんが開発した PHP のフレームワークです。
Taylor さんは Microsoft の .NET の開発に関わっていた方のようです。
Laravel は、フリーのオープンソースで、MIT ライセンスのため、自由に利用できます。
PHP のフレームワークはいくつかありますが、Laravel は世界的に人気があるようです。
各 PHP フレームワークがどのくらい検索されているか Google Trends で見てみましょう。

laravel-googletrends-all.jpg

引用:Google Trends

世界で見ると他のフレームワークを引き離して一番検索されていますね。

日本ではどうか見てみましょう。

laravel-googletrends-japan.jpg

引用:Google Trends

CakePHP をハナ差で抜き、一番に検索されているようです。

Qiitaでのトレンドはどうなのか、@tag1216 さんが制作した QiiTrend を利用して見てみましょう。

laravel-qiitrend.jpg

引用:QiiTrend

2015 年は CakePHP と同じくらいの投稿数でしたが、2016 年は Laravel 関連の記事が一番投稿されたようです。
PHP のフレームワークは他にもありますが、その中でも Laravel は注目のフレームワークと言えるかと思います。

Laravel について詳しく知りたい方は、公式サイト(英語)ドキュメント をご覧ください。
英語はちょっとという方は、日本語に訳した ドキュメント をご覧ください。

次は、Laravel のバージョンとリリースについて見ていきましょう。

Laravel のバージョンとリリース

Laravel は半年で新しいバージョンがリリースされます。
基本的に、バグ対応は 6 ヶ月、セキュリティ対応は 1 年です。
それよりも対応期間が長い LTS(Long Term Support)があり、バグ対応は 2 年間、セキュリティ対応は 3 年間になります。
各バージョンのリリースは Laravel NewsLaravel Release Process に記載があります。

バージョン リリース バグ対応 セキュリティ対応
Laravel 5.1 LTS 2015.6.9 2017.6.9 2018.6.9
Laravel 5.2 2015.12.21 2016.6.21 2016.12.21
Laravel 5.3 2016.8.23 2017.2.23 2017.8.23
Laravel 5.4 2017.1.24 2017.7.24 2018.1.24
Laravel 5.5 LTS 2017.8.30 2019.8.30 2020.8.30
Laravel 5.6 2018.2.7 2020.8.7 2019.2.7

バグ対応とセキュリティ対応は、リリース日から算出したので、誤りがあればご指摘ください。
バージョン指定がなければ、セキュリティ対応の長い LTS または 最新バージョンをインストールしてください。

次は、Laravel を学ぶときに、よく見る用語を確認しましょう。

Laravel でよく見る用語

開発環境を構築しただけで、私の Laravel 知識は 0 ですが、Laravel について調べてるときによく見かける用語を一覧にしました。
検索するときに用語を入れると、欲しい情報を見つけることができるかもしれません。
初見の方は、一通りこんな用語あるのか程度に見てください。
雑な情報は無視してください。

用語 読み方 雑な情報(誤りがあるかもしれない)
Artisan アーティザン Laravel 用のコマンドラインインターフェイス。新たにファイルを作成したりするときにコマンドぽちぽちするっぽい。
Eloquent エロクアント ORM。SQL?なにそれ?という感じでもDBの操作ができるっぽい。これ使いたい。
Blade ブレード viewテンプレート。
Service Container・IoC Container サービスコンテナ・IoCコンテナ DIコンテナ。Laravel5 から IoC コンテナからサービスコンテナに名称が変わったらしい。
Facade ファサード サービスコンテナを何かしてるっぽい。
Migration マイグレーション DBの履歴管理。複数人でDBいじってやっちまったときに戻せたりできるらしい。
Elixir エリクサー Laravel 用に作られた gulp タスク群。

次は、VirtualBox について見ていきましょう。

第2章 VirtualBox とは

VirtualBox(ヴァーチャルボックス)は、既存のOS上で別のOSを実行できる仮想化ソフトウェアです。
フリーのオープンソースソフトウェアで、ORACLE(オラクル)というアメリカの会社が開発しています。
VirtualBox は、Mac や Windows などの環境で利用できます。
VirtualBox を使うと、私たちが使っている Mac または Windows 上で別の OS を実行できるようになります。
実際に Mac 上で VirtualBox を使い Windows を起動している画面です。

vm-windows.jpg

一つのアプリケーションのように Windows を実行して、操作できます。
この場合、Mac 側をホストOSと呼び、Windows 側をゲストOSと呼びますので覚えておいてください。

お使いの Mac や Windows に Web サーバーや PHP、データベースをインストールして、開発環境を構築することも可能ですが、本番環境では別の OS が使われていたり、PHP やデータベースなどのバージョンが違うなど環境が異なるため、本番環境では動作しないということがあります。
VirtualBox の仮想化ソフトウェアを使えば、本番環境と同じまたは近い環境を構築し、その環境で開発できるという利点があります。

VirtualBox には共有フォルダという機能があります。
先ほど、VirtualBox を使って Mac 上で Windows を起動しました。
Mac 側にあるフォルダと Windows 側にあるフォルダを共有することができます。
この機能を利用することで、Mac 側で変更した内容は、リアルタイムで Windows 側の共有しているフォルダにも反映されます。
逆も同じく、Windows側で変更した内容は、リアルタイムでMac側の共有フォルダにも反映されます。

この機能を利用し、最終的には下記のような環境を構築します。

virtualbox-share.png

上図に記載した Laravel-A と Laravel-B というフォルダ名は任意で決められますが、ここではこのようなフォルダ名にしたと仮定して説明します。
Mac のローカル上にある Laravel-A というフォルダと、ゲストOS にある Laravel-B というフォルダを共有するように設定します。
共有設定することで、コードの変更などの作業は Mac 側で行えます。
そのため、普段利用しているテキストエディタや IDE を使うことが可能です。
Mac 側には Laravel を動かすのに必要な Web サーバーや PHP、データベースなどが入っていませんが、ゲストOS側には入っているため、実行できます。
ホストOS 側のブラウザから 192.168.○○.○ または homestead.test と入力すると、ゲストOS側にある Laravel のフォルダを参照します。
そのため、ホストOS 側のブラウザで簡単に実行結果を確認することができます。
この一連の流れを確認するだけで仮想環境の利点は伝わったかと思います。
便利な仮想環境ですが、環境を構築するのに手間がかかります。
Laravel を利用するには、Web サーバーや PHP、データベースなどが必要です。
VirtualBox の仮想環境に Ubuntu(ウブントゥ) という OS をインストールし、Nginx(エンジンエックス) というWebサーバーを入れて、 PHP と MySQL をインストールし、Laravel が動作する環境を構築する必要があります。
他にも先ほど説明した共有フォルダの設定などもする必要があります。

OS や Web サーバーのインストールの仕方も設定方法もよくわからないし、ハードルが高そうだから諦めよう(´;ω;`)
ってなりますよね。
大丈夫です。Vagrant(ベイグラント)を使うと、これらのインストールや設定作業を自動でやってくれます。

次は、Vagrant について見ていきましょう。

第3章 Vagrant とは

Vagrant(ベイグラント)は、開発環境を簡単に構築できるオープンソースのソフトウェアです。
Vagrant を利用すると、ターミナルから vagrant up とコマンドを打つだけで、開発環境を構築することが可能です。

vagrant-hav.png

実際にはもう少し手順が必要ですが、このような感じで簡単に開発環境を構築できます。

Vagrant は、VirtualBox に対して、仮想マシンの起動や操作、停止や破棄などの指示をしてくれます。
仮想マシンに対して、 Vagrant 経由で指示をするため、VirtualBox を操作することは基本的にありません。

この Vagrant は、Mitchell Hashimoto さんが 2010 年 1 月から開発しています。
日本人の歯医者の父と主婦である母の間に生まれ、12歳のときにプログラミングを始め、2012 年に HashiCorp という会社を創設し、現在は CTO をやっているそうです。
Vagrant の公式サイトを見ると、HashiCorp と記載されています。

こんな便利なものを開発してくれて感謝です。
この Vagrant は Mac や Windows などの環境で利用できます。
Vagrant は Vagrant box を利用することで、簡単に開発環境の構築が行えます。

Vagrant box とは?

先ほど、説明した VirtualBox には仮想マシンをエクスポートする機能があります。
エクスポートしたファイルを利用することで、他のパソコンでも同じ仮想マシンをインポートすることができます。

Vagrant box には、このようにエクスポートしたファイルなどが含まれています。
この Vagrant box を利用することで、vagrant up とコマンドを打つだけで、簡単に仮想環境を構築できます。

Vagrant box は HashiCrop が運営している Discover Vagrant Boxes から探すことができます。
ターミナルから Vagrant boxを追加するときは下記のように記述します。
一通り説明した後に、第6章で実際に開発環境の構築を行います。
第5章までは実際にコマンドを打つ必要はありません。

ターミナル(Vagrantboxを追加する例)
vagrant box add ボックス名またはURL

Vagrant box を利用して、仮想マシン(クローン)を作成します。

Vagrant box を使って、CentOS の仮想環境を構築する流れだけ簡単に見てみましょう。
流れを把握するだけなので、実際にやる必要はありません。
Discover Vagrant Boxes を見ると centos/7 とあります。
この Vagrant box を使って CentOS の仮想環境を構築します。
まずは、Vagrant box をダウンロードします。

ターミナル(Vagrantboxのダウンロード)
vagrant box add centos/7

vagrant box は Users/ユーザー名/.vagrant.d/boxes/ のディレクトリにダウンロードされます。
パソコンの設定によっては、隠しファイルやフォルダは表示されないようになっているため、設定を変更しないと実際にこのフォルダを見ることはできません。
コマンド入力でファイルやフォルダの操作を行うため、隠しフォルダ・隠しファイルなどは表示されてなくても問題ありませんが、マウスクリックで実際のフォルダ・ファイルを確認したい方は、ソフトを利用したり、設定を行ったりすると Mac や Windows で閲覧することもできます。
Mac の方なら Funter というソフトを使うと隠しファイルが表示できます。
Windows の方なら、ここ に記載がある通り、コンパネから設定を変更すると隠しファイルが表示されます。

vagrant box をダウンロードした後に、任意のディレクトリを作成し、ターミナル上でそのディレクトリに移動します。
今回は、centos/7 の Vagrant box を利用するので、下記のように記述します。

ターミナル(Vagrantfileの作成)
vagrant init centos/7

init は イニシャライズという英語で、初期化という意味です。
vagrant init とコマンドを打ち、初期化したということです。
初期化すると、Vagrantfile という Vagrant の設定が記述されたファイルが作成されます。
その後に、vagrant up とコマンドを打つと、仮想マシンが構築され、起動します。
Vagrant box を利用し、CentOS の仮想環境を構築する場合は、このような手順になります。
Vagrant box を利用して、CentOS 以外の仮想環境を構築するときも同様の手順になるかと思います。

Laravel の開発環境も Vagrant box を利用することで、簡単に構築できます。
Laravel 公式で Homestead という簡単に開発環境を構築できるツールを提供しています。
この Homestead を利用して開発環境の構築を行う場合、先ほどの CentOS の手順とは多少異なります。
次は、この Homestead について見ていきましょう。

第4章 Homestead とは

Laravel 公式が提供している Homestead(ホームステード)は、Laravel が動作する開発環境を簡単に構築できるツールです。

先ほどの Vagrant を利用して CentOS の環境を構築する例では、Vagrant box をダウンロードして、vagrant init centos/7 とコマンドを打つと、Vagrantfile という Vagrant の設定が記述されたファイルが作成されますと説明しました。

Homestead を利用して開発環境の構築を行う場合は、Laravel 公式から配布されている、設定済みの Vagrantfile を利用します。
また、VirtualBox について説明したときに、ホストOSとゲストOSで共有フォルダの設定ができると説明しました。
Homestead の場合は、このような設定も Homestead.yaml というファイルに記述するだけで簡単に設定できるようになっております。
これらの Vagrantfile や Homestead.yaml などのファイルは、Laravel Homestead という名称で、一式ダウンロードできるようになっております。
Vagrantfile や Homestead.yaml 以外の必要なファイルも含まれています。
正確には、Homestead.yaml というファイルは自分でコマンドを打って作成します。
Homestead.yaml を作成するのに必要なファイルが含まれているということです。

開発環境を構築するにあたり、先ほど説明した Vagrant を利用して開発環境の構築を行います。
Laravel 公式から Homestead Vagrant box という名称の Vagrant box がダウンロードできるようになっております。
Homestead で開発環境を構築するには、Homestead Vagrant boxLaravel Homestead の2つをダウンロードして用意する必要があります。
ダウンロードの仕方については、第6章 開発環境の構築 のときに説明しますので、ここでは Homestead を利用して開発環境を構築するには、この2つを用意する必要があるということだけ覚えておいてください。

ダウンロード 内容
Homestead Vagrant box 仮想マシンをエクスポートしたデータなど
Laravel Homestead 設定済みの VagrantfileHomestead.yaml を作成するのに必要なファイルなど

ちなみに、Homestead(2017年3月現在) を利用すると下記の環境を簡単に構築できます。

  • Ubuntu 16.04
  • Git
  • PHP 7.1
  • Nginx
  • MySQL
  • MariaDB
  • Sqlite3
  • Postgres
  • Composer
  • Node (With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd

OS や Web サーバー、PHP、データベースなど必要なものが一式入った環境を構築できます。
Homestead は、あくまで開発環境を構築するもので、Laravel (フレームワーク)自体のファイルはありません。
Laravel 自体のファイルは、Composer というものを利用してダウンロードします。
次は、この Composer について見ていきましょう。

第5章 Composer とは

Composer(コンポーザー)は、ライブラリの依存管理ツールです。
そう言われてもよくわからないと思うので、Laravel を例に Composer の説明をします。

Laravel を使うには、Taylor さん以外の方が作ったライブラリがたくさん必要です。
どのようなライブラリが必要かは、PackagistLaravel に記載されています。
laravel/framework v5.4.13 の場合は、ざっと下記が使われています。

composer-laravel-packagist.jpg

リンクをクリックして必要なライブラリを確認し、一つ一つダウンロードしてください。
えーっ!!! Laravel 使うのやめようかな... となりますよね。
Composer を使うと、ターミナルから下記のようにコマンドを入力するだけで、依存しているライブラリを vendor フォルダ内に全てダウンロードしてくれます。

コマンド例
composer create-project laravel/laravel --prefer-dist

超便利ですね。開発してくれた方に感謝です。

この Composer は 2011 年に Nils Adermann さんと Jordi Boggiano さんが開発を始め、2012 年にリリースされたそうです。
Composer を使うには、公式サイト のダウンロードを参考に、インストールしてください。
また、Composer が動作するには PHP 5.3.2 以上が必要です。
CakePHP など他のフレームワークも Composer を使ってインストールするのが一般的です。
今回は、ゲストOSに Composer をインストールするので、ホストOS 側に Composer をインストールする必要はありません。

Laravel、VirtualBox、Vagrant、Homestead、Composer について何となく理解できたと思いますので、実際に開発環境の構築を行なっていきましょう。

第6章 開発環境の構築

2018.10.11 追記
mac での構築方法になりますが、新たに書き直しました。(ほぼ同じですが、少し手直ししました。)
Qiita -【Laravel 5.5 or latest】Homestead で mac に Laravel 開発環境を構築する方法

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

  1. Vagrant と VirtualBox のダウンロードとインストール
  2. Homestead vagrant box のダウンロード
  3. Laravel Homstead のダウンロード
  4. Homestead の設定ファイルの作成
  5. SSH 鍵ファイルの作成
  6. Homestead の設定ファイルの編集
  7. 仮想マシンの起動
  8. 仮想マシン上で Composer を利用して、Laravel ファイルをダウンロードする
  9. Laravel ページの表示

この手順は Laravel5.4 のときに構築した手順です。
最新バージョンでは手順が異なる場合があります。
構築できない方は Laravel 公式サイト Homestead もご確認ください。

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

Vagrant のインストール

Vagrant を DOWNLOAD VAGRANT からダウンロードして、インストールしてください。

VirtualBox のインストール

VirtualBox を Download VirtualBox からダウンロードして、インストールしてください。

私は、最新バージョン(当時)をインストールしました。

OS VirtualBox Vagrant
macOS Sierra 10.12.3 5.1.14 1.9.1
Windows 7 Home Premium 64bit 5.1.14 1.9.2

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

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

ターミナル(vagrantboxのダウンロード)
vagrant box add laravel/homestead

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

Step 3 Homstead のダウンロード

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

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

ディレクトリを作成したら、ターミナルから cd コマンドで作成したディレクトリに移動してください。
app というディレクトリに移動するには下記のようにコマンドを打ちます。

ターミナル(appディレクトリに移動するコマンド)
cd ~/app

app ディレクトリに移動したら、下記のコマンド打ち Homestead のファイルをダウンロードします。

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

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

Wndowsの方は、最初に紹介した Git Bash を利用していれば、問題なくダウンロードされます。

作成したディレクトリ(この記事では app )の中に Homestead のファイルがダウンロードされます。

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

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

ディレクトリ
Users\ユーザー名\app\Homestead

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

ターミナル(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
- aaa
- bbb
- ccc

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

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

Step 5 SSH鍵ファイルの作成

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

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

ターミナル(ホームディレクトリに移動するコマンド)
cd ~/

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

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

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

無い方は、作成します。

ターミナル(SSH鍵ファイルを作成するコマンド)
ssh-keygen -t rsa

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

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

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

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

id_rsaid_rsa.pub が表示されます。

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

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

ターミナル(Homesteadディレクトリに移動するコマンド)
cd ~/app/Homestead

vim Homestead.yaml と入力して Homestead.yaml を編集していきましょう。
vim というのは高機能なテキストエディタのことで、ターミナル上からファイルを編集できます。
i を入力すると INSERT モードになり、編集ができます。
様々な記述がありますが、基本的に foldersmap のディレクトリを変更するだけです。
今回は、app ディレクトリに Composer を利用して Laravel 自体のファイルを設置しますので、下記のように map の記述を変更します。
foldersmap がホストOSのディレクトリで、 to がゲストOSのディレクトリになります。
ここで指定したホストOS上のディレクトリとゲストOS上のディレクトリは共有します。
VirtualBox のときにホストOSとゲストOSを共有することができると説明したが、この folders がその設定です。

2018.3.29 追記
5.4 までは Code (先頭大文字)でしたが、5.5から code (先頭小文字)に変更になったとコメントをいただきました。
この記事では Code と記載していますが、新しいバージョンでは code になっているようです。
Step8 で cd Code とありますが、エラーが表示される方は cd code と入力してください。

2018.9.1 追記
homestead.app から homestead.test に変更になったとコメントいただきました。
homestead.app と記載していた箇所は homestead.test に変更しました。

Homestead.yaml
--
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/app
      to: /home/vagrant/Code

sites:
    - map: homestead.test
      to: /home/vagrant/Code/Laravel/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
~                                                                                  
~                                                                                  
~                                                                                  
~                                                                                  

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 ディレクトリに移動します。

ターミナル(Homsteadディレクトリに移動)
cd ~/app/Homestead

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

ターミナル
vagrant up

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

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

virtualbox-homestead.jpg

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

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

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

エラー
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 をすると問題なく仮想マシンが起動するかと思います。

【エラー2】仮想化支援機能が使用できない

Windows7 の環境で vagrant up を行ったときに homestead-7: SSH auth method: private key から動かず、下記のエラーが表示されました。

エラー
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

VirtualBox には既に homestead-7 という仮想マシンがあります。
VirtualBox から homestead-7 を起動したところ、下記のように ホストマシンの仮想支援機能(VT-x/AMD-V)が使用できません。64ビット ゲストOSは64ビットCPUを検出できず、起動できません。 とエラーが表示されました。

vagrantup-error-windows7-virtualbox.jpg

仮想化支援機能が無効になっているため、有効にします。
BIOS で設定の変更を行います。
変更方法はお使いのパソコンメーカーにより異なると思いますが、私は Hewlett Packard 製のPCを利用しているため、ここを参考に、仮想化支援機能を有効にしました。
その後は、vagrant up してもエラーも表示されなくなりました。

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

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

ターミナル(仮想マシンにログインするコマンド)
vagrant ssh

SSHを利用して仮想マシンにログインしたので、次は Code ディレクトリに移動します。

ターミナル(Codeディレクトリに移動するコマンド)
cd Code/

次に composer を使って Laravel のファイルをダウンロードします。
下記は記述例です。

ターミナル(Composerの記述例)
composer create-project laravel/laravel --prefer-dist ディレクトリ名

今回、ディレクトリ名は Laravel にしますので、下記のように入力します。

ターミナル(Laravelディレクトリの中にダウンロードするコマンド)
composer create-project laravel/laravel --prefer-dist Laravel

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

先ほど、Homestead.yaml で下記のように記述しました。

Homestead.yamlの抜粋
folders:
    - map: ~/app
      to: /home/vagrant/Code

仮想マシン上で composer を使って /home/vagrant/Code の中に Laravel というフォルダを作成し、 Laravel のファイルをダウンロードしました。
共有していますので、ホストOS 上の app のディレクトリを確認すると、同じ Laravel のファイルがダウンロードされています。

ターミナルからは、仮想マシンに入っているので、vagrant@homestead: で始まっているかと思います。
仮想マシンからログアウトするときは、logout とコマンドを打つとログアウトします。

Step 9 Laravel ページの表示

Homestead.yaml に記述した IPアドレスにブラウザからアクセスすると下記の Laravel ページが表示されます。

laravel-first.jpg

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

Mac の場合

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

ターミナル(hostsファイルを管理者権限で開くコマンド)
sudo vim /etc/hosts

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

ターミナル(hosts)
192.168.30.10 homestead.test

今回は Homestead.yaml のIPアドレスを 192.168.30.10 にしておりますので、上記のようにしております。
異なる IPアドレス を設定した方は、適宜変更してください。
esc を押し、INSERTモードを終了します。
:wq を入力し、enter を押して上書き保存します。
これでブラウザから homestead.test を入力すれば、Laravelのページが表示されるようになります。

Windows の場合

Windows の場合は、ホスト名とIPアドレスの対応付けを記述する hosts ファイルは下記にあります。

ディレクトリ(Windowsのhostsファイル)
C:\Windows\System32\drivers\etc

管理者権限でエディタを実行し、hosts ファイルを開き 192.168.30.10 homestead.test と追記して保存してください。
これでブラウザから homestead.test を入力すれば、Laravelのページが表示されるようになります。

これで開発環境の構築は終了です。
お疲れ様でした。

Windows7 の環境で、IPアドレスまたは homestead.test でアクセスしても何も表示されませんでした。
同様に表示されない方は、下記を試してみてください。

【エラー1】IPアドレスまたは homestead.test でアクセスしても表示されない

Windows7 の環境で、ブラウザからIPアドレスまたは homestead.test でアクセスしましたが、何も表示されませんでした。
ssh関連に問題があるのかと色々調べましたが、一度 vagrant destroy で仮想マシンを破棄し、再度、vagrant upで仮想マシンの起動をしたら、Laravelのページが表示されました。
原因は不明ですが、Homestead.yaml の設定などに誤りはないのに、Laravelのページが表示されない方は、一度仮想マシンを破棄して再度起動してみてください。

Homestead の参考サイト

Laravel 公式サイトにも Homestead を利用した開発環境の構築方法を説明しています。
不明な点があれば、公式サイトもご覧ください。

【英語】

【日本語】

Laravel を学べる書籍

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

「PHPフレームワーク Laravel入門」 秀和システム(2017/9/16)

本のタイトルの通り、Laravel入門者向けの書籍です。
2017年9月に出版しており、Laravel 5.4 をベースに執筆されていますが、5.5 開発版でも動作確認済みとのことです。
誤植がいくつかあるので、公式サイトの正誤表を確認しながら、読み進めていきましょう。
Laravelはバージョンによって異なるため、最新版よりは 5.5 (LTSで2018年11月現在もセキュリティサポートされているため)で試すのがよいかと思います。

1.jpg

引用:PHPフレームワーク Laravel入門 | 掌田津耶乃 |本 | 通販 | Amazon

「絶対に挫折させないアプリ開発 はじめてのLaravel」(2018/10)

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

3.jpg

引用:絶対に挫折させないアプリ開発 はじめてのLaravel - plumsa - BOOTH(同人誌通販・ダウンロード)

「PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応」ソシム (2018/9/26)

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

2.jpg

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

TIPS

仮想マシンを起動・停止するには?

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

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

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

エラー
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 仮想マシンからログアウト