これまでの記事で、VagrantでLAMP環境を構築する方法などを紹介してきたが、ブラウザでWebサーバーにアクセスする際は「http://192.168.33.10」といったIPアドレスを入力しアクセスしていた。

これを「http://example.com」などのホスト名でアクセスできるようにする方法を紹介する。

Vagrantプラグイン「vagrant-hostsupdater」をインストール

まず、ローカルでVagrantのプラグインをインストールする。

vagrant plugin install vagrant-hostsupdater

インストールが完了したら下記コマンドで確認しよう。

vagrant plugin list

インストールしたプラグイン名が返れば無事成功している。

Vagrantfileの設定

では早速次の設定を行っていく。

Vagrantfileを開いて下記のとおり編集しよう。

# 下記コードを追記
config.vm.hostname = "example.com"

# 下記のコードはVagrantにデフォルトで記述があるのでこのままでOK
# コメントアウトされていれば解除しておこう
config.vm.network "private_network", ip: "192.168.33.10"

Vagrantを起動して確認

vagrant up

途中でパスワードの入力を求められるので、ホストマシン(Mac)のパスワードを入力する。

サーバーの起動が終わったら、ブラウザのURL欄へ設定したホスト名(今回の場合はexample.com)を入力してアクセスしてみよう。

これまでIPアドレスでアクセスした時と全く同じ内容が表示されるはずだ。

プラグイン「vagrant-hostsupdater」は何をやっているのか?

Vagrantfileに設定したホスト名・IPアドレスの情報を元に、ホストマシンのhostsファイルにプラグイン側で書き込みを行っているのである。

Vagrantを起動した状態で、ホストマシンの「/etc/hosts」ファイルをvimで確認してみよう。

ファイルの末尾に以下の内容が追記されているはずだ。

192.168.33.10  example.com

hostsファイルはシステム管理者しかアクセスできない。

そのためVagrant起動時にパスワードの入力を求められたのだ。

なお、追記された内容はVagrantを停止すると自動的に削除される。

vagrant halt

この時もhostsファイルに追記した設定情報を消すために、パスワードの入力を求められる。

ホスト名でのアクセスが不要になれば、Vagrantfileからホスト名を指定したコードをコメントアウトすることで元に戻すことができる。
※コメントアウトしておけば、Vagrant起動・停止時パスワードの入力は求められない。