Laravel 環境構築(VirtualBox + Vagrant)

Laravel 環境構築(VirtualBox + Vagrant)

初学者にとって環境構築は難しいですよね。
この記事では簡単にLaravel環境を構築できるよう解説していきます。
具体的にはVirtualBoxとVagrantでUbuntuOSの仮想環境を構築しそこにLaravelをインストールしてブラウザにLaravelを表示させるまで解説していきます。
laravelトップ画面

環境

VirtualBox

UbuntuCentsOSの仮想化を実現する為のソフトウェアがVirtualBoxです。
MacOSやWindowsOSの上にLinuxOSを動作させる事が可能になります。
ダウンロードはこちらから↓
https://www.virtualbox.org/wiki/Downloads

Vagrant

VagrantはRuby言語で書かれた、VirtualBoxなどで構築した仮想環境をコマンドラインから管理するためのソフトウェアです。
VagrantVirtualBoxのGUI上で操作設定をしなくても仮想マシンの起動や停止、破棄などの操作をコードで指示が出来ます。
Vagrant(Rubyのコード)→VirtualBox(Vagrantに書かれたOS、サーバー情報を元に仮想環境を構築する)
ダウンロードはこちらから↓
https://www.vagrantup.com/downloads.html

Git

MacのかたはダウンロードせずともGitが使える様になっています。
WindowsのかたはダウンロードするとGit Bashが使える様になるのですが、このツールを使用するとWindowsでもLinuxコマンドを実行できるのでオススメです。
ダウンロードはこちらから↓
https://git-scm.com/downloads

Homestead

Laravel公式のBoxであるHomesteadを用いて環境を構築します。
PHPやWebサーバー(ApacheやNginx)、他サーバーソフトウェアをローカルにインストールする必要はありません。
HomesteadはWindows、MacOS、Linux上で実行する事ができ、PHP/MySQL/Nginx/Redis/NodeなどLaravelアプリを開発する為のものが含まれています。

※言語・Webサーバー・DBなどを含んだOSの仮想環境をBoxと呼びます。
Vagrantはこれを一つのパッケージとして管理する事が出来ます。

Boxをインストール

Laravelの公式VagrantBoxであるHomesteadをダウンロードします。

$ vagrant box add laravel/homestead
このコマンド操作が失敗する場合はVagrantを更新する必要があるかもしれません。
インストールにはネットワーク環境によってはかなりの時間がかかります。(自分の場合は20分程かかりました)
※ネットワークエラーが出た際は再度同じコマンドを打てばインストールされます。

Homesteadをダウンロード

インストールしたVagrant Boxを管理するためのツールをインストール

git checkoutの操作ですが、masterブランチが常に安定している訳でないので安定したバージョンに切り替えます。
こちらで確認→ https://github.com/laravel/homestead/releases (10月9日現在では9.2.2が安定バージョン)

git cloneでHomesteadをインストールするとHomesteadディレクトリが作成されます。
このディレクトリ中に仮想環境を設定するためのファイルがあるため、Vagrant upなどの仮想環境 起動・停止はこのHomesteadディレクトリで行なってください。

#ホームディレクトリもしくは好きなディレクトリへ
cd ~
# Homesteadインストール
git clone https://github.com/laravel/homestead.git Homestead
# Homesteadディレクトリへ
cd Homestead
# 最新の安定バージョンへ切り替える
git checkout v9.x.x  
# 設定ファイルを生成する為の初期化
init.bat (Windowsの方)
bash init.sh (Macの方)

Homesteadの設定

vi Homestead.yaml
でviファイルを開きます。
ProviderはVirtualBoxになっているか確認してください。

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

フォルダを共有させる

ホストとゲストという概念があるので軽く説明します。
手元にあるパソコンに仮想環境を構築した時、その手元にあるパソコンをホスト(OS)、仮想環境側をゲスト(OS)と呼びます。
今回の例でいうと、この記事をみている方のWindowsもしくはMacのPCにLinuxの仮想環境を構築すると
ホスト側 – WindowsもしくはMac側
ゲスト側 – Linux側
と呼びます。

ホストとゲストが共有フォルダで繋がっている事を確認してみましょう。
ホスト側の仮想環境を起動したフォルダ(今回はHomesteadですね)と、ゲスト側の/home/vagrantです。
この共有機能のおかげでホスト側のエディタで編集した内容がゲスト側でも反映される様になります。

※後でvagrant sshでゲスト側のマシンに入りますがcodeフォルダでtest.txtの様な適当なファイルを作成してみるとホスト側の/homestead/codeゲスト側の/home/vagrant/codeにtest.txtが共に作成されているのが確認出来ます。

folders:
    - map: ~/code            #ホストのフォルダ
      to: /home/vagrant/code #ゲストのフォルダ

mapを書き換えれば開発に使用するフォルダを指定する事が可能です。

ドメインの設定

ブラウザから特定のドメインで作成したアプリを表示するための設定です。
下記の例では、homestead.testというドメインにリクエストがあった際にはtoに接続されます。
これからsampleというプロジェクトを作成する予定なので/home/vagrant/code/sample/publicとしています。

sites:
    - map: homestead.test #基本は任意の値が設定可能ですが一部のドメインはHTTPSが強制されるみたいです
      to: /home/vagrant/code/sample/public

仮想マシンを起動する

仮想環境のマシンを起動するためのコマンドを打ちます。

cd ~/Homestead  
# ここでフォルダ内にVagrantfileがあるか確かめておきましょう
# ls | grep Vagrantfileでファイルが見つかればOKです。
# マシンを起動させる
vagrant up


仮想環境にログインする場合はvagrant sshコマンドを打ち込みます。

次にあるプロジェクト作成作業はこの仮想環境内で行なっていくのでログインしたままにしておいてください。
今後、composerやnpmコマンドでパッケージ・ライブラリをインストールしたい際はゲスト側である仮想環境内で行いましょう。
(ホスト側にPHPやNode環境がなくてもHomesteadに含まれているのでnpmコマンド等が使用可能です)

プロジェクト作成

いよいよ終盤です。
プロジェクトを作成していきましょう。

cd ~/code
composer create-project laravel/laravel sample

少し時間のかかる処理です。
処理が終わるとsampleディレクトリがあり、中身にアプリケーションが一式作成されていると思います。

ブラウザでHomested.ymlに記載されているIPアドレス、もしくはドメインを打ち込んで見て初期画面が表示されれば成功です。
http://homestead.test

※Windowsユーザーの方向け
hostsファイルにIPとドメインを紐づけないと上手く表示されませんのでメモ帳などを管理者権限で開き下記を記入します。

192.168.10.10  homestead.test
laravelトップ画面

Laravelの初期画面が表示されれば成功です!
お疲れ様でした。

こちらの記事が非常に詳しく解説してくれています。
少し長めの記事になっているのでサクッと環境を作りたい人には向いてないかもしれません。

https://qiita.com/7968/items/97dd634608f37892b18a#yaml-%E3%81%A3%E3%81%A6%E4%BD%95