OS X YosemiteにアップデートしたらHomebrewでインストールして自動起動設定にしていたnginxのサイトにアクセスできなくなった
こういう設定で家庭内で食材検索のWebアプリを動かしていたが、動作させていたMac miniをYosemiteにアップデートしたらアプリのサイトにアクセスできなくなってしまった。
で、調べようとする過程でbrew doctorしようとしたらbrewコマンドも使えなくなってた。
$ brew doctor /usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 26: /usr/local/Library/brew.rb: Undefined error: 0
ので、まずこちらを解決する。
Yosemiteの/System/Library/Frameworks/Ruby.framework/Versionsの下はCurrent と 2.0になっていて、Currentは2.0のシンボリックリンクになっている。
brew.rbを編集。
$ vi /usr/local/Library/brew.rb #!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0 <- これを #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0 <-こう変える
これでbrew updateとかdoctorとかしようとすると当然怒られるので以下のように。
$ cd /user/local $ git commit -a -m "ruby version 2.0" $ brew update
OK.
本題のnginxとunicornの確認。 まず、unicornのポート5000番にブラウザからアクセスしてみると、こちらはアクセス出来ている。
nginxがダメなようだ。
plistをunloadしてnginxを手動で起動して確認してみる。
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist $ nginx nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /usr/local/etc/nginx/nginx.conf:2 nginx: [emerg] mkdir() "/usr/local/var/run/nginx/client_body_temp" failed (2: No such file or directory)
ディレクトリ作成に失敗というメッセージが出たので、手動で作ってみた
$ mkdir -p /usr/local/var/run/nginx/client_body_temp $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
OK.ブラウザから8080番にアクセスしたところ無事アクセス出来た。