これまでの記事で、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起動・停止時パスワードの入力は求められない。