WindowsでVagrantを使って開発をする際、ローカルとサーバーのソースを同期させる手段は色々ありますが、どうせVagrantを使っているなら一元管理したらええやん。ってことでvagrant-winnfsdの導入をおさらい。
必要なもの
- windows
- Vagrant
- VitrualBox(他の仮想環境試したことないだけなので、VMwarePlayerとかでもいけると思います)
- 愛情
やること
- コマンドプロンプトを開いてプラグインを入れる
おもむろに以下のコマンドを打つvagrant plugin install vagrant-winnfsd
- Vagrantfileに同期の設定を追加する
書き方config.vm.synced_folder "ローカルのフォルダー", "サーバーのディレクトリ", type: "nfs"
記述例
config.vm.synced_folder "C:/path/to/source/web", "/var/www/html", type: "nfs"
※type: “nfs”がポイント!
公式ドキュメントにはWindowsでは出来ない(推奨しない?)と書かれているがvagrant-winnfsdがあれば大丈夫。 - お好みでデフォルトのフォルダー同期を切る
以下のおまじないを書いてね。config.vm.synced_folder ".", "/vagrant", disabled: true
- vagrant upコマンド実行
vagrant up
- 終わり。
Vagrantfileの書き方がわからない?
それならVagrantfileテンプレートへGo。
結局?
何が便利になったかというと…。
- WinSCP等のFTPクライアントでも同期はできるが、それを起動するまでもなく同期ができて開発までの手順が一つ減る
- nfsをマウントしているだけなので、サーバー側でソースをいじるとローカルにも反映される。Vimmer大歓喜…?
- 他のフォルダー同期方法と違って待たされる感じが無い。速度UP
ハマりどころ
- Apacheが古いファイルを返すことがある
Apacheの設定ファイルに↓を追記することで解消します。EnableMMAP Off EnableSendfile Off
ただし、本番環境と設定が変わることになるので動作確認はしっかりすること。
情報源: Virtualbox上のApacheでホストマシンと共有している静的ファイル(CSSなど)の更新が検知されない問題を解決する方法 | tipshare.info