この記事では、Laravel Homestead に複数のプロジェクトを構築する際の設定箇所を紹介します。
新しく環境構築から始める場合はまずこちらの記事をご覧ください。
ドメイン
Homestead.yml
まずはドメインとディレクトリの紐づけを設定します。Homestead をインストールしたディレクトリにある Homestead.yml
という設定ファイルを編集しましょう。
ハイフンから先を追加します。map
がドメインで to
がそのドメインでアクセスされたときの接続先です。各プロジェクトの public
ディレクトリを指定してください。
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アドレスに続けてドメイン名をスペース区切りで列挙します。
192.168.10.10 first.local second.local
このファイルを編集するには管理者権限が必要です。Windows では管理者権限でテキストエディタを開いてメニューから C:\Windows\System32\drivers\etc\hosts
を開きましょう。Mac では以下のコマンドで開くことができます。
$ sudo vi /etc/hosts
共有フォルダ
共有フォルダの設定は変える必要がないと思います。例えば私はこのような設定にしています。
folders:
- map: ~/Projects/homestead
to: /home/vagrant/code
ホストとゲストではそれぞれ次のようにプロジェクトが構築されます。
# Host
~/Projects/homestead
├ first
└ second
# Guest
/home/vagrant/code
├ first
└ second
ただ好みによってこのように設定することもできるでしょう。
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.yml
の databases
を編集します。ハイフンに続けてデータベース名を列挙します。インデントが意味を持つのできちんと合わせるようにしましょう。
databases:
- homestead
- first
- second
vagrant reload --provision
を実行すると自動的にデータベースが作成されます。
.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_CONNECTION
と DB_PORT
を変更しましょう。
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=second
DB_USERNAME=homestead
DB_PASSWORD=secret
設定ファイルにデータベース名を書くだけで MySQL にも PostgreSQL にも自動でデータベースが作られるのはかなり便利ですね。
以上、Laravel Homestead に複数のプロジェクトを構築する際の設定箇所を紹介しました。