Vagrant + Apache(Nginx)を使っている時に、cssなどの静的ファイルが更新されなくなってハマった

2015年7月25日

サーバー トラブル

久しぶりに環境構築でハマりました。 WEBサービス開発する時にローカル環境をvagrantで構築してapacheやnginxで簡単にセットしていたんですが、ある時、cssファイルを書き換えてブラウザで確認しても一向に反映されないという現象が発生しました。

色々試してみる

最初は別環境で描き込んだcssファイルを中身だけコピペして来たのが原因だと考えていましたが、ブラウザのキャシュをクリアしても、反映されず、ブラウザ側のキャッシュでないことは判明。 次に、nginx(この時はnginxサーバーだった)をrestartしてみても反映されず。 vagrant毎、reloadしてみると、なんとか反映することができた。 どうやらvagrantが原因なのかと思ったが、毎回OS、を再起動するのは少し面倒くさい。

解決は簡単だった

Qiitaに同じ症状で解決法を書き込んでくれている人がいた(神!!) VagrantでCSSの更新が反映されない場合の対処法

原因

OSの余計な親切設計であるsendfileという機能で静的ファイルに関しては自動的にキャッシュファイルを使用して更新確認を行なってくれないというモノでした。 ただ、webサービスにおいて、キャッシュはよくトラブルになりますが、サーバー負荷を抑えるもっとも有効な手段なので、こういった深い仕組みを知っておく必要があったという事だろう。

解決方法

Nginx

$ sudo vi /etc/nginx/nginx.conf > sendfile on; # x > sendfile off; # o

Apache

$ sudo vi /etc/apache2(httpd)/httpd.conf > EnableSendFile on; # x > EnableSendFile off; # o 解決法はすごく簡単でしたが、2時間ほど悩んで時間を捨ててしまいました。 物事を知らないという事は、本当に時間の無駄使いですね。 でも、知るための時間は貴重だとも考えられますね。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。