Vagrant/VirtualBox上にたてたWebサイトの実機確認をiPhone/iPadからおこなう

More than 1 year has passed since last update.

Goal

  • MacOSXをHostとして、CentOSをGuestとしたVMをVagrant/VirtualBoxで起動し、HTTPサーバをたててWebアプリを開発する
  • Guest(CentOS/Vagrant)をpublic_networkの固定ipつきで起動し、同ネットワークからのアクセスを可能にする
  • iPhone, iPadを同じWifiネットワークに接続し、固定ip直うちでWeb画面にアクセスする
  • ホスト名でのVirtualHostを有効にできるように、WebサーバがのっているGuest(CentOS/Vagrant)に自前のDNSもたてて名前解決ができるようにする(iPhoneはjail breakしないとhostsをいじれないらしいので、その代替案...)

スクリーンショット 2015-01-25 19.55.56.png

この例では、Wifiネットワークアドレスを192.168.2としている.
192.168.2.XXXはMac OSXが外と通信するためのネットワークインタフェース.
192.168.2.YYYはiPhone/iPadが外と通信するためのネットワークインタフェース(MacOSXと同じWifiを選択する).
192.168.2.ZZZはvagrantのホストが外部と直接通信するためのネットワークインタフェース.

vagrantに固定ipを割り当てて起動

固定ip=192.168.2.ZZZとしてWifiにブリッジして起動する.
bridgeは指定しなければvagrant起動時に選べるようになるので、その他のネットワークを選択したい場合は都度接続先を決めれば良い.

public_networkのIPはprivate_networkとは別のアドレスを指定する.
Mac OSXのIPを調べて、同じネットワーク以下のアドレスをもつようにする(今回は192.168.2をprefixにする).

config.vm.network :public_network, ip: '192.168.2.ZZZ', bridge: 'en0: Wi-Fi (AirPort)'

確認

Guestマシンのネットワークインタフェースが増えていることを確認する.

ifconfig | grep '192.168.2.ZZZ'

Hostマシン(Mac OSX)からpingコマンドで疎通できることを確認する.

ping 192.168.2.ZZZ

Guestマシン(CentOS,Vagrant)でapacheなどを起動して、port80をlistenしておく.

netstat -an | grep :80
  # 192.168.2.ZZZ:80でLISTEN状態になっていること

iPhone/iPadからブラウザのアドレスバーにIP(192.168.2.ZZZ)直うちして、vagrantのapacheへリクエストがくることを確認する.

自前のDNSをたてて、ローカルドメインでアクセス可能にし、ホスト名でのVirtualHostを使えるようにする

IP直うちでアクセス可能にするところまでは簡単だけど、DNSサーバをたてるのはいろんな作業がいるので注意.

DNS設定

以下を参考にして、Guestマシン(CentOS,Vagrant)にDNSサーバをたてる.
djbdnsでローカルドメインの名前解決をおこなう

↑の例では、
192.168.2.ZZZ => 192.168.2.12
192.168.2.XXX => 192.168.2.100
として設定しています.

iPhone/iPadのDNSサーバを指定する

ネットワーク設定で、192.168.2.ZZZのアドレスを指定する.

設定 > Wi-Fi > 接続されているネットワークの(i)ボタン > DHCP > DNS

iPhone/iPadブラウザのアドレスバーにローカルドメインを入力してvagrantのapacheなどにアクセスできるようになればOK.

Environment

CentOS, Vagrant

uname -a
  # Linux *** 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/issue
  # CentOS release 6.5 (Final)
  # Kernel \r on an \m

Mac OSX

OSX Yosemite version 10.10.1

iPhone

iOS 8.1.2
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.