2017-03-05 16 views
0

nginx.confファイルにエントリを挿入するだけで、私を悩ませているエラー(下記参照)を解決する必要があると思っていますが、これまでのところ文法を理解できていません。どんな助けもありがとう。どのようにnginxを設定して、そのerror.logファイルを書き込み権限のどこかに置くことができますか?

管理者権限を持つユーザとしてhomebrewを使用してインストールしているときに、nginxを通常のユーザとして実行したいとします。 nginxはerror.logのファイル/usr/local/var/log/nginx/error.logに書き込もうとしています。普通のユーザーには書き込み権限がないのでできません。

もう1つのしわは、ファイルが2つあり、グローバルとローカルの2つのファイルで、実際には両方が読み取られているとわかります。彼らはデフォルトの自家製の場所/usr/local/etc/nginx/nginx.confと私のローカルプロジェクトディレクトリ$BASE_DIR/nginx.confです。ここで

が起動するnginxの試みとして生成されるエラーは次のとおりです。

[WARN] No ENV file found 
10:08:18 PM web.1 | DOCUMENT_ROOT changed to 'public/' 
10:08:18 PM web.1 | Using Nginx server-level configuration include 'nginx.conf' 
10:08:18 PM web.1 | 4 processes at 128MB memory limit. 
10:08:18 PM web.1 | Starting php-fpm... 
10:08:20 PM web.1 | Starting nginx... 
10:08:20 PM web.1 | Application ready for connections on port 5000. 
10:08:20 PM web.1 | nginx: [alert] could not open error log file: open() "/usr/local/var/log/nginx/error.log" failed (13: Permission denied) 
10:08:20 PM web.1 | 2017/03/04 22:08:20 [emerg] 19557#0: "http" directive is duplicate in /usr/local/etc/nginx/nginx.conf:17 
10:08:20 PM web.1 | Process exited unexpectedly: nginx 
10:08:20 PM web.1 | Going down, terminating child processes... 
[DONE] Killing all processes with signal null 
10:08:20 PM web.1 Exited with exit code 1 

nginxのを取得する方法を考え出すと私は、このプロジェクトの開発側にバックアップすることができます実行しているすべてのヘルプははるかになります感謝。

+0

私は自分自身の問題に対する部分的な解決策を見つけました(そして、私は自分自身に恥ずかしいと思います)。私が自分自身にログファイルに対する書き込み許可を与えると、最初のエラーが取り除かれます。私。管理ユーザーとして 'sudo chmod a + w/usr/local/var/log/nginx/* .log'を実行してください。 – Keith

+0

その可能性を思い出させるこのポスト(http://stackoverflow.com/questions/13371925/how-to-turn-off-or-specify-the-nginx-error-log-location?rq=1) 。 – Keith

答えて

1

nginxが自分の管理者権限でインストールされているにもかかわらず、通常のユーザとしてnginxを実行しようとすると、問題が発生します。私は、管理者権限を持つユーザーとして実行される次のコマンドを使用して、ここで示したエラーの両方を解決することができた:

sudo chmod a+w /usr/local/var/log/nginx/*.log 
sudo chmod a+w /usr/local/var 
sudo chmod a+w /usr/local/var/run 

/usr/local/varディレクトリはnginxのをインストールする時に自作によって作成されたと表示され、このマシンは私のラップトップであること私はそれを開かない理由は何も見えません。他のシナリオでは、より大きなセキュリティ上の懸念があるかもしれません。

私はこの質問を書いたときに、error.logファイルを別のディレクトリに移動しようとしていると思いました。今ではそれが完全な解決策ではないので、私がここに提示する解決策は、通常のユーザーに必要なディレクトリに書き込み権限を与えることです。

私は私の心を変えた理由は、nginxのは(この場合にん)nginx.confファイルを読み込む(またはながら)前エラーを生成することができるということですし、ログファイルにこれらのエラーを報告できるようにする必要があります。 nginx.confファイルを変更しても私の問題は解決されませんでした。この問題まで私を目覚めさせたのは、この投稿を読んでいたことです。How to turn off or specify the nginx error log location?

0

nginx.confを編集してログパスをカスタムロケーションに設定しようとしましたか?

access_log /var/log/nginx/access.log; 
error_log /var/log/nginx/error.log; 

パスを変更するには、書き込み権限があります。

+0

どのnginx.confファイルを編集しますか?地方自治体は納得していますか? – Keith

+0

@Keith Imそれについては分かりませんが、プロジェクトレベルのconfが優先されるべきです。簡単にテストすることができます。 –

+0

運がよかったです。私は 'access_log /Users/keith/Documents/AgEnt/everyone/logs/access.log;を追加しようとしました。 error_log /Users/keith/Documents/AgEnt/everyone/logs/error.log; 'をローカルの' nginx.conf'ファイルの先頭に追加しても、エラーメッセージには何の影響もありませんでした。これらの行は、error.logファイルの場所をまったく変更していないようです。 – Keith

関連する問題