再起動したときの私の状況は次のとおりです。
$ systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
nginx.service loaded failed failed A high performance web server and a reverse proxy server
...
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2014/01/18 05:44:47 [emerg] 254#0: open() "/run/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
$ cd /run
$ ls -al | grep nginx
$ Sudo systemctl start nginx
$ ls -al | grep nginx
-rw-r--r-- 1 root root 4 Jan 18 06:27 nginx.pid
作成する前にnginx.pid
が不正な権限を持っている可能性があること、またはそれを解決するために何ができるかわかりません。
Archを使用していて、chroot-jailに関連する同様の問題を見てきましたが、ngrootをchrootにインストールしませんでした。
問題は、非特権ユーザーを使用してNginx構成をテストしているようです。テストが発生すると、/ run/nginx.pidを作成しようとしますが失敗し、これにより構成テストが失敗します。 rootとしてnginxを実行してみてください。
$ Sudo nginx -t
または
$ su--c "nginx -t"
このようにして、Nginx親プロセスは、systemctlによって実行される場合と同じ権限を持ちます。
テストでエラーが解決されてもsystemctlから実行されない場合は、 systemdエラーの調査に関するこのページ を確認することをお勧めします。
私にとっては、selinuxをenforcingからpermissiveに変更しただけで、エラーなしでnginxを起動できました。