読者です 読者をやめる 読者になる 読者になる

OS X YosemiteにアップデートしたらHomebrewでインストールして自動起動設定にしていたnginxのサイトにアクセスできなくなった

こういう設定で家庭内で食材検索のWebアプリを動かしていたが、動作させていたMac miniYosemiteにアップデートしたらアプリのサイトにアクセスできなくなってしまった。

で、調べようとする過程で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番にアクセスしたところ無事アクセス出来た。

参考