sk51.log

The Averageman's web log.

Vagrantを利用したVirtualHostの設定


2015年11月21日 Web制作

開発環境(Vagrant + VirtualBox)で開発する際、本番環境とフォルダ構成を統一するのが望ましく、そうしないと本番環境への反映が繁雑になってしまいます。
開発環境では、http://localhost/test/、本番環境ではhttp://www.example.com/となってしまうとパスを変更しなくてはなりません。
そうなる前に、VirtualHostを設定し、開発環境からの本番環境へのデプロイをなるべく円滑になるよう環境を整えます。

VirtualHostを設定する際、hostsファイルを設定することになりますが、仮想マシンが何台もあると設定が面倒です。
そこで、vagrantのプラグインを導入して、バーチャルホストの設定を簡素化してしまいます。
今回は、Webサーバーにhttpdを前提に設定します。

1. プラグインのインストール

「vagrant-hostsupdater」というプラグインをインストールします。
cogitatio/vagrant-hostsupdater · GitHub

このプラグインは、up時にhostsファイルを設定し、haltしたら設定を破棄する優れものです。
インストールはいたって簡単です。
インストールされたかは、vagrant plugin listで確認できます。

$ vagrant plugin install vagrant-hostsupdater
$ vagrant plugin list
vagrant-hostsupdater (1.0.1)
vagrant-share (1.1.4, system)

アップデート、アンインストールも簡単です。

$ vagrant plugin update vagrant-hostsupdater
$ vagrant plugin uninstall vagrant-hostsupdater

2. vagrantfileの設定

次にvagrantfileを設定します。

config.vm.network :private_network, ip: "192.168.3.10"
# 好きなホスト名を入れます。
config.vm.hostname = "localhost"
# 好きなバーチャルホスト名を入れます。
config.hostsupdater.aliases = ["vagrant.test", "vagrant.test2"]

3. 起動

起動すると、ホスト側のhostsファイルが自動的に設定されます。
この時、システムファイルを設定することになるので、ホスト側にパスワードを聞かれる場合があります。
Macの場合、/etc/hostsが自動的に書き換わります。
(シンボリックリンクが貼られているため、/private/etc/hostsと同じものになります)

$ vagrant up
$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost 

192.168.33.11  localhost
192.168.33.11  vagrant.test
192.168.33.11  vagrant.test2

4. httpd.confの設定

最後にゲストマシンのhttpd.confを設定します。

$ vagrant ssh
$ sudo vim /etc/httpd/conf/httpd.conf
# NameVirtualHost *:80
# Apache2.4からはこの設定は不要になりました。次のリリースで削除されるようです。
# AH00548: NameVirtualHost has no effect and will be removed in the next release

# 好きなサーバーネームを入れます。
ServerName vagrant

# 以下のServerNameは、vagrantfileで記述したバーチャルホスト名に合わせます。
<VirtualHost *:80>
DocumentRoot "/var/www/html/test"
ServerName vagrant.test
ErrorLog /var/www/html/test/log/error_log
TransferLog /var/www/html/test/log/access_log
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/var/www/html/test2"
ServerName vagrant.test2
ErrorLog /var/www/html/test2/log/error_log
TransferLog /var/www/html/test2/log/access_log
</VirtualHost>

エラーログ、アクセスログを省くとデフォルトの場所になりますが、設定をする場合は、先にフォルダを作成しないと、httpdが起動しませんので注意してください。
あとは、httpdに反映させて、VirtualHostの設定は終了です。
ブラウザから、http://vagrant.test/やhttp://vagrant.test2/にアクセスするとDocumentRootのファイルが表示されるはずです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

*

CAPTCHA