Parallels仮想環境上のCentOS Apache で静的ファイルがレスポンスされない
あまりこの問題でブチ当たる人はいないと思うけど・・・
MacOSX上のParallels DesktopでLinux(CentOS)をゲストOSとして起動、
開発環境でApacheを使っている場合の話。
静的なファイル(JPGとかJavaScriptとか)へのリクエストが帰って来ず、ブラウザが真っ白になる。
(レスポンスデータが0byte)。同環境でVMware Fusionだと問題ない。
ApacheのDocumentRootは、ParallelsでMac上のディレクトリを共有。
結論からいうと、このホスト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に移行したんだけど・・・・
環境の移行って簡単にやるとこういうことでハマるというお話。