[Sy] brew services start nginx で自動起動するようにしたのに起動していない場合に考えられること
Homebrew でインストールしていたNginxを自動起動するように brew services start nginx とコマンドを実行したのに 自動起動しなかった ので、その時の原因について。
こんな状況になった
結構前にインストールしていた Nginx を自動起動するようにしようと思って、とりあえず brew info nginx
を実行してみました。(先日の記事のやつ)
すると表示された情報の中に、このような部分が。
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
これで無事解決しました。