Ansibleを使用してNginxをインストールしました。 Centos7にインストールするには、yumパッケージを使用したため、デフォルトでrootユーザーとして実行されました。 Centosボックスで別のユーザー(例-nginxユーザー)として起動および実行したい。別のユーザーで実行しようとすると、次のエラーが発生します。
制御プロセスがエラーコードで終了したため、nginx.serviceのジョブが失敗しました。詳細については、「systemctl status nginx.service」および「journalctl -xe」を参照してください。
Rootで実行することはお勧めできません。どうすればこれを回避し、非rootユーザーとしてnginxを実行できますか?ありがとう
/etc/nginx/nginx.conf
に以下を追加/変更します:
user nginx;
ユーザーを作成し、webrootディレクトリに対する権限を再帰的に付与する必要があります。
この方法では、マスタープロセスのみがroot
として実行されます。 理由: 1024未満のポートをリッスンできるのはルートプロセスのみです。通常、Webサーバーはポート80または443、あるいはその両方で実行されます。つまり、ルートとして起動する必要があります。
非rootユーザーとしてマスタープロセスを実行するには:
次の所有権を変更します。
Listenディレクティブを1024を超えるポートに変更し、必要なユーザーとしてログインして、nginxをnginx -c /path/to/nginx.conf
で実行します。
それが役立つ場合に備えて、テスト/デバッグの目的で、Debian(ストレッチ)ラップトップで非特権ユーザーとしてnginxインスタンスを実行することがあります。
次のような最小限の構成ファイルを使用します。
worker_processes 1;
error_log stderr;
daemon off;
pid nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
access_log access.log;
server {
listen 8080;
server_name localhost;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass localhost:8081;
}
}
}
そして私はプロセスを開始します:
/usr/sbin/nginx -c nginx.conf -p $PWD