LoginSignup
3

More than 3 years have passed since last update.

[入門]Laravelローカル仮想環境構築(VirtualBox + Vagrant + Homestead)のいろは

Last updated at Posted at 2020-12-05

今回はVirtualBox、 Vagrant、 Homesteadを使ってLaravelの環境構築をする方法を順を追ってできるだけ簡潔に説明していこうと思います。

ps.
VirtualBoxによる環境構築に関する記事は他にもたくさんありますが、長々と一つ一つの説明すると、途中でこんがらがってしまい、逆にわかりづらくなってしまっているものが多かったので、この記事では出来るだけ分量を抑え、簡潔に書いていこうと思います。

VirtualBoxとは

既存のOS上に仮想のOSを実行できる仮想化ソフトウェアのこと。

windows上でMacOSを起動したり、逆にMac上でwindowsを起動できたりする仮想化マシン。

VirtualBoxを扱う上で最低限抑えておくべき重要語句

ゲストosとホストos

あるコンピュータに仮想環境を構築する場合、そのコンピューターをホストos、仮想環境側をゲストosと呼ぶ。
例えば、MacBook に Windowsの仮想環境を立てるならば、MacBook 側がホストos、windows側がゲストosとなる。

開発を進めていくにあたってある作業を「ホストで実行するか、ゲストで実行するか?」を考える必要がある場合があるためしっかり抑えておく。

共有フォルダ

ゲストosとホストos間で紐付けられたフォルダのこと。
このフォルダ下で作成されたファイルやフォルダ、編集内容は双方にリアルタイムで反映される。

先ほどの例を借りると、
この機能を利用することで、ホストos側のMacで変更した内容は、リアルタイムでゲストos側のWindows に共有しているフォルダにも反映される。
逆も同じく、Windows側で変更した内容は、リアルタイムでMac側の共有フォルダにも反映される。

Vagrantとは

VirtualBoxで構築した仮想環境をコマンドラインから操作するためのソフトウェア。
VirtualBox に対して、仮想マシンの起動や操作、停止や破棄などの指示をしてくれる。

❇︎仮想マシンに対して、 Vagrant 経由で指示をするため、VirtualBox を操作することは基本的にない。

Vagrant Boxとは

DB・Webサーバ・言語など、仮想環境に必要な機能を一つのパッケージとして管理する機能。

ゲストosの元となるパッケージ(テンプレート)を追加できる。

Laravelアプリケーションは、公式に公開されているHomesteadというパッケージ(テンプレート)を利用することで、Laravel環境に必要なものを一気にインストールすることができる。

Homesteadとは

Vagrant Boxのパッケージの一種で、Laravelの環境構築に必要なOS、Nginx、PHP、MySQL等の環境を一つにまとめたパッケージ。

Let's 環境構築!

①VirtualBox, Vagrantインストール

VirtualBox
https://www.virtualbox.org/

Vagrant
https://www.vagrantup.com/downloads.html

②Homestead vagrant box のダウンロード

ターミナルを開き、以下のコマンドでVagrant BoxにHomestead vagrant boxを追加する。

$ vagrant box add laravel/homestead

Enter your choiceと使用する仮想化ソフトウェアの種類を聞かれるが、
今回はVirtualbox の番号を入力する。

③Homesteadのダウンロード

任意のディレクトリを作成し、そこに Homestead のファイルをダウンロードする。

#任意のディレクトリ作成し移動
$ mkdir app
$ cd app
#作成したディレクトリ下でHomesteadのテンプレートをダウンロード
$ git clone https://github.com/laravel/homestead.git Homestead

これでの中にappディレクトリの直下に Homestead のファイルがダウンロードされる。

④Laravel Homestead の設定ファイルの作成

#先ほど作成したHomesteadの直下に移動する
$ cd Homestead
#Homesteadを初期化
$ bash init.sh

Homesteadを初期化することによってHomestead の設定ファイルであるHomestead.yamlが生成される。

⑤Homestead の設定ファイルの編集

先ほど作成したHomestead.yamlファイルを編集する。

$ vim Homestead.yaml

中身を以下の通りに設定する。

Homestead.yaml
---
ip: "192.168.10.10" #Vagrant に割り当てられるIPアドレス
memory: 2048 #仮想サーバに割り当てるメモリの容量
cpus: 2 #CPUの数
provider: virtualbox #利用する仮想化ソフトウェア

authorize: ~/.ssh/id_rsa.pub #公開鍵の場所

keys:
    - ~/.ssh/id_rsa #秘密鍵の場所

folders: #共有フォルダの指定
    - map: ~/app #ホストos側(先ほど作成したappディレクトリ下に設定)
      to: /home/vagrant/code #ゲストos側

sites: #homestead.test でアクセスしたときに to に記載した仮想マシンのディレクトリを参照。
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public

databases:
    - homestead #データベース

features:
    - mariadb: false
    - ohmyzsh: false
    - webdriver: false

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

⑥仮想マシンの起動

以下のコマンドで仮想マシンを起動する。

Homesteadディレクトリ下
#仮想マシンの起動
$ vagrant up

⑦仮想マシン(ゲストos)上でLaravelインストール

#ゲストosにログイン
$ vagrant ssh

先ほど、Homestead.yamlのfolderで設定したように、以下のto以降の部分に合わせるため、codeディレクトリ下にlaravelをインストールする。

folders: #共有フォルダの指定
    - map: ~/app #ホストos側(先ほど作成したappディレクトリ下に設定)
      to: /home/vagrant/code #ゲストos側

code/に移動

vagrant@homestead:~$ cd code

laravelのインストール()
先ほど、Homestead.yamlのsitesで設定したように、ホストosのブラウザからLaravelアプリケーションにアクセスする時に、ホストosの/home/vagrant/code/Laravel/public下を参照させるため、プロジェクト名をLaravelとして、インストールする。
(Laravelのデフォルトのドキュメントルートはpublic。)

sites: #homestead.test でアクセスしたときに to に記載した仮想マシンのディレクトリを参照。
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public

#laravelのインストール(結構時間かかります)
vagrant@homestead:~$ composer create-project laravel/laravel --prefer-dist Laravel

⑧Laravel ページの表示

ホスト名とIPアドレスの対応付け

ホストos
$ sudo vim /etc/hosts

最後の行に以下の行を追加する。

/etc/hosts
192.168.10.10 homestead.test

これで、ブラウザ上でhomestead.testにアクセスした際に、IPアドレス192.168.10.10を参照されるようになる。

ブラウザ上でhomestead.testと打ってみて、Laravelの文字が大きく表示されたら成功

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3