【Laravel】Homestead上でLaravelのプロジェクトを複数扱いたい

f:id:nekorokkekun:20190903221201p:plain:w1000
HomesteadでLaravelを扱い始めたのですが、複数のプロジェクトをどのように出し分ければいいのか分かりませんでしたので、ひとまず解決方法をまとめていきます。


デフォルトでは、indexの読み取りパスは以下のようになっています。

/Homestead/Homestead.yaml

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

まずはユーザー直下のディレクトリにcodeというディレクトリを作りましょう。

Morishimac:~ morishimahiraku$ mkdir code

その中に2つのlaravelパッケージをインストールします。

$ cd code
$ laravel new test1
$ laravel new test2

これでユーザー直下にcodeディレクトリ、そしてその下に2つのLaravelプロジェクトができました。

先ほどのHomestead.yamlに追記をします。

/Homestead/Homestead.yaml

sites:
    - map: homestead.test
      to: /home/vagrant/code/test1/public
    - map: homestead.test2
      to: /home/vagrant/code/test2/public
databases:
    - test1
    - test2

ここについては細かく解説をしましょう。

map: homestead.test

こちらは、後ほどローカルでアクセスするためのホスト名になります。
URLの代わりに入力する値です。

to: /home/vagrant/code/test1/public

こちらは、実際に「test1」(先ほどインストールしたLaravelパッケージの1つ)までのファイルパスに、index.phpなどの置かれているpublicディレクトリが付随したファイルパスとなります。

つまり、「homestead.test」というアドレスにアクセスしたら「 /home/vagrant/code/test1/public」を表示してね、という設定です。


しかし、実際に「homestead.test」というIPアドレスがあるわけではありません。
「homestead.test」というホスト名(言うなれば変数)に、IPアドレスを格納する必要があります。

そこで以下の作業を行います。

$ Morishimac:~ morishimahiraku$ sudo vi /etc/hosts

このコマンドを打つと、パスワードが求められ、macのパスワードを入力するとVIMモードに入ります。そこで以下のように追記しましょう。

192.168.30.10 homestead.test
192.168.30.10 homestead.test2

これはHomestead.yamlの2行目付近に書かれている

ip: "192.168.30.10"

から取得したipアドレスと、先ほどhomestead.yamlに追記したホスト名を対応させたものです。

ちなみにipアドレスは人によって異なりますので、対応するipアドレスに変えてください。

最後にHomesteadディレクトリ(厳密にはVagrantfileのあるディレクトリ)に移り、以下のターミナルコマンドを入力します。

$ vagrant provision
$ vagrant ssh

これで設定は終了です!

ブラウザで「http://homestead.test1」「http://homestead.test2」の両方ともにアクセスしてみると、表示するビューが切り替わっている(プロジェクトが切り替わっている)はずです。

ただしlaravel new後はビューに変更を加えていないため、何かしら印をつけておくと確認が確実になると思います。