web-dev-qa-db-ja.com

Systemdは再起動時にNginxを起動できませんが、手動で機能します

再起動したときの私の状況は次のとおりです。

$ 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にインストールしませんでした。

5
Ryne Everett

問題は、非特権ユーザーを使用してNginx構成をテストしているようです。テストが発生すると、/ run/nginx.pidを作成しようとしますが失敗し、これにより構成テストが失敗します。 rootとしてnginxを実行してみてください。

 $ Sudo nginx -t 

または

 $ su--c "nginx -t" 

このようにして、Nginx親プロセスは、systemctlによって実行される場合と同じ権限を持ちます。

テストでエラーが解決されてもsystemctlから実行されない場合は、 systemdエラーの調査に関するこのページ を確認することをお勧めします。

8
ir0h

私にとっては、selinuxをenforcingからpermissiveに変更しただけで、エラーなしでnginxを起動できました。

0
vipin kumar