Vagrantで動かしているサイトを一時的に公開する


Vagrant で普段作業しているのですが、他の人に一時的に見せたいとか、スマホなどの実機で見たい時に `ngrok` を使う方法。

Vagrant はこんな感じで、`127.0.0.1:8000` とかではアクセス出来ない状態になっています。

```Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos64_ja"
  config.vm.box_url = "https://dl.dropboxusercontent.com/u/3657281/centos64_ja.box"

    config.vm.provider :virtualbox do |vb|
    vb.name = "MyOriginalProject-version31415"
    # vb.customize ["modifyvm", :id, "--memory", 1024]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end

  config.vm.network :private_network, ip: "192.168.254.50"
  config.vm.network :forwarded_port, guest: 22, host: 2230, id: "ssh"

  config.vm.synced_folder ".", "/shared", type:'nfs'

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "cookbooks"
    chef.add_recipe "yum"
    chef.add_recipe "base"
    chef.add_recipe "mysql"
    chef.add_recipe "mailcatcher"
    chef.add_recipe "phpenv_phpbuild"
    chef.json = {
      :php_global_version => "5.6.13",
      :php_configure_options => "--enable-intl --with-mcrypt",
      :php => [
        {
          :version => "5.6.13",
          :ini_file => "56",
          :fpm_port => "9056",
          :http_port => "8056"
        },
         {
           :version => "7.0.2",
           :ini_file => "70",
           :fpm_port => "9070",
           :http_port => "8070"
         }
      ]
    }
   end
end
```


## Ngrok のインストール

`HomeBrew` だと古い `Version1` がインストールされます。`Version1`は [Ngrokのサーバ側がもう非対応](https://ngrok.com/sunset/1) なので [Version2をダウンロード](https://ngrok.com/download)して使う必要があります。

ダウンロードしてきたファイルはコマンドで使うバイナリファイルなので、よしなにしてください。

## 実行

こんな感じで動かしますよっと。

```shell
> ~/Downloads/ngrok http 192.168.254.50:8070

ngrok by @inconshreveable                                                                                                                                                        (Ctrl+C to quit)
                                                                                                                                                                                                 
Tunnel Status                 online                                                                                                                                                             
Version                       2.0.25/2.0.25                                                                                                                                                      
Region                        United States (us)                                                                                                                                                 
Web Interface                 http://127.0.0.1:4040                                                                                                                                              
Forwarding                    http://*****.ngrok.io -> 192.168.254.50:8070                                                                                                         
Forwarding                    https://*****.ngrok.io -> 192.168.254.50:8070                                                                                                        
                                                                                                                                                                                                 
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                        
                              0       0       0.00    0.00    0.00    0.00                                                                                                                       
```

終了するには `Ctrl-C` を押します。

Version2 から https が標準でついたので、それを教えたら良いかと思います。

## 参考

- [Vagrantな開発環境でちょっとした確認環境を提供するときに今更ながらngrokが便利](http://k1low.hatenablog.com/entry/2015/02/03/190923)
- [ngrok docs](https://ngrok.com/docs)