Syntax Error.

[Sy] brew services start nginx で自動起動するようにしたのに起動していない場合に考えられること

2016/07/12

Homebrew でインストールしていたNginxを自動起動するように brew services start nginx とコマンドを実行したのに 自動起動しなかった ので、その時の原因について。

こんな状況になった

結構前にインストールしていた Nginx を自動起動するようにしようと思って、とりあえず brew info nginx を実行してみました。(先日の記事のやつ)

⇒ [Sy] Homebrewでinstallしたformulaの設定や情報を見直したい時には「brew info」コマンドが便利

すると表示された情報の中に、このような部分が。

To have launchd start nginx now and restart at login:
  brew services start nginx

どうやら brew services start nginxとコマンドを実行しておけば次回以降、Mac 再起動時に Nginx が自動起動される様子。

最近Vagrantばっかり使ってて、あまりHomebrewでの環境構築に慣れてなかったので、へーこんなコマンドあったんだーと思って実行してMacを再起動してみました。

(しばし待つ)

さて、Nginx は起動したかなーとhttp://localhost:8080にアクセスしてみるとエラー。

・・・あれ?起動してない?

原因

なんでだろ?と思って、もう一度brew info nginxの表示を見てみると、

To have launchd start nginx now and restart at login:
  brew services start nginx
Or, if you don't want/need a background service you can just run:
  nginx

と、すぐに起動したいならnginxコマンドを実行しろと書いてあるので、とりあえずシンプルに Nginx を起動してみると、

$ nginx
nginx: [alert] could not open error log file: open() "/usr/local/var/log/nginx/error.log" failed (13: Permission denied)
2016/07/09 07:21:39 [emerg] 5199#0: open() "/usr/local/var/log/nginx/access.log" failed (13: Permission denied)

あ・・・そっか。

元々ぼくは Nginx をsudoありで実行してました。

$ sudo nginx

と。

なので、 ログファイルがrootユーザで作成されていたんです。そのファイルを開いて追記しようとしたら権限なくて起動に失敗していたってことですね。

そんな単純なことをすっかり忘れてて、brew info nginxの表示の中にあった

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

という記述を見て「sudoなしで起動しておくか」と思ってしまい、罠にハマったということです。

なので一旦ログを削除して、やり直すことに。

$ sudo rm /usr/local/var/log/nginx/access.log
$ sudo rm /usr/local/var/log/nginx/error.log
$ brew services start nginx

これで無事解決しました。

関連記事