DocumentRootに共有フォルダを使った場合の問題 このエントリーを含むはてなブックマーク bookmarked users

一般 | 2009/04/06 21:12:54
virtualbox

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

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

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

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

EnableSendfile

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

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

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

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

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

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

うまくいきました!!

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

この記事に対するコメントの投稿

この記事に対するトラックバック

http://blog.flup.jp/2009/04/06/problem_of_using_shared_folder_to_document_root/trackback/