2018.11.04

Laravel Homesteadに複数のプロジェクトを構築する方法


この記事では、Laravel Homestead に複数のプロジェクトを構築する際の設定箇所を紹介します。

新しく環境構築から始める場合はまずこちらの記事をご覧ください。

ドメイン

Homestead.yml

まずはドメインとディレクトリの紐づけを設定します。Homestead をインストールしたディレクトリにある Homestead.yml という設定ファイルを編集しましょう。

ハイフンから先を追加します。map がドメインで to がそのドメインでアクセスされたときの接続先です。各プロジェクトの public ディレクトリを指定してください。

Homestead.yml
sites:
    - map: first.local
      to: /home/vagrant/code/first/public
    - map: second.local
      to: /home/vagrant/code/second/public

この設定ファイルは YAML という書式で記述します。YAML の書き方については以下のサイトが参考になりそうです。

Ansibleのための YAML入門 | DevelopersIO
YAMLとは何か? - いつもRailsの設定ファイルで出てくるやつの正体 - Qiita

上記の記述は連想配列の配列です。参考までに JSON で書くとこんな感じでしょうか。

{
  "sites": [
    { "map": "...", "to": "..." }
    { "map": "...", "to": "..." }
  ]
}

hosts

次に hosts ファイルを編集します。IPアドレスに続けてドメイン名をスペース区切りで列挙します。

hosts
192.168.10.10 first.local second.local

このファイルを編集するには管理者権限が必要です。Windows では管理者権限でテキストエディタを開いてメニューから C:\Windows\System32\drivers\etc\hosts を開きましょう。Mac では以下のコマンドで開くことができます。

$ sudo vi /etc/hosts

共有フォルダ

共有フォルダの設定は変える必要がないと思います。例えば私はこのような設定にしています。

Homestead.yml
folders:
    - map: ~/Projects/homestead
      to: /home/vagrant/code

ホストとゲストではそれぞれ次のようにプロジェクトが構築されます。

# Host
~/Projects/homestead
├ first
└ second

# Guest
/home/vagrant/code
├ first
└ second

ただ好みによってこのように設定することもできるでしょう。

Homestead.yml
folders:
    - map: ~/Projects/first
      to: /home/vagrant/code/first
    - map: ~/Projects/second
      to: /home/vagrant/code/second

ホストとゲストではそれぞれ次のようにプロジェクトが構築されます。

# Host
~/Projects
├ first
└ second

# Guest
/home/vagrant/code
├ first
└ second

データベース

Homestead.yml

最後にデータベースの設定です。データベースはプロジェクトごとに用意したいですよね。

Homestead.ymldatabases を編集します。ハイフンに続けてデータベース名を列挙します。インデントが意味を持つのできちんと合わせるようにしましょう。

Homestead.yml
databases:
    - homestead
    - first
    - second

vagrant reload --provision を実行すると自動的にデータベースが作成されます。

.env

.env の設定は以下のようになります。

.env
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=second
DB_USERNAME=homestead
DB_PASSWORD=secret

ユーザー名 homestead・パスワード secret でデータベースが作成されるので、デフォルトの .env から DB_DATABASE の値のみ書き換えるとよいです。

PostgreSQL を使用する場合は DB_CONNECTIONDB_PORT を変更しましょう。

.env
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=second
DB_USERNAME=homestead
DB_PASSWORD=secret

設定ファイルにデータベース名を書くだけで MySQL にも PostgreSQL にも自動でデータベースが作られるのはかなり便利ですね。

🌎 🌍 🌏

以上、Laravel Homestead に複数のプロジェクトを構築する際の設定箇所を紹介しました。