【Laravel】Homestead上でLaravelのプロジェクトを複数扱いたい
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後はビューに変更を加えていないため、何かしら印をつけておくと確認が確実になると思います。