チラシの裏の書き置き

技術的な話をするブログのタイトルじゃない気がする

Vagrantのsynced_folderが超絶便利なんだけど、落とし穴があった件

最近、社内ではVagrantを使っています。最近のIT企業っぽくてかっこいい。

こんな環境です。

今まではSublimeTextからSFTPプラグインを使ってVagrantの仮想環境に転送していたけど、ある日VagrantFileを見てみると「config.vm.synced_folder」なる項目を発見。
どうやら、ローカルのフォルダと仮想環境のフォルダを同期してくれるらしいので使ってみるとこれまた便利。
わざわざSFTPで転送せずとも、そのままの状態で表示されるじゃん・・・!

ApacheのWebroot下のいくつかのフォルダを、/vagrant/source以下にマウントしたフォルダにシンボリックリンクさせるという手法を取って運用していました。
こんな感じで。

C:\~\project <--synced_folder--> /vagrant/source/~ <-- ln="" -s="" --=""> /var/www/~

ただし、この運用にはいくつかの落とし穴がありました。

静的ファイルが更新されない

CSSとかJavascriptとか、一部に編集を加えてもApacheから読み出した時に変っていなく、マウント先を直接viとかで見ていると変っている不思議な現象。
中身を全部消すと反映されるのですが・・・。

調べて見ると、VirtualBoxNFSに起因するバグだった模様。
Vagrantの共有フォルダをApache(Nginx)のDocumentRootに指定するとレスポンスがおかしくなる奇妙な現象の解決方法 #vagrant - OTメモ帳
EnableSendfile Offがコメントアウトされていたので、解除してApacheを再起動すると無事に反映されるようになっていました。
めでたし。

Apacheが起動しない

仮想マシンの起動時にApacheも一緒に立ち上がっているはずなのですが、何故か立ち上がってないという現象にも遭遇。
vagrant sshで接続して、$ sudo /etc/init.d/httpd startすると普通に起動するので、起動時にのみコケている模様。
エラーログを見ても原因がつかめなかったため、同時期に設定したシンボリックリンクの設定をやめ、Webroot以下のフォルダに直接synced_folderを設定する事でApacheが立ち上がるようになりましたが・・・原因は謎。

C:\~\project\~ <--synced_folder--> /var/www/~

とりあえず、無事に使えているのでよしとします。