2017-02-19 17 views
2

NginxはAnsibleを使用してインストールしました。 CentOS7にインストールするにはyumパッケージを使用しました。デフォルトではルートユーザとして実行されました。 CentOSボックスに別のユーザー(ex-nginxユーザー)として起動して実行します。別のユーザーで実行しようとすると、次のエラーが表示されます。Nginxを非rootユーザーとして実行

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

rootとして実行することはお勧めしません。だから私はこれを回避し、非rootユーザーとしてnginxを実行します。おかげ

+0

でnginxの実行スタックオーバーフローは、プログラミングや開発の質問のためのサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[Super User](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 [Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306) – jww

+0

[ルート以外のプロセスがポート80と443にバインドするのを許可しますか?](http:// 「rootアクセスなしで1024未満のポートにバインドする」(https://serverfault.com/questions/268099/bind-to-ports-less-than-1024-without-root) -access)が役に立ちます。 [ルート以外のプロセスがLinux上の "特権"ポート(<1024)にバインドする方法はありますか?](http://stackoverflow.com/q/413807/608639)を参照してください。 – jww

答えて

5

はあなたの/etc/nginx/nginx.confに次の変更/追加:

user nginx; 

あなたは再帰的にウェブルートディレクトリにユーザーと付与権限を作成する必要があります。

この方法では、マスタプロセスのみがrootとして実行されます。 原因:ルートプロセスだけが1024未満のポートをリスンすることができます。ウェブサーバーは通常、ポート80および/または443で動作します。つまり、ルートとして起動する必要があります。

変更するには、次の所有権:

  • のerror_log
  • client_body_temp_path
  • PID
  • access_logのfastcgi_temp_pathを非rootユーザーとしてマスター・プロセスを実行するには

  • proxy_temp_path
  • scgi_temp_path
  • uwsgi_temp_path

変更、1024以上のポートに指示を聞く目的のユーザーとしてログインし、nginx -c /path/to/nginx.conf

+0

こんにちはファルハード。これは、デフォルトでconfファイル内でこのユーザに設定されていました。私はsu - to nginxを試して起動しましたが、それでもプロセスはrootです。 – Sarith

+0

'ps aux | grep nginx'はrootを表示しますか? –

+0

はい。下記参照。 根5830 0.0 0.1 122232 2216? Ss 17:07 0:00 nginx:マスタープロセス/ usr/sbin/nginx nginx 5831 0.0 0.1 122664 3292? S 17:07 0:00 nginx:ワーカープロセス nginx 5832 0.0 0.1 122664 3088?S 17:07 0:00 nginx:ワーカープロセス – Sarith

関連する問題