1. TOP
  2. web
  3. php
  4. laravel
  5. グローバルなHomesteadでLaravel環境構築

グローバルなHomesteadでLaravel環境構築

2日前に、 LaravelのプロジェクトごとにHomesteadで環境構築する備忘録を書いた。

グローバルで構築した場合、Homestead.yaml に各プロジェクト(アプリ、あるいはサイト)の設定情報をまとめねばならず、見通しが悪くなりそうなのと、各プロジェクトごとに独立させた方が、どこかで失敗した時のダメージが小さくて済む。なので、プロジェクトごとに環境構築する。

Laravelプロジェクトごとに環境構築

しかし、各LaravelプロジェクトごとにHomesteadで環境構築すると、ディスク容量を激しく消費するという単純な事実に気づいたので、やはりグローバルに構築することにする。つまり、Homesteadをグローバルにインストールし、全Laravelプロジェクトで同じHomestead Boxを共有する方法をとる。

Homestead Vagrant Boxのインストール

使用する実機はMacBook Pro(macOS Catalina ver 10.15.3)。
前提として、Vagrant と VirtualBox はインストール済み。VirtualBoxはバージョン 6.1.4 r136177 (Qt5.6.3)、Vagrant は version 2.2.7。

Homesteadを実行するために必要なOSやソフトウェアがあらかじめ設定された仮想環境のセット、Homestead vagrant box をダウンロードする。

途中で使用する仮想環境ソフトウェア(プロバイダ)の種類を聞かれるので、Virturlboxを選択。

$ vagrant box add laravel/homestead
==> box: Successfully added box 'laravel/homestead' (v9.2.0) for 'virtualbox'!
$ ls -la ~/.vagrant.d/boxes/
....
drwxr-xr-x 4 hideyo_pr staff 128 3 1 10:37 laravel-VAGRANTSLASH-homestead

$ du -sh ~/.vagrant.d/boxes/laravel-VAGRANTSLASH-homestead/
1.3G /Users/hideyo_pr/.vagrant.d/boxes/laravel-VAGRANTSLASH-homestead/

ホームディレクトリの .vagrant.d/boxes にboxイメージが保存されているのを確認。容量は1.3GB

Homesteadのインストール

Homesteadのboxを使用する際の設定がまとめられたファイルを取得。GitHubのWebサイトからgit clone する。

ホストマシンへリポジトリをクローンし、Homesteadをインストールできます。自分の「ホーム」ディレクトリの中のHomesteadフォルダへリポジトリをクローンするのことは、自分のLaravel(とPHP)の全プロジェクトをホストしておくHomestead Boxを用意するのだと考えてください。

Laravel 5.8 Laravel Homestead

$ git clone https://github.com/laravel/homestead.git Homestead

ホームディレクトリ直下の Homestead ディレクトリにファイル一式がダウンロードされる。

ここで、「masterブランチは常に安定しているわけではないため」、常に最新の安定バージョンを用意しているreleaseブランチをチェックアウト。

masterブランチは常に安定しているわけではないため、バージョンタグがついたHomesteadをチェックアウトすべきでしょう。最新の安定バージョンは、GitHubのリリースページで見つかります。
もしくは、常に最新の安定バージョンを用意しているreleaseブランチをチェックアウトしてください。

Laravel 5.8 Laravel Homestead

$ git checkout release
Branch 'release' set up to track remote branch 'release' from 'origin'.
>>> Switched to a new branch 'release'

master から releaseブランチに切り替わったことを確認。

$ git branch -a
master
* release

この時点でHomesteadディレクトリを見ると

$ ls -la
total 240
drwxr-xr-x 23 hideyo_pr staff 736 3 1 10:51 .
drwxr-xr-x+ 73 hideyo_pr staff 2336 3 1 10:51 ..
-rw-r--r-- 1 hideyo_pr staff 213 3 1 10:44 .editorconfig
drwxr-xr-x 12 hideyo_pr staff 384 3 1 10:48 .git
-rw-r--r-- 1 hideyo_pr staff 14 3 1 10:44 .gitattributes
drwxr-xr-x 3 hideyo_pr staff 96 3 1 10:44 .github
-rw-r--r-- 1 hideyo_pr staff 154 3 1 10:44 .gitignore
-rw-r--r-- 1 hideyo_pr staff 327 3 1 10:44 .travis.yml
-rw-r--r-- 1 hideyo_pr staff 187 3 1 10:44 CHANGELOG.md
-rw-r--r-- 1 hideyo_pr staff 458 3 1 10:44 Homestead.yaml.example
-rw-r--r-- 1 hideyo_pr staff 1077 3 1 10:44 LICENSE.txt
-rw-r--r-- 1 hideyo_pr staff 2095 3 1 10:44 Vagrantfile
drwxr-xr-x 3 hideyo_pr staff 96 3 1 10:44 bin
-rw-r--r-- 1 hideyo_pr staff 716 3 1 10:44 composer.json
-rw-r--r-- 1 hideyo_pr staff 68277 3 1 10:44 composer.lock
-rw-r--r-- 1 hideyo_pr staff 265 3 1 10:44 init.bat
-rw-r--r-- 1 hideyo_pr staff 250 3 1 10:44 init.sh
-rw-r--r-- 1 hideyo_pr staff 383 3 1 10:44 phpunit.xml.dist
-rw-r--r-- 1 hideyo_pr staff 1820 3 1 10:44 readme.md
drwxr-xr-x 7 hideyo_pr staff 224 3 1 10:44 resources
drwxr-xr-x 23 hideyo_pr staff 736 3 1 10:44 scripts
drwxr-xr-x 5 hideyo_pr staff 160 3 1 10:44 src
drwxr-xr-x 6 hideyo_pr staff 192 3 1 10:44 tests