このブログは未経験からのエンジニア転職やプログラミングの勉強方法などを発信する、現役エンジニアによるエンジニアのためのトータル技術ブログです。ブログとご一緒にSNSのフォローもよろしくお願いします。

Twitterをフォローする

【Laravel】Homestead+Vagrant+VirtualBoxで開発環境を構築する方法

Laravel
スポンサーリンク

こんにちは!あっきー(IwswAkht)です!

今回はHomesteadを使用したLaravelの環境構築の方法を記事にします。

VirtualBox、Vagrant、Homestead

これらの言葉を聞いて何それ、おいしいの?という方に向けて全体的な概要を確認しながら実際にLaravelのトップ画面を表示するまでの方法をチュートリアル化した記事になります。

Windows環境、Mac環境どちらでも対応できるように書いてますのでOSによる違いは極力なくすようにしております。

また、実際に環境構築する中で発生したエラーなどもまとめてますので一度トライしたけどエラーがわからず挫折してしまった方などの参考にもなれば幸いです。

それではみていきましょう!

スポンサーリンク

はじめに

まずそれぞれの概要を確認していきましょう。

VirtualBox→Vagrant→Homesteadの順番でみていくとそれぞれがどういう役割をになっているかわかりやすいと思いますのでそんな流れで説明していきます。

VirtualBoxとは

VirtualBoxはひとことで言えば、OS上で別のOSを実行できる仮想化ソフトウェアです。

windows上で仮想環境のmacのOSを起動するなど、その逆でmacの環境でwindowsを起動するなど、仮想環境でLinuxを使うなど。

プログラミングやパソコンにゆかりがあるひとなら、どれかしらにピントくるイメージがあるのではないでしょうか?

VirtualBoxはこのように違うOSやプログラミング言語を動かすためにVirtualBox上に仮想化した環境を作成するために使うアプリケーションになります。

ですが、VirtualBoxをインストールしただけではまだなにもできません。VirtualBoxでLaravelを動くようにするには次にOSを入れて、Webサーバを入れて、データベースを入れて、PHPを入れてなどやらなければならないことがたくさんあります。

そんな時に登場するのがVagrantです。

Vagrantとは

VagrantはOS、Webサーバ、データベース、プログラミング言語など構築しなければいけない仮想環境を簡単に作れる仕組みを提供するオープンソフトウェアです。

詳しいやり方は後ほど説明しますが、Vagrantをインストールするとvagrantコマンドをターミナル上で実行できるようになります。

基本的にこのvagrantコマンドで仮想環境(VirtualBox)に対して指示を出すことができますので、VirtualBoxをさわることなくVagrantを経由して操作を完結させることができます。

その中に$ vagrant boxというコマンドがあります。
このコマンドではDiscover Vagrant Boxesに公開されている仮想環境のセットアップファイルを自分の仮想環境にダウンロードすることができます。

試しにDiscover Vagrant Boxesの中を覗きますと、UbuntuだったりCentOSなどのOSがどの仮想環境上で動かせるか記載されているのが確認できます。

例えばcentos/7をダウンロードしたい場合は$ vagrant box add centos/7とコマンドを実行すればお手軽にOSが導入できるというイメージです。

Vagrantで仮想環境を簡単に導入できることがわかりましたが、Laravelを動かすためにはまだまだ足りない要素があります。

そこで出てくるのがHomesteadです。

Homesteadとは

HomesteadはLaravelを動かすための開発環境を簡単に構築できるツールになります。

Laravel公式(6.x)からHomesteadの中に含まれているソフトウェアが確認できます。

OS、サーバ、データベース、プログラミング言語、ライブラリ、様々なものがパッケージとして内包されていることが確認できますね。

実際にHomesteadで開発環境を構築するにはlaravel/homestead Vagrant boxHomesteadをセットで使用します。

Vagrant boxでVirtualBoxにHomesteadを構築するためのファイルなどがダウンロードされGitHubに公開されている設定済みのVagrantfileなど使用してLaravelに必要なソフトウェアを導入するというイメージです。

Homesteadの素晴らしいところは簡単に環境を構築できるというのもありますが、個人的には複数人で共同で開発する時に環境を統一できるところにあります。

GitHubにHomesteadで環境構築したLaravelのコードがあった場合、自分のローカル環境にVirtualBoxとVagrantが導入されて入れば$ vagrant upで同じ環境が作れます。

ただ、デメリットというほどではないかもですが、逆にローカルで構築すると思わぬところで他の人(Homesteadで環境構築した人)では出なかったエラーが発生したりします。

例えば、以下のようなエラーが発生したとします。

エラー

このエラーはPHPにモジュールがない時などに起きるエラーなのですが、これはローカルのPHPとHomesteadのPHPのモジュールの差異があったためです。

つまり、Homesteadで環境構築したら全員がHomesteadで足並みを揃えて開発するとパフォーマンスを発揮できますが、各々が好きに環境構築すると大変なこともあるという認識は持っておいて欲しいです。

概要はこのくらいにして実際に手を動かしてやっていきましょう。

環境構築の工程

まずはざっと一連の流れを確認しましょう

  • VirtualBoxのインストール
  • Vagrantのインストール
  • Gitのインストール
  • 環境構築

また、Macの場合はXcodeがあらかじめインストールされている前提ですのでインストールしていない人はインストールしてからよんでください。

VirtualBoxのインストール

以下のURLよりダウンロードを行います。

Oracle VirtualBox

VirtualBoxは仮想環境(ホストOS上で別のOSを実行)を提供するソフトウェアです。

環境構築についてはVagrantを経由して行いますのでここではインストールするだけで大丈夫です。

手順は以下になります。

  1. Download VirtualBox x.x.xをクリック
  2. VirtualBox x.x.x platForm Packagesより自分のPCの環境のリンクをクリック

あとは特にこだわりがなければそのままガイドに沿ってインストールを行います。

個人的にはデスクトップにアイコンが増えるのが嫌なのでCreate a shortcut on the desktop/in the Quick Launch Barのチェックは外しました。

アイコンにショートカットを作らない場合は以下に保存されます。

C:\Program Files\Oracle\VirtualBox\
Finder→アプリケーション

インストールが終了し以下の画像が表示されれば終了です。

macの場合でしたらbrewコマンドでインストールすることも可能です。以下のコマンドを実行してください。

ターミナル

caskはGUIのアプリケーションをインストールする時に使うコマンドです。Finder上にVirtualBoxがインストールされていることが確認できます。

Vagrantのインストール

以下のURLダウンロードを行います。

Install | Vagrant | HashiCorp Developer
Explore Vagrant product documentation, tutorials, and examples.

使用PCのOSとBit数が同じものを選択します。

・Bitの確認方法

コントロールパネル>システムとセキュリティ>システム

「システムの種類:」にxxビットと記載されています。

システム環境設定>システムレポート

プロセッサに「x.x GHz Core i~」のような表記があると思います。それを下記の対応表で確認してください。

プロセッサ名 32 ビット/64 ビット
Intel Core Solo 32 ビット
Intel Core Duo 32 ビット
Intel Core 2 Duo 64 ビット
Intel クアッドコア Xeon 64 ビット
デュアルコア Intel Xeon 64 ビット
クアッドコア Intel Xeon 64 ビット
Core i3 64 ビット
Core i5 64 ビット
Core i7 64 ビット

VirtualBoxと同様にこだわりがなければガイドに沿ってインストールを完了させます。

Vagrantは隠しファイルとしてインストールされていますので確認したい場合は隠しファイルを表示して確認してみてください。Users/{userName}/.vagrant.d にいます。

インストールができましたら以下のコマンドでVagrantが導入されたか確認してください。

ターミナル

また、macの場合は以下のコマンドからVagrantをインストールすることができます。

ターミナル

Gitのインストール

続いてHomesteadをクローンするためにGitをインストールします。

まずはGitがインストールされているか以下のコマンドで確認してからインストールを行ってください。

ターミナル

バージョンの表示がされなければ続きの作業をおこなってください。

Windows

WindowsではGit for WindowsをインストールしてコマンドはGit bashを使用して環境構築をします。

Homesteadをクローンするためでもありますが、基本的にコマンドがUnix系になるためデフォルトでUnixコマンドが使えないWindowsのコマンドプロンプトでは対応できないため、Git bashでUnixコマンドのようにして使うためです。

以下の記事がGitのインストールの流れから各設定項目の説明まで網羅しておりとてもわかりやすかったので参考にしてください。

WindowsにGitをインストールする手順(旧バージョン 2.25.1)
Windows版のGit(Git for Windows)をWindows10にインストールする手順です。

Mac

MacはWindowsのように公式のHPからインストールする方法でもいいのですがHomebrewからインストールするほうが楽だったのでこちらを紹介します。

ターミナルを起動して以下のコマンドを実行してください。

ターミナル

※最新のコマンドは、Homebrewにアクセスしてください。

以下のコマンドでインストールされたか確認します。

ターミナル

 your system is ready to brew と表示されれば大丈夫です。

続いて以下のコマンドを順番に実行して、 git version 2.x.x となれば完了です。

ターミナル

環境構築

環境構築はコマンドで行いますのでターミナルを起動してください。

WindowsならGit Bashを起動。Macならターミナルを起動します。

Homestead vagrant box のダウンロード

以下のコマンドを実行してください。

ターミナル

Enter your choice:と使用する仮想化とソフトウェア聞かれます。

該当するものを選択してEnterを押してください。今回はVirtualBoxになりますので3)を選択します。

僕は以下のように選択肢がでました。WindowsとMacどちらでも一緒でした。

Homestead のダウンロード

任意のディレクトリにHomesteadファイルをクローンします。

今回はUser/{userName}/配下に/appというフォルダを作成するとして以下のコマンドを実行してください。

ターミナル

 Homestead/ とターミナルに表示されていれば完了です。

SSH鍵の作成

SSHは暗号化でリモートコンピュータと通信するプロトコルです。

仮想環境に繋ぐ時にSSHで認証をして繋ぐために作成しておく必要があります。以下のコマンドを順番に実行して作成してください。

ターミナル

すでにある場合は以下のようにid_rsaid_rsa.pubが存在することが確認できます。

ターミナル

ない場合は以下のコマンドを実行し、sshキーを作成します。

ターミナル

Enter file in which to save the keyと表示されたらEnter⏎を押します。

Enter passwordとパスワードを求められるので任意のパスワードを入力してEnter⏎
再度パスワードを求められるのでもう一度入力してEnter⏎(※パスワード入力時はターミナルに文字が表示されません)

以上でSSH鍵の作成の完了です。

設定ファイルの作成/編集

次に先ほどGitHubからクローンしたHomesteadファイルの設定ファイルを作成、編集していきます。

このファイルにホストOSやゲストOSのディレクトリ定義やSSH鍵での接続を定義したりと、各種設定を行うファイルしていくというイメージです。

以下のコマンドを実行し、設定ファイルを作成します。

ターミナル

Homestead initialized!と表示されていれば完了です。この時にHomestead.yamlというファイルが作成されます。

ファイルをvimで編集していきます。

ターミナル

以下のような設定内容が表示されますのでiを入力してINSERTモードに変更して編集してください。

Homestead.yaml

編集が完了しましたらEscでINSERTモード解除。
:wqを入力しEnter⏎で上書き保存します。

仮想マシンに接続-Laravelプロジェクトの作成

設定は完了ですのでVagrantを起動してLaravelのプロジェクトを作成してみましょう。

以下のコマンドを順番に実行してください。

ターミナル

Homestead.yamlで設定したIP(192.168.10.10)にブラウザからアクセスするとLaravelのトップ画面が表示されます。

マイグレーション

マイグレーションは特にローカルとやり方は変わりません。

.envファイルを以下に変更してphp artisan migrateを実行すれば完了です。

.env

ホスト名でアクセス

IPアドレス(192.168.10.10)ではなくhttp://xxx.comのようにホスト名でアクセスできるようにしましょう。

実はホスト名は先ほどのHomestead.yamlの以下の部分でhomestead.testというホスト名で設定しています。

Homestead.yaml

ただこのままではホスト名でアクセスしても画面は表示されません。
パソコンのhostsファイルにこのホスト名を登録してあげることでアクセスできるようになります。

macの場合はvimでホストファイルに以下の編集を加えてください。

ターミナル

WindowsではC:\Windows\System32\drivers\etc\hostsに同じように192.168.10.10  homestead.testを追加してください。

書き込み権限の関係などで編集できないなどの問題が発生しましたらこの記事とか参考に変更してください。

http://homestead.test/にアクセスしますとLaravelのトップ画面が表示されることが確認できます。

PHPのバージョンを変更

Homesteadのバージョンを変更する方法も確認しておきましょう。

PHPのバージョンも実はHomestead.yamlで設定しています。

Homestead.yaml

ただこれだけですとCLIのバージョンはデフォルトのままです。

以下の中でバージョンに一致するコマンドを実行することで適応することができます。

ターミナル

仮想環境を停止

作業が終わったら仮想環境を停止します。

以下のコマンドを順番に実行して仮想環境を停止します。

ターミナル

エラー対応

環境構築でよく出るエラーと対応をまとめます。

No input file specified.

Q. 画面にアクセスするとNo input file specified.と表示される。

原因:パスが間違っていることが原因

対策:まずは原因を調査するためにログファイルを確認します。以下のコマンドを実行します。

ターミナル

{host name}Homestead.yamlで設定したホスト名になります。今回はhomestead.testになりますね。

結果としては以下です。

ターミナル

/home/vagrant/code/public/index.phpのファイルが見つからないとのこと。

public/index.phpのはLaravelデイレクトの下にあるファイルです。「仮想マシンに接続-Laravelプロジェクトの作成」のとこでやったことを見返してください。

仮想環境にログインした後に$ cd codeして$ laravel new sampleを実行しました。つまりディレクトリ構造としてはcode/sample/public/index.phpになります。

ここのファイルパスの指定はHomestead.yamlsites:で行っており、デフォルトでは/home/vagrant/code/publicになっています。

以上からHomestead.yamlを以下のように編集すれば解決です。

Homestead.yaml

VirtualBox machine already exists

Q. Vagrant upで以下のエラーで起動しなくなった

ターミナル

原因:VirtualBoxの仮想環境の名前が重複している

対策:まず、以下のコマンドをいくつか試してみる

ターミナル

エラーが出てる仮想環境のidに対して以下のコマンドを実行

ターミナル

これでダメだったらVirtualBoxを開いて対象の仮想環境を設定...でリネームするか除去...で削除して$ vagrant upし直せばOKです。

仮想環境は壊れたら簡単に破棄できるのがメリットなので難しく考えないで詰まったら作り直してみましょう。

VBoxManage: error: Failed to create the host-only adapter

Q. Vagrant upで以下のエラーで起動しなくなった

ターミナル

原因:macとVirtualBoxのバージョン相違

対策:VirtualBoxを最新バージョンにしましょう

VirtualBoxから最新のパッケージをダウンロードします。(2021年現在は6.1.18が最新)

また、macのアップデートの原因でインストールに失敗する可能性があります。

この場合システム環境設定セキュリティとプライバシーでダウンロードしたアプリケーションの実行許可を許可してあげて再度インストールすればインストール可能になります。

ネットワーク接続エラー

Q. 以下のようなネットワークエラーがおきた

ターミナル

原因:Homestead.yamlでのIPアドレスとローカルIPアドレスが同じになっているのが原因

対策:Homestead.yamlのIP設定を変更する

仮想マシンがタイムアウトする

Q.以下のようなネットワークエラーがおきた

ターミナル

原因:仮想化支援機能が有効になっていない

対策:BIOSの設定を変更する。

コントロールパネル>プログラムと機能>Windowsの機能の有効化または無効化をクリックしHyper-vのチェックを入れて再起動する。

これはほぼWindowsの場合でおきますのでmacの方は大丈夫だと思います。

仮想マシンが起動しない

Q.そもそも仮想マシンが起動しない。vagrant upしてもシェルがコマンドを認識しない

原因:WindowsのOSが原因
対策:根本はPCの買い替えかOSの買い替え

以前Linuxの勉強でVirtualBoxで使用時にシェルが全く起動しなくて原因不明で頓挫したことがありました。

気分を変えてMacでやってみたら問題なくシェルが起動して、当時はとりあえず動いたしと深く考えず放置していたら今回の環境構築でも同じくvgrant up の時に仮想マシンが立ち上がらなく今回しっかり調べてみました。

原因としてはWindows 10 HomeProfessional なのかということでした。

Homeでは一個前でのエラー対策に記述した仮想化支援機能の有効化ができないようです。

つまり根本的に積んでいるため対策としては以下のようにするしかないようです。

  • Professionalを買う
  • macでやる
  • UbuntuでもcentOSでもいいから入れて、そのOS上で動かしてみる

パソコン自体を買い替えたり、MicroSoftの公式からOSを購入したりすると結構高い値段になってしまいますので、ヤフオクとかで探すと安くOS大替のパッケージ変えますのでおすすめです。

さいごに

まとめとして一連の流れをざっくりとした図にしてみました。

環境構築は最初はやっぱり大変ですね。新しい開発環境がでてきたらまずはやってみて記事にしてプログラミングの一番の挫折ポイントを少しでも減らせるよう今後とも記事にしていこうと思います
この記事を気に入っていただけましたらTwitterdでもプログラミングに関してのツイートをリアルタイムでしていますので
ご一緒にフォローもお願いします。

IT転職ならレバテック!

僕は未経験からSESの企業にエンジニアとして転職し、その後はフリーラン、現在は受託開発企業に転職しました。

エンジニアとしていろいろな働き方を経験し、いろいろな転職サイトや転職エージェントの方にお話を伺いました。

その経験の中でだいじだと感じたことは、ITに特化した転職エージェントのサービスを利用することです。

幅広い業界に対応した転職エージェントはIT転職に特化したエージェントと比べると紹介先の数が少ないです。

そのため希望してない紹介先に転職し、思ってたのと違うとなることもあります。

そうならないためにエンジニアを目指すなら必ずIT特化の転職サービスを登録し、たくさんの選択肢の中から自分が行きたいと思う企業を探してください

僕はフリーランスでの案件探し、受託開発企業の転職の時もレバテックのかたに紹介していただきました。

とても満足できましたので皆さんもぜひ利用してみてください!

\無料のIT系転職サービス/

/優良案件がたくさん\

スポンサーリンク
あっきー

元キャバクラ店長から未経験でエンジニアに転職した異端児。

自分の経験を元に、エンジニア転職や未経験からでも挫折しないプログラミングの勉強方法の発信をしてます。

あっきーをフォローする
LaravelPHP
\良い記事だったらシェアしてね!/
スポンサーリンク
駆け出しエンジニアのつぶやき