今回は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
中身を以下の通りに設定する。
---
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
⑥仮想マシンの起動
以下のコマンドで仮想マシンを起動する。
# 仮想マシンの起動
$ 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アドレスの対応付け
$ sudo vim /etc/hosts
最後の行に以下の行を追加する。
192.168.10.10 homestead.test
これで、ブラウザ上でhomestead.testにアクセスした際に、IPアドレス192.168.10.10を参照されるようになる。
ブラウザ上でhomestead.testと打ってみて、Laravelの文字が大きく表示されたら成功