概要
Macの中に、VagrantとVirtualBox、Homesteadを用いてLaravel5(本記事は5.2)の仮想開発環境を初心者が作る備忘録。
時間が少しかかるので、コーヒーでも飲みながら気長にいきましょう。
作業環境
- PC : Macbook Air
- OS : Mac OS X 10.11.5 El Capitan
Vagrantを導入する
Vagrantは、仮想マシンの構築と開発・テスト環境の構築をまとめて行える支援ツール
公式サイトのダウンロードページから、各OS用のVagrantをダウンロードします。
ダウンロードしたファイルをクリックするとインストーラーが起動するので、指示に従ってインストールします。
VirtualBoxを導入する
VirtualBoxは、Vagrantによって構築される仮想マシンを置く、「置き場」をPC内につくりだすソフトウェア
公式サイトのダウンロードページから、各OS用のVirtualBoxをダウンロードします。
ダウンロードしたファイルをクリックするとインストーラーが起動するので、指示に従ってインストールします。
Vagrantを組み立てる
ターミナルを起動し、適宜仮想マシンであるVagrantを動かすディレクトリを作成し、その中へ移動します。
$ cd // 自身のホームディレクトリへ移動
$ mkdir HS_Vagrant // HS_Vagrant というディレクトリを作成
$ cd HS_Vagrant // 作った HS_Vagrantディレクトリの中へ移動
HS_Vagrant
ディレクトリの中で、以下のコマンドを実行し、Vagrant boxを追加します。
Vagrant boxは、仮想マシンであるVagrantを組み立てるための設計図のようなものです。
今回は、Homestead仕様に改造してマシンを組み立てるので、その設計図(laravel/homestead)をadd(追加)します。
$ vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
box: URL: https://atlas.hashicorp.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) virtualbox
2) vmware_desktop
Enter your choice:
VirtualBoxを使用するため、Enter your choice: 1
を入力します。
すると以下のように画面が進み、インストールが開始されます。
==> box: Adding box 'laravel/homestead' (v0.4.4) for provider: virtualbox
box: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.4.4/providers/virtualbox.box
通信環境にもよりますが、Successfully(完了)までかなり時間がかかります。(15分ほど)
気長に待ちます。コーヒーでもいかがでしょうか。
==> box: Successfully added box 'laravel/homestead' (v0.4.4) for 'virtualbox'!
これが出たら完了です。
Homestead仕様に改造されたマイ仮想マシンができました!
HomesteadリポジトリーのClone
gitからすごい人たちが作ってくださった、Homesteadをクローンします。
つまり、Homesteadをインストールします。
$ git clone https://github.com/laravel/homestead.git Homestead
先ほど作ったHS_Vagrant
ディレクトリの中に Homestead
ディレクトリが作られているので、中に入って「初期化」をおこないます。
$ cd Homestead // Homestead ディレクトリの中へ移動
$ bash init.sh // Homestead を初期化
Homestead initialized!
が出れば初期化の成功です。
(初期化が行われると、自身のホームディレクトリにある.homestead
という隠しディレクトリに、homestead.yaml
というファイルが生成される。)
Homesteadの各種設定
$ cd // 自身のホームディレクトリへ移動
$ cd .homestead // .homestead という隠しディレクトリへ移動
以下のようにls
コマンドで中身を確認して、Homestead.yaml
ファイルが存在していればOK!
$ ls
Homestead.yaml after.sh aliases
vi
コマンドでHomestead.yaml
ファイルを編集する。
(※ Viエディタが苦手、どうしても無理、見たくもない、触るのが怖い!っていう人は、最悪GUIから辿ってファイルに行き着きましょう。なお、隠しディレクトリを表示したり、隠しディレクトリの中に入っていく手段は各自探してください)
$ vi 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.app
to: /home/vagrant/Code/Laravel/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
#
キーボードの「i」を押して、 -- INSERT --モードにしてください。
foldersの設定
folders
の-map: ~/Code
部分を以下のように書き換えます。
Before
folders:
- map: ~/Code
to: /home/vagrant/Code
After
folders:
- map: ~/HS_Vagrant/Homestead/Code
to: /home/vagrant/Code
以上を書き換え終わったたら、[control] + c
で INSERT モードを抜けて、
:wq
で上書き保存し、viエディタを終了します。
hostの追加
viエディタを終了したら、一旦自分のホームディレクトリに戻ります。
次に、~/etc/hosts
へ、hostを追加します。
(localでブラウザに、http://homestead.app
と打った時に、homesteadの中のlaravelがブラウザで動くための設定です。)(詳しいことは偉い人に聞いてください。)
$ cd // 自身のホームディレクトリへ移動
$ cd ../.. // ホームディレクトリの二つ上のディレクトリに移動
$ cd etc // etc ディレクトリに移動
$ sudo vi hosts // 強制的に(sudo)、hostsをviエディタで書き換える
sudo
で開こうとするとパスワードを聞かれるので、自分のパソコンのパスワードを入力してください。
#
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
ここのファイルは各自今までの設定で多少異なっている可能性があると思います。
キーボードの「i」を押して、 -- INSERT --モードにしたら、
とにかく最後の行に以下を追記(コピペ)してください。
192.168.10.10 homestead.app
劇的ビフォーアフターはこうなります。
Before
#
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
After
#
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
192.168.10.10 homestead.app
以上を書き換え終わったたら、また[control] + c
で INSERT モードを抜けて、
:wq
で上書き保存し、viエディタを終了します。
SSH Keyの作成
etc
で用事は済んだので、Homestead
ディレクトリへ帰ります。
$ cd // 自身のホームディレクトリへ移動
$ cd HS_Vagrant // HS_Vagrant ディレクトリに移動
$ cd Homestead // Homestead ディレクトリに移動
SSHキーを持っていないと思うので作ります。
(持っている方は、公開キーのパスを先ほどの.homestead/homestead.yaml
のauthorizeに記述してください)
$ ssh-keygen -t rsa
無心でコピペしてください。
パスフレーズを決めて、確認も込みで二回入力します。
SSHキーができました。
仮想サーバVagrantの起動と接続
いま、Homestead
ディレクトリにいると思います。
念のため確認しておいてください。
確認ができたら先ほどパスを設定しているので忘れずに、Code
ディレクトリを作りましょう。(最初、私は忘れた)
そして仮想サーバを立ち上げます。
$ mkdir Code // Homestead ディレクトリに、 Code ディレクトリを作成
$ vagrant up // Vagrant仮想サーバの起動
立ち上がったら、仮想サーバへSSH接続します。
$ vagrant ssh // Vagrant仮想サーバへ接続
以下のように表示されれば、接続が成功です!
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-25-generic x86_64)
* Documentation: https://help.ubuntu.com/
vagrant@homestead:~$
Good Job!!
とりあえず、ここでここまできた自分を褒めておきましょう。
Laravel5の導入
無事に仮想サーバのvagrant@homestead
に接続できたので、ls
コマンドで中身を確認してみましょう。
vagrant@homestead:~$ ls
Code
内部にCode
ディレクトリが表示されていればオッケーです。
このCode
ディレクトリに移動します。
vagrant@homestead:~$ cd Code // Code ディレクトリに移動
ここにComposerを用いて、Laravel5プロジェクトを導入します。
vagrant@homestead:~/Code$ composer create-project laravel/laravel --prefer-dist PROJECT_NAME
PROJECT_NAME
には、好きな名前を入れてください。その名前のディレクトリが生成されます。
通信環境にもよると思いますが、めちゃくちゃ重くなります。
時間も少しかかりますので、二杯目のコーヒーでもどうでしょうか。
なんだかんだとインストールされていき、最後に~~~~~~ set successfully.
が表示されれば成功です。
Code
ディレクトリの中に新しくPROJECT_NAME
ディレクトリが生成され、中にlaravel5が導入されているはずです。
ls
コマンドでチェックしてみましょう。
vagrant@homestead:~/Code$ ls
PROJECT_NAME
vagrant@homestead:~/Code$ cd PROJECT_NAME
vagrant@homestead:~/Code/PROJECT_NAME$ ls
app composer.json database phpunit.xml resources tests
artisan composer.lock gulpfile.js public server.php vendor
bootstrap config package.json readme.md storage
このようになっていればオッケーです。無事、PROJECT_NAME
ディレクトリにlaravel5が導入されました!
ブラウザでのレスポンス確認
さて、これで仮想環境はできたと言っても過言ではありませんが、最後にLaravel5がインストールされた仮想サーバ、vagrant@Homestead
が実際にちゃんとリクエストに対してレスポンスを返してくれるかどうかブラウザで確認しましょう。もう一息です。
そのためには.homestead
ディレクトリのHomestead.yaml
ファイルを再度開いて、
http://homestead.app/
にリクエストを送ると、PROJECT_NAME
ディレクトリをレスポンスしてくれるように設定、登録する必要があります。
まずはvagrantサーバから、一旦抜けましょう。
exit
コマンドで抜けることができます。
vagrant@homestead:~/Code$ exit
logout
Connection to 127.0.0.1 closed.
logoutされて、自分のPCのディレクトリに戻っていればオッケーです。
HomesteadのSites設定
.homestead
ディレクトリに移動します。先ほどと同じです。
$ cd // 自身のホームディレクトリへ移動
$ cd .homestead // .homestead という隠しディレクトリへ移動
vi
コマンドでHomestead.yaml
ファイルを再度編集します。
$ vi Homestead.yaml
viエディタが開くと思うので、キーボードの「i」を押して、 -- INSERT --モードにしてください。
今回編集するのは、先ほど編集したforder
の下にあるsites
の部分です。
to:
の部分を以下のように書き換えます。
Before
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
After
sites:
- map: homestead.app
to: /home/vagrant/Code/PROJECT_NAME/public
PROJECT_NAME
には先ほど作ったプロジェクトの名前を入れてください。
sites
のto:
以下の部分が、http://homestead.app/ にアクセスしたときに表示されるディレクトリの場所になるので、ここを先ほどのPROJECT_NAME
ディレクトリにとぶように編集しました。
Vagrantの再起動
設定を変更したので、Vagrantサーバを再起動する必要があります。
Vagrantを入れているHomestead
ディレクトリに戻ります。
$ cd // 自身のホームディレクトリへ移動
$ cd HS_Vagrant // HS_Vagrant ディレクトリに移動
$ cd Homestead // Homestead ディレクトリに移動
Vagrantを一旦落とします。vagrant halt
コマンドで終了させることができます。
$ vagrant halt // Vagrantの終了
もう一度vagrant up
コマンド起動しますが、ここで変更を適用するために少しオプションコマンドを加えます。
$ vagrant up --provision // Vagrantの起動(オプション:provision)
これでhomestead.yaml
の変更内容を適用して、Vagrantサーバを再起動できました。
ブラウザでの確認
さて、仮想環境の整備と設定が整ったので、最後に実際にブラウザからリクエストを送ってみます。
お好きなブラウザ(Google Chrome, Safari, Firefoxなど)を開いて、
http://homestead.app/
とURLを入力し、接続します。
「 Laravel 5 」 とやけにかっこよく画面中心に表示されていれば大成功です!!
お疲れ様でした。
最後にコーヒーでもいかがですか?
参考サイト
- https://laravel.com/docs/5.2/homestead
- http://readouble.com/laravel/5/1/ja/homestead.html
- http://qiita.com/you-me/items/3886f072cbcbead98733
※ 執筆者が初心者なもので、勘違いや説明に不備がある点が多々あるかもしれません。
見つけた際は、適宜、コメントで指摘していただけると助かります。