Vagrant Shareを使ってVagrant上で構築中のWordPressを一時的にネットに公開!

ほんとに鼻血が出るぐらい便利だった。この何年間かでこんなにびっくりしたツールは他にないかも。

Vagrant_Cloud

Vagrant Cloudとは?

先日リリースされたばかりのVagrant 1.5と連動して動作する新サービスで、これを利用すると自動的に仮のドメイン名が割り当てられて、Vagrant上の仮想マシンにインターネット経由でアクセスできるようになります。

https://vagrantcloud.com/

これがおどろくほど簡単で、インターネット経由で見れるようにするには、vagrant shareとコマンドを入力するだけです。

$ vagrant share
==> default: Detecting network information for machine...
    default: Local machine address: 192.168.33.10
    default: Local HTTP port: 80
    default: Local HTTPS port: disabled
==> default: Checking authentication and authorization...
==> default: Creating Vagrant Share session...
    default: Share will be at: xxxxx
==> default: Your Vagrant Share is running! Name: xxxxx
==> default: URL: http://xxxxx.vagrantshare.com

上のようにコマンドを実行すると、URLが最後に出力されます。

あとはブラウザでそのURLにアクセスするだけ。

もちろんiPhoneなどの他の端末や、お客さんに見てもらうことだってできます。

僕が作ったVagrant+WordPressと組み合わせて超便利なWordPress開発環境が手にはいります!

設定方法

基本的には以下のサイトに書いてあることそのまんまでオッケーです。

Vagrant CloudのVagrant Shareを試してみたら凄すぎて鼻血出た – 憂鬱な世界にネコパンチ!

ただし、いくつか補足があります。

まずMacの場合(Windowsはわかんないw)、以下のようにファイヤーウォールでvagrantへのアクセスを許可してあげてください。

Advanced

(ファイヤーウォールの設定はあくまでもオウンリスクよ!)

次にWordPress側で解決しないといけない問題があります。

実際にVagrant上のWordPressにアクセスすると分かるんですが、CSSや画像などに対してリンク切れを起こしてしまいます。

で、これはプラグインを作りました。

まず、以下のページに従ってVagrant+WordPressな環境を構築してください。

https://firegoby.jp/archives/5141

あとは、こちらからプラグインを入手してそれをVagrant上のWordPressにインストールしましょう!

https://github.com/miya0001/dynamic-hostname

あとは、vagrant share !

このプラグインをインストールするとWordPress内で使用されているホスト名をvagrant shareによって割り当てられたホスト名に自動的に置換します。

この置換はあくまでも仮のものなので、実際にデータベースの中身等は書き換えたりしません。

さらに、仮のホストから投稿された記事内の画像や内部リンクのURLは、本来のURL(WP_HOMEの値)に置換されて保存されますので、WP_HOMEのホスト名を本番環境と同じドメイン名にしておけば、本番環境に移行する際にデータベースのデータの置換作業等が必要ありません。

vagrant connectも超便利

vagrant shareだけだと、httpでの接続しかできませんが、vagrant connectを使用するとSSHなどでの接続も可能になります。

もちろんこれ、セキュリティ的にリスクも当然ありますので、これを立ち上げっぱなしにすることはおすすめしませんが、チームでVangarnt環境を共有して開発してる時に「ちょっとあたしのVagrantうごかなーい」みたいなことになった時にはかなり心強い味方になるはずです。

$ vagrant connect xxxxx
(略)
==> connect: Connect is running!
==> connect: SOCKS address: 127.0.0.1:59563
==> connect: Machine IP: xxx.xxx.xxx.xxx
==> connect:  
==> connect: Vagrant has successfully connected to the remote shared machine!
==> connect: You can either use the machine IP above to talk to it like any other
==> connect: computer, or you can configure your software to use a standard
==> connect: SOCKS5 proxy at the address above. With either method, you'll be able
==> connect: to communicate with the shared machine.
==> connect: 
==> connect: If you're having trouble communicating, verify that the shared machine
==> connect: has given you access to the specified ports.
==> connect: 
==> connect: Press Ctrl-C to stop connection.

というわけでVagrant Cloud、あまりにも素晴らしすぎて、無料で使わせていただくのは申し訳ないほどすごいです。