vagrant
VirtualBox
Composer
laravel
homestead

Laravel 開発環境の構築 ( VirtualBox + Vagrant + Homestead + Composer + Eclipse ) 第1回 -前編-

はじめに

Laravel 公式で提供されている Homestead と Vagrant box を利用し, ホストOS ( Windows7 ) 上に Laravel の開発環境を構築する手順をまとめています。
なお, 第02章7968氏の記事 を基にさせていただきました。Laravel / VirtualBox / Vagrant / Homestead / Composer に関する説明も充実していますので, 初学者の方は 7968氏の記事 を先に読むことをお勧めします。

前提条件

この記事を書いた時点での環境と各ソフトのバージョンは下表の通りです。

OS Git for Windows VirtualBox Vagrant
Windows7 Professional SP1 64bit 2.15.0 5.2.0 r118431 2.0.1

第01章 事前準備

ここでは以下のソフトをインストールしていきます。

Git fow Windows の導入

今回の開発環境の構築には "Git BASH というコマンドラインツール" を使用します。ここでは, 事前準備として Git BASH が含まれている Git fow Windows の導入を行います。

Git BASH とは?
Git BASH は公式サイトで下記のように説明されています。
引用 : Git for Windows

Git for Windows provides a BASH emulation used to run Git from the command line. *NIX users should feel right at home, as the BASH emulation behaves just like the "git" command in LINUX and UNIX environments.

和訳すると下記のような感じでしょうか。。。

Git for Windows はコマンドラインから Git を実行するための BASH エミュレーションを提供します。BASH エミュレーションは LINUX や UNIX 環境での git コマンドと同様に動作するため, *NIX ユーザーは使いやすく感じるはずです。

では早速, インストールしていきましょう。

Git_for_Windows_01.png
Git fow Windows の [ダウンロード] からインストーラーをダウンロードして実行します。

Git_for_Windows_02.png
ライセンスの確認。そのまま [Next] をクリック。

Git_for_Windows_03.png
インストール先の設定。そのまま [Next] をクリック。

Git_for_Windows_04.png
コンポーネントの選択。下記の通りにチェックを付けて [Next] をクリック。

  • Additional icons
    • On the Desktop ( デスクトップにショートカットアイコンを作成する )
  • Windows Explorer integration ( エクスプローラーの右クリックメニューに追加 )
    • Git Bash Here
    • Git GUI Here
  • Git LFS (Large File Support) ( 大きなバイナリファイルのサポート )
  • Associate .git* configuration files with the default text editor ( git のコンフィグファイルをデフォルトのテキストエディタに関連付ける )
  • Associate .sh files to be run with Bash ( シェルスクリプトが Bash で実行されるように関連付ける )
  • Use a TrueType font in all console windows ( コンソールで TrueType フォントを使用する )
  • Check daily for Git for Windows update ( Git for windows の更新を毎日チェックする )

Git_for_Windows_05.png
スタートメニューへの登録設定。そのまま [Next] をクリック。

Git_for_Windows_06.png
環境変数に関する設定。[Use Git From Git Bash Only] を選択して [Next] をクリック。

Git_for_Windows_07.png
SSL ライブラリの選択。そのまま [Next] をクリック。

Git_for_Windows_08.png
開業コードの取り扱いに関する設定。[Checkout as-is, commit Unix-style line endings] を選択して [Next] をクリック。

Git_for_Windows_09.png
Git で使用するコンソールの選択。そのまま [Next] をクリック。

Git_for_Windows_10.png
オプションに関する設定。下記の通りにチェックを付けて [Install] をクリック。

  • Enable file system caching ( ファイルキャッシュを有効にする )
  • Enable Git Credential Manager ( 2段階認証に対応する )
  • Enable symbolic links ( シンボリックリンクを有効にする )

Git_for_Windows_11.png
インストール中・・・

Git_for_Windows_12.png
[Finish] をクリック。

VirtualBox の導入

今回の開発環境の構築には VirtualBox という "仮想化ソフトウェア" を使用します。VirtualBox については 7968氏の記事 ( 第2章 VirtualBox とは ) で詳しく説明されていますので, そちらを参照してください。

では早速, インストールしていきましょう。

VirtualBox_01.png
Oracle VM VirtualBox Base Packages からインストーラーをダウンロードして実行します。

VirtualBox_02.png
そのまま [Next] をクリック。

VirtualBox_03.png
インストール先の設定。そのまま [Next] をクリック。

VirtualBox_04.png
オプションに関する設定。そのまま [Next] をクリック。

VirtualBox_05.png
ネットワークに関する警告。[Yes] をクリック。

VirtualBox_06.png
インストール開始前の確認。[Install] をクリック。

VirtualBox_07.png
インストール中・・・

VirtualBox_08.png
とりあえず今は VirtualBox を起動する必要はないので, [Start Oracle VM VirtualBox ~] のチェックは外して [Finish] をクリック。

Vagrant の導入

今回の開発環境の構築には Vagrant という "仮想環境を操作する CUI を提供してくれるソフトウェア" を使用します。Vagrant については 7968氏の記事 ( 第3章 Vagrant とは ) で詳しく説明されていますので, そちらを参照してください。

では早速, インストールしていきましょう。

Vagrant_01.png
Vagrant からインストーラーをダウンロードして実行します。

Vagrant_02.png
そのまま [Next] をクリック。

Vagrant_03.png
ライセンスの確認。[I accept the terms of License Agreement] にチェックを付けて [Next] をクリック。

Vagrant_04.png
インストール先の設定。そのまま [Next] をクリック。

Vagrant_05.png
インストール開始前の確認。[Install] をクリック。

Vagrant_06.png
インストール中・・・

Vagrant_07.png
[Finish] をクリック。

Vagrant_08.png
[Yes] をクリックして OS を再起動する。

第02章 Laravel 開発環境の構築

冒頭でもお話した通り, 以下の手順は 7968氏の記事 を基にさせていただきました。バージョンの違いによる微妙な差異がありましたので, この記事は 2017年11月27日 時点での最新バージョンで記載しています。

Step.01 laravel/homestead ( vagrant box ) のダウンロード

第01章 事前準備 の手順通りに作業した場合, デスクトップに "Git Bash のショートカット" が作成されているはずですので, そのアイコンから Git Bash を起動します。

Git Bash ( 以下, "ターミナル" と呼ぶ ) が起動したら, 下記のコマンドを入力して vagrant box をダウンロードします。

ターミナル
slangsoft@win7 MINGW64 ~
$ vagrant box add laravel/homestead <-- 入力

仮想化ソフトウェアとして何を使用するか訊かれますので, ここでは virtualbox ( 2 ) を入力して Enter を押してください。これでダウンロードが開始されます。ダウンロードの完了までには少し時間がかかります。私の環境 ( 自宅の Wi-Fi ) では 12 分程度かかりました。

ターミナル
==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://vagrantcloud.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) parallels
2) virtualbox
3) vmware_desktop

Enter your choice: 2  <-- 入力

下記のように [ Successfully ] と表示されればダウンロードは完了です。

ターミナル
==> box: Adding box 'laravel/homestead' (v4.0.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/4.0.0/providers/virtualbox.box
    box:
==> box: Successfully added box 'laravel/homestead' (v4.0.0) for 'virtualbox'!  <-- [Successfully] と表示されればダウンロード完了!

slangsoft@win7 MINGW64 ~

Step.02 Homstead のダウンロード

ホスト OS ( ここでは Windows7 ) のエクスプローラーを使って任意のディレクトリを作成し, そこに Homestead のファイルをダウンロードします。ディレクトリの作成場所はターミナルからアクセスしやすい場所が良いと思います。
この記事では, ホームディレクトリ [ c:\Users\ユーザー名\ ] の直下に [ LaravelProjects ] というディレクトリを作成したと仮定して説明していきます。

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

ディレクトリを作成したら, そのディレクトリに移動します。
[ LaravelProjects ] ディレクトリに移動するには下記のコマンドを入力します。

ターミナル
slangsoft@win7 MINGW64 ~
$ cd ~/LaravelProjects  <-- 入力

[ LaravelProjects ] ディレクトリに移動したら, 続けて下記のコマンドを入力し, Homestead のファイルをダウンロードします。

ターミナル
slangsoft@win7 ~/LaravelProjects
$ git clone https://github.com/laravel/homestead.git Homestead  <-- 入力

下記のように表示されればダウンロードは完了です。

ターミナル
Cloning into 'Homestead'...
remote: Counting objects: 2662, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 2662 (delta 5), reused 11 (delta 5), pack-reused 2643
Receiving objects: 100% (2662/2662), 503.03 KiB | 545.00 KiB/s, done.
Resolving deltas: 100% (1567/1567), done.  <-- [done.] と表示されれば完了!

ホスト OS ( ここでは Windows7 ) のエクスプローラーを使って [ C:\Users\ユーザー名\LaravelProjects ] を開くと [ Homestead ] ディレクトリが作成されていることが確認できます。

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

ターミナル上で [ Homestead ] ディレクトリに移動してください。
今回は [ LaravelProjects ] ディレクトリ配下に Homestead のファイルをダウンロードしましたので, 下記のディレクトリに移動します。

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

上記ディレクトリに移動するには, 下記のコマンドを入力します。

ターミナル
slangsoft@win7 ~/LaravelProjects
$ cd ~/LaravelProjects/Homestead  <-- 入力

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

ターミナル
slangsoft@win7 ~/LaravelProjects/Homestead (master)
$ bash init.sh  <-- 入力

下記のように表示されれば, 設定ファイル ( Homestead.yaml ) の作成は完了です。

ターミナル
Homestead initialized!

Step.04 SSH鍵ファイル作成

ホスト OS とゲスト OS とのやり取りは SSH で行いますので, そこで必要になる SSH の鍵ファイル ( id_rsa と id_rsa.pub ) を作成します。

まずは, 既に SSH 鍵ファイルが存在しないか確認します。
ホームディレクトリに移動し, 下記コマンドを入力してください。

ターミナル
slangsoft@win7 ~/LaravelProjects/Homestead (master)
$ cd ~/  <-- 入力 : ホームディレクトリに移動
$ ls -la I grep .ssh  <-- 入力 : SSH 鍵ファイルの存在確認

SSH 鍵ファイルが存在しなければ, 下記のように表示されます。

ターミナル
ls: cannot access 'I': No such file or directory
ls: cannot access 'grep': No such file or directory
ls: cannot access '.ssh': No such file or directory

余談ですが, SSH 鍵ファイルが存在する場合は下記のように表示されます。

ターミナル
ls: cannot access 'I': No such file or directory
ls: cannot access 'grep': No such file or directory
.ssh:
total 21
drwxr-xr-x 1 BP003 197121    0 11月 27 00:17 ./
drwxr-xr-x 1 BP003 197121    0 11月 27 00:17 ../
-rw-r--r-- 1 BP003 197121 1766 11月 25 22:33 id_rsa
-rw-r--r-- 1 BP003 197121  394 11月 25 22:33 id_rsa.pub

id_rsa と id_rsa.pub が見つからない場合は, 下記のコマンドを入力して作成します。

ターミナル
slangsoft@win7 ~
$ ssh-keygen -t rsa  <-- 入力
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/slangsoft/.ssh/id_rsa):  <-- 入力 : そのまま Enter
Created directory '/c/Users/slangsoft/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/slangsoft/.ssh/id_rsa.
Your public key has been saved in /c/Users/slangsoft/.ssh/id_rsa.pub.
以下省略

Step.05 Homestead の設定ファイルの編集

まず, Windows7 のエクスプローラーで下記ディレクトリを開きます。

ディレクトリ
C:\Users\[ユーザー名]\LaravelProjects\Homestead

ここに Homestead の設定ファイル ( Homestead.yaml ) がありますので, このファイルをテキストエディタ ( LF 改行に対応したもの) で開きます。私は サクラエディタ を使用しています。ちなみに Windows 標準のメモ帳では上手く編集できません。

変更前の設定ファイルは下記の通り。

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

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/code
      to: /home/vagrant/code

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

このファイルの [ folders: ] と [ sites: ] の設定を下記のように修正して保存してください。

Homestead.yaml
folders:
    - map: ~/LaravelProjects  <-- ここを修正
      to: /home/vagrant/code

sites:
    - map: homestead.test
      to: /home/vagrant/code/TestProject/public  <-- ここを修正

今回は, [ folders: ] と [ sites: ] のみ変更しましたが, Homestead.yaml では下記の設定が可能です。

引用 : Laravel超入門 開発環境の構築 (VirtualBox + Vagrant + Homestead + Composer)

項目 内容
ip Vagrant に割り当てられるIPアドレス。
memory 仮想サーバに割り当てるメモリの容量。
cpus CPUの数。
provider 利用する仮想化ソフトウェアの指定。Vagrant では仮想化ソフトウェアのことをプロバイダと呼びます。
authorize SSH公開鍵のディレクトリ。
keys SSH秘密鍵のディレクトリ。
folders 共有フォルダの指定です。map がホストOS側のディレクトリで、to がゲストOS側のディレクトリ。
sites ホスト名 homestead.app でアクセスしたときに to に記載した仮想マシンのディレクトリを参照。
databases データベース。

Step.06 仮想マシンの起動

まずターミナル上で [ Homestead ] ディレクトリに移動します。

ターミナル
slangsoft@win7 ~
$ cd ~/LaravelProjects/Homestead  <-- 入力

続けて, 以下のコマンドを実行することで仮想マシンを起動することができます。起動途中で何度か Windows のアクセス許可を求めるダイアログが表示されますので, すべて許可してください。

ターミナル
slangsoft@win7 ~/LaravelProjects/Homestead (master)
$ vagrant up  <-- 入力

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

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

ターミナル ( Git Bash ) から SSH で仮想マシンにログインするには, 下記のコマンドを入力してください。

ターミナル
slangsoft@win7 ~/LaravelProjects/Homestead (master)
$ vagrant ssh  <-- 入力

上記の方法でターミナル ( Git Bash ) から SSH でログインできますが, ここでは RLogin を使用します。

RLogin を使用して仮想サーバにログインするには, 下図のように設定します。
RLogin_01.png

  • Server Address
    • [ Homestead.yaml ] の [ ip: ] に設定されている IP アドレス
  • User Name
    • vagrant
  • Password/phrase
    • vagrant

ここからは RLogin を使用している前提で説明しますが, ターミナルからログインした場合も操作手順に違いはありません。

まず, 下記コマンドを入力して [ code ] ディレクトリに移動します。

RLogin
vagrant@homestead:~$ cd ./code  <-- 入力

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

コマンド例
composer create-project laravel/laravel --prefer-dist ディレクトリ名

今回, ディレクトリ名は [ TestProject ] にしますので, 下記のコマンドを実行します。

RLogin
vagrant@homestead:~/code$ composer create-project laravel/laravel --prefer-dist TestProject  <-- 入力

これでダウンロードが開始されます。ダウンロードの完了までには少し時間がかかります。私の環境 ( 自宅の Wi-Fi ) では 6 分程度かかりました。

ダウンロードが完了したら, Windows7 のエクスプローラーを使用して下記ディレクトリを確認してください。仮想マシン上にダウンロードしたはずの [ TestProject ] ディレクトリが作成されていると思います。

ディレクトリ
C:\Users\ユーザー名\LaravelProjects

これは, [ Homestead.yaml ] の [ folders: ] で設定した 2 つのディレクトリ ( [ map: ] と [to: ] が同期されているためです。この同期は VirtualBox の共有フォルダと呼ばれる機能で実現されています。

したがって, ローカルのファイルを修正すると, その修正が自動的に仮想マシン内のファイルにも反映されることになります。その逆も然りです。

Step.08 Laravel ページの表示

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

次に, ドメイン ( 今回は homestead.test ) でもアクセスできるように, Windows7 の hosts ファイルで IP と ドメインを関連付けます。

メモ帳を管理者権限で起動します。
[ ファイル(F) ] → [ 開く(O)... ] を実行し, [ ファイル名(N): ] 欄に下記のファイル名を入力して [ 開く(O) ] ボタンをクリックします。

hostsファイル名
C:\Windows\System32\drivers\etc\hosts

hosts ファイルの最終行に下記を追記し, 上書き保存してメモ帳を閉じます。

hostsファイルに追加する設定
192.168.10.10 homestead.test

今度はブラウザから [ http://homestead.test ] にアクセスしてみてください。先ほどと同じ画面が表示されれば成功です。
LaravelWebPage_02.png

Step.09 仮想マシンを停止する

仮想マシンを停止するには, Vagrantfile があるディレクトリ ( 今回の場合は [ Homestead ] ) に移動してから下記のコマンドを実行します。

ターミナル
slangsoft@win7 MINGW64 ~
$ cd ~/LaravelProjects/Homestead/  <-- 入力 : Vagrantfile があるディレクトリに移動

slangsoft@win7 MINGW64 ~/LaravelProjects/Homestead (master)
$ vagrant halt  <-- 入力 : 仮想マシンの停止

Step.10 仮想マシンを起動する

仮想マシンを起動するには, Vagrantfile があるディレクトリ ( 今回の場合は [ Homestead ] ) に移動してから下記のコマンドを実行します。

ターミナル
slangsoft@win7 MINGW64 ~
$ cd ~/LaravelProjects/Homestead/  <-- 入力 : Vagrantfile があるディレクトリに移動

slangsoft@win7 MINGW64 ~/LaravelProjects/Homestead (master)
$ vagrant up  <-- 入力 : 仮想マシンの起動