Parallels仮想環境上のCentOS Apache で静的ファイルがレスポンスされない

あまりこの問題でブチ当たる人はいないと思うけど・・・


MacOSX上のParallels DesktopLinuxCentOS)をゲストOSとして起動、
開発環境でApacheを使っている場合の話。


静的なファイル(JPGとかJavaScriptとか)へのリクエストが帰って来ず、ブラウザが真っ白になる。
(レスポンスデータが0byte)。同環境でVMware Fusionだと問題ない。
ApacheのDocumentRootは、ParallelsMac上のディレクトリを共有。


結論からいうと、このホストOS上のディレクトリをゲストOSが共有して、ApahceのDocumentRootとしている場合。
Parallelsの場合はParallels ToolというのをゲストOS作成時にインストールするのだが、
これがLinuxカーネルの一部を書き換えてる模様(Toolインストール時にkernel sourceのパッケージを要求される)。
これが悪さして、Apacheがクライアントに素早くレスポンスするためにOSに対して発行するSendfile syscallが
動作しないらしい。


解決策はここ。
http://httpd.apache.org/docs/2.0/faq/error.html
Sendfileをディレクティブでoffにしろ、と。


ディレクティブで
EnableSendFile Off
としてApache再起動。


これで動作しました。改めてググると、VirtualBoxでも同様らしい。
今までVMware Fusion3使ってて、Fusion4の出来の悪さに嫌気がさしてPara7に移行したんだけど・・・・
環境の移行って簡単にやるとこういうことでハマるというお話。