質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

解決済

【nginx】logの出力先がconfファイル通りにならない

gogoackman3
gogoackman3

総合スコア109

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

1回答

0評価

0クリップ

13219閲覧

投稿2018/01/10 12:02

編集2018/01/10 23:23

###発生している問題

Nginxのエラーログ及びアクセスログが生成されるパスが自動的に以下になってしまいます。

/var/www/rails/プロジェクト名/log

本来ログを出力したいのは以下のパスです。

/var/log/nginx

なお、nginx.confの設定は以下の通りです。(コメントアウトしている部分は一部割愛)

user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; index index.html index.htm; server { listen 80 default_server; listen [::]:80 default_server; server_name localhost; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } # redirect server error pages to the static page /40x.html # error_page 404 /404.html; location = /40x.html { } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { } } }

またnginx.conf.defaultの設定は以下の通りです。(コメントアウトしている部分は一部割愛)

#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; } }

confファイルの権限は以下のようになっていました。

➜ nginx ll /etc/nginx total 68K drwxr-xr-x 2 root root 4.0K Sep 12 16:47 conf.d drwxr-xr-x 2 root root 4.0K Mar 16 2017 default.d -rw-r--r-- 1 root root 1.1K Mar 16 2017 fastcgi.conf -rw-r--r-- 1 root root 1.1K Mar 16 2017 fastcgi.conf.default -rw-r--r-- 1 root root 1007 Mar 16 2017 fastcgi_params -rw-r--r-- 1 root root 1007 Mar 16 2017 fastcgi_params.default -rw-r--r-- 1 root root 2.8K Mar 16 2017 koi-utf -rw-r--r-- 1 root root 2.2K Mar 16 2017 koi-win -rw-r--r-- 1 root root 3.9K Mar 16 2017 mime.types -rw-r--r-- 1 root root 3.9K Mar 16 2017 mime.types.default -rw-r--r-- 1 root root 3.7K Mar 16 2017 nginx.conf -rw-r--r-- 1 root root 2.6K Mar 16 2017 nginx.conf.default -rw-r--r-- 1 root root 636 Mar 16 2017 scgi_params -rw-r--r-- 1 root root 636 Mar 16 2017 scgi_params.default -rw-r--r-- 1 root root 664 Mar 16 2017 uwsgi_params -rw-r--r-- 1 root root 664 Mar 16 2017 uwsgi_params.default -rw-r--r-- 1 root root 3.6K Mar 16 2017 win-utf

また本来ログを出力したい/var/log/nginxの中にあるファイルの権限を確認しようとしたところ以下になりました。

log

さらに/var/log/nginx自体の権限は以下の通りです。

drwx------ 2 nginx nginx 4.0K Jan 10 03:23 nginx

###環境
・amazonのEC2を利用(OSはAmazon Linuxを利用)
・Rails5+Puma+Nginx

###聞きたい事(この質問自体は解決済み)

なぜconfファイルで設定しているパスとは違う場所にnginxのログファイルが生成されてしまうのでしょうか?

###追記(聞きたい事の解決と追加の質問)

/var/log/nginxの権限を変更し、中を確認すると正しくlogファイルが生成されていることがわかりました。

-rw-r--r-- 1 nginx nginx 2746414 Jan 11 08:08 access.log -rw-r--r-- 1 nginx nginx 3079253 Jan 2 03:31 access.log-20180102.gz -rw-r--r-- 1 nginx nginx 2597317 Jan 3 03:28 access.log-20180103.gz -rw-r--r-- 1 nginx nginx 2385272 Jan 4 03:35 access.log-20180104.gz -rw-r--r-- 1 nginx nginx 2428705 Jan 5 03:43 access.log-20180105.gz -rw-r--r-- 1 nginx nginx 2288535 Jan 6 03:20 access.log-20180106.gz -rw-r--r-- 1 nginx nginx 2392137 Jan 7 03:07 access.log-20180107.gz -rw-r--r-- 1 nginx nginx 2657834 Jan 8 03:22 access.log-20180108.gz -rw-r--r-- 1 nginx nginx 2618195 Jan 9 03:08 access.log-20180109.gz -rw-r--r-- 1 nginx nginx 1967811 Jan 10 03:23 access.log-20180110.gz -rw-r--r-- 1 nginx nginx 43857980 Jan 11 03:38 access.log-20180111 -rw-r--r-- 1 nginx nginx 0 Sep 13 03:12 error.log -rw-r--r-- 1 nginx root 81 Sep 13 03:12 error.log-20170913.gz

結果的には/var/log/nginx/var/www/rails/プロジェクト名/logのどちらにもnginxのlogが書き込まれていて、/var/www/rails/プロジェクト名/logの方はローテーションされていないので「nginx.access.log」という1ファイルにログが書き込まれ続けているようでした。

そこで/etc/nginx/conf.d内の「プロジェクト名.conf」というファイルを確認すると以下のようになっていました。

#Log directory error_log /var/www/rails/○○/log/nginx.error.log; access_log /var/www/rails/○○/log/nginx.access.log; #max body size client_max_body_size 200M; upstream ○○ { # for UNIX domain socket setups server unix:/var/www/rails/○○/tmp/sockets/puma.sock fail_timeout=0; } server{ listen 10001; server_name ○○.jp; location / { return 301 https://○○.jp$request_uri; } } server { listen 80; server_name ○○.jp; # nginx so increasing this is generally safe... keepalive_timeout 65; # path for static files root /var/www/rails/○○/public; # page cache loading try_files $uri/index.html $uri.html $uri @app; location @app { # HTTP headers proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://○○; } # Rails error pages error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/rails/○○/public; } }

おそらくこれが/var/log/nginxに加え、/var/www/rails/プロジェクト名/logにもnginxのlogが書き込まれていた原因だと思うのですが、前述の通り/etc/nginx内の「nginx.conf」にlogの出力先(access_log /var/log/nginx/access.log main;)を記載しているので、こちらはコメントアウトしてしまっても問題ないのでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。