【検証】複数のLaravel環境作ってみた(Homesteadで)

「Homestead 使ってるから、composer が必要」

という、私にとっては謎理論が本当なのかどうか検証してみる。確かにLaravel Homestead の公式らしきサイトには、【複数プロジェクトならcomposer使ってね」という説明があるが、やっぱり腑に落ちない。

「Homestead Vagrant Box」も所詮は、ひな形ファイル一式でしか無いし、Homestead自体のただのファイルの集合体をgitから落としてきただけ。

論より証拠。とりあえず試してみる。

1.Homestead の vagrant box をダウンロード

$ vagrant box add laravel/homestead --box-version 6.0.0
==> 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) hyperv
2) virtualbox
3) vmware_desktop

Enter your choice: 2
==> box: Adding box 'laravel/homestead' (v6.0.0) for provider: virtualbox box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/6.0.0/providers/virtualbox.box box: 
Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
 ==> box: Successfully added box 'laravel/homestead' (v6.0.0) for 'virtualbox'! 
$ vagrant box list 
laravel/homestead (virtualbox, 6.0.0) # 今回入れたほう 
laravel/homestead (virtualbox, 7.1.0) # 前回、バージョン指定は特にせずに落としてきたBox

うん、とりあえずちゃんとバージョン違いのboxをダウンロードできた。

2.Homestead のダウンロード

$ git clone https://github.com/laravel/homestead.git Homested_v6
$ cd Homested_v6
$ git checkout -b v3.0.0
$ bash init.sh  # Homestead を初期化。Homestead.yaml が作成される。

3.SSH鍵の作成と設定

(割愛)

4.設定ファイルの編集

(割愛。先に作ったLaravel環境とかぶらないように設定)

・・・で、vagrant up したら・・・

「Bringing machine ‘homestead-7‘ up with ‘virtualbox’ provider…」

仮想マシン名、被ってますやん。

https://qiita.com/ymk1102_1t/items/e8f61fd38d08b87ebef2

こちらで、同じ現象に遭遇した事例を発見。

# Configure The Box
config.vm.define settings['name'] ||= 'homestead-7'  # 犯人はこいつ
config.vm.box = settings['box'] ||= 'laravel/homestead'
config.vm.box_version = settings['version'] ||= '>= 7.0.0'
config.vm.hostname = settings['hostname'] ||= 'homestead'

こんなの、ハードコーディングせんといてくれ・・・と思いつつ、よくよく構文を見ると、

「config.vm.define settings[‘name’] ||= ‘homestead-7’」とある。

Rubyはやったこと無いので、ピンとこなかったんだが、調べてみると、未定義なら’homestead-7’にしますよ、ということらしい。

ということは、Homestead.yamlに「name」を指定してやればいいんじゃね?ということで試してみる。

今度はvagrant upは成功した。

が、「laravel new」してからブラウザでアクセスすると、502 Bad Gatewayとなる。

nginxのログを見ると、

2019/04/04 15:29:03 [crit] 2749#2749: *9 connect() to unix:/var/run/php/php7.3-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.10.1, server: homesteadv6.test, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "192.168.10.11"

と出る。PHP7.3?

php -v でみると、PHPのバージョンは7.2。横着して、laravel new でインストールしたのがマズかったか。

$ php artisan -V
Laravel Framework 5.8.10

よくよく調べると、Homestead.yamlでPHPのバージョンも記述できるらしい。変えて試してみると、上手くいった。

結局は、Homestead.yamlを結構いじくらないとダメだったらしい。

name: "homestead-6"  # 以前作ったLaravelと変える
ip: "192.168.10.11"  # 以前作ったLaravelと変える
memory: 2048
cpus: 1
provider: virtualbox
version: "6.0.0"  # 以前作ったLaravelと変える。ここは、別に立てたいLaravel環境次第。

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: /Volumes/forDocker/laravel_testv6  # 以前作ったLaravelと変える
      to: /home/vagrant/code

sites:
    - map: homesteadv6.test  # 以前作ったLaravelと変える
      to: /home/vagrant/code/public
      php: "7.2"  # 以前作ったLaravelと変える。ここも、別に立てたいLaravel環境次第。
databases:
    - homestead

あえてひねくれて、違うバージョンのHomesteadを使ってみたから遠回りしたが、別にローカルにcomposer入れてなくても、複数のLaravel 仮想環境を立てることが出来た。

同時に起動してても、ちゃんとそれぞれにアクセスできた。

ってことで、「Homestead 使ってるから、ホスト側にcomposer が必要」っていう謎理論は崩壊しました。

まあ、公式らしきサイトにそう書いてあるから、それなりに理由とかメリットもあるんだろうけど。

 

 

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA