Motomichi Works Blog

その日学習したことについて書いている日記です。誰かの役に立ったらそれはそれで嬉しいです。

vagrantその0024 名前ベースの仮想ホスト(ひとつのIPに複数のURLとDocumentRootをそれぞれ設定できるようにする)

参考にさせて頂いたページ

バーチャルホストの例 - Apache HTTP サーバ バージョン 2.2

名前ベースの仮想ホスト - 仮想ホストの設定 - Apache入門

もっとhttpd.confの設定

ホストマシン環境

ゲストマシン環境

httpd.confを確認と編集する

基本的にバーチャルホストの例 - Apache HTTP サーバ バージョン 2.2を参考にさせて頂いて進める。

suでログイン

ファイルの編集とか、apacheの再起動とかで権限が必要なのでsuで。

vagrant ssh
su
vagrant(パスワード)

ServerRootを確認する

/etc/httpd/conf/httpd.confを開くと、以下のようになっていると思う。

ServerRoot "/etc/httpd"

Listen 80

以下のようなところがあると思うので確認しておく。
たぶんそのままで大丈夫だけどListen 80がもしコメントアウトされていたらコメント解除する。

#Listen 12.34.56.78:80
Listen 80

Include

以下のような箇所を確認する。
ここも最初からこういう風になっていると思うけど、一応確認しておく。

#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf

ServerNameを一応つけておく

たぶん#ServerName www.example.com:80コメントアウトされている。
何かしら設定する必要があると思うので、一行追加して以下のようにしておいた。

#ServerName www.example.com:80
ServerName localhost:80

vagrantではとりあえず、以下のような適当な感じでも大丈夫だった。

hoge.foo.com:80

/etc/httpd/conf.d/httpd-vhosts.confを作成する

最初はconf.dディレクトリに、httpd-vhosts.confが無かったので、以下のような内容で作成した。

NameVirtualHost *:80

<VirtualHost *:80>
  DocumentRoot /var/www/html/hoge
  ServerName   hoge.localhost.example
  <Directory /var/www/html/hoge >
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

例えば、ブラウザでアクセスするときにhttp://hoge.localhost.example/hoge.htmlなどを公開するような設定。

vagrant内の/etc/hostsの編集

vagrantの仮想環境内に、/etc/hostsがあるので、元々の記述内容に一行追記して以下のようにした。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   hoge.localhost.example

httpd-vhosts.confの記述内容と合わせるので、127.0.0.1 hoge.localhost.exampleとした。

Apacheを再起動する

以下のコマンドで再起動した。

service httpd restart

作業しているホストマシンのhostsを編集する

macなら/etc/hostsを編集するので、

cd /etc/
sudo vim hosts

みたいな感じで開いて、

192.168.33.10  hoge.localhost.example

と一行追記した。

192.168.33.10の部分はVagrantfile内で設定してあるIPと合わせる。

Windows7だと、c:¥windows¥system32¥drivers¥etc¥hostsにあると思う。

hoge.htmlの作成とアップロード

hoge.htmlを適当に作成して、DocumentRootに設定したディレクトリにアップロードする。
ここまで、サンプルコードの通りにやってきていたら、

/var/www/html/hoge/hoge.html

となるような感じだと思う。

ブラウザで確認してみる

この段階で、以下のURLにアクセスすると、ようやくページが確認できると思う。

http://hoge.localhost.example/hoge.html

URLとDocumentRootを増やす

httpd-vhosts.confのNameVirtualHost *:80の部分は何回も書かなくて良いけど、

<VirtualHost *:80>
  DocumentRoot /var/www/html/hoge
  ServerName   hoge.localhost.example
  <Directory /var/www/html/hoge >
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

の部分を丸ごと複製して、DocumentRootとかServerNameとか必要箇所を色々変更する。

あとは、vagrant内のhostsとホストマシンのhostsにURLを追記する。

そんな感じで、一つの仮想マシン複数の開発環境が作れる。

logファイル

httpd-vhosts.conf内に、ErrorlogとかCustomLogの出力先も設定すると良さそう。

httpd-vhosts.confの設定内容

もっとhttpd.confの設定を見たりした。