DocumentRootに共有フォルダを使った場合の問題

virtualbox

VirtualBoxにCentOSなどのLinux環境を構築し、そこへApacheやらデータベースサーバやらをインストールしてWebアプリの開発を行うことがよくあります。

その際に、ホストのディレクトリを共有フォルダ設定してマウントパスをApacheのDocumentRootに指定すると便利に開発できるかと思います。

・・・が、しかし、今日その設定を行ってみてブラウザで表示を確認してみたところ、なぜか静的コンテンツがまともに表示されません・・・。

まっしろになってしまったり、更新したはずなのに古いものが表示されたり・・・。一体原因はなんなんでしょうか。。

EnableSendfile

Apacheの設定ファイル、httpd.confのcache関係のモジュールをオフにしたりといろいろとやってみましたが、全く変化ありません。

あきらめかけていたのですが、Live HTTP Headersでヘッダを見てみたところ、静的コンテンツが、206 Partial Content というレスポンスになっていることが分かりました。

このレスポンスコードをたよりに色々と検索してみると、どうやら EnableSendfile ディレクティブをオフにすればよいらしいことが分かりました。

さらに、このディレクティブについて調べてみると、

ネットワークマウントされた DocumentRoot (例えば NFS や SMB) では、カーネルは自身のキャッシュを使ってネットワークからのファイルを 送ることができないことがあります。

とあり、まさに今の症状の通りでしたので設定してみると・・・。

うまくいきました!!

もし、同じような状況に直面している人がいたらお役に立てば嬉しいです。

LINEで送る
Pocket

DocumentRootに共有フォルダを使った場合の問題」への5件のフィードバック

gondoh へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です