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

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

新規登録して質問してみよう
ただいま回答率
85.48%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

Ruby on Rails 5

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

nginx

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

Ruby on Rails

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

Q&A

解決済

2回答

4815閲覧

Rails5.1 + Nginx + Unicornでpublic以下のファイルにアクセスできない(アクセスを試みると404)

big2017

総合スコア39

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

Ruby on Rails 5

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

nginx

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/12/03 18:29

編集2017/12/04 02:40

Nginx + Unicorn+Railsでアプリを作り、すでにvpsサーバにもアップしております。Seo向上のためのSitemapを作成したのですが、googleのsitemap送信テストを行うと404のエラーが返ってきます。

nginxのエラーログ

$ sudo less error.log-20171203 2017/12/03 11:00:19 [error] 1819#1819: *1 connect() to unix:/var/www/app/sample_app/shared/sockets/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 00.000.00.20, server: 150.11.111.111, request: "GET /sitemap.xml.gz HTTP/1.1", upstream: "http://unix:/var/www/app/sample_app/shared/sockets/unicorn.sock:/500.html", host: "sample_app.jp"

http://sample.jp/sitemap.xml.gz(一部変更しております)

sitemap.xml.gzはsample_app/public/sitemap.xml.gzのような階層で配置されております。

色々調べたところpublic以下のファイルにアクセスする際にはnginx側で個別の設定をする必要がおそらくあるとのことでした。(sample_app/public/assetsにはアクセスできてます...)

sample_app/public配下全てにアクセスする場合にはどのようにしたら良いのでしょうか?

この件で404が発生した時に/var/log/nginx/error.logにログとして残っていないので、ログ確認できていません。(この問題も気になっています。その他のエラーではしっかり吐かれています)

nginxの設定は以下のようになっております。

$less etc/nginx/nginx.conf

user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; 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; keepalive_timeout 65; gzip on; gzip_vary on; gzip_types text/plain image/png image/jpeg image/gif application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml text/css; include /etc/nginx/conf.d/*.conf; }
$ less /etc/nginx/conf.d/local.conf upstream unicorn { server unix:/var/www/app/sample_app/shared/sockets/unicorn.sock; } server { listen 80 default_server; server_name 100.00.006.000; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /var/www/app/sample_app; client_max_body_size 100m; error_page 404 /404.html; error_page 500 502 503 504 /500.html; try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://unicorn; } }

robots.txt

User-agent: * Sitemap: http://sample.jp/sitemap.xml.gz

config/environments/production.rb

ruby

1 2Rails.application.configure do 3 4 config.cache_classes = true 5 config.eager_load = true 6 config.consider_all_requests_local = false 7 config.action_controller.perform_caching = true 8 config.read_encrypted_secrets = true 9 10 # Disable serving static files from the `/public` folder by default since 11 # NGINX already handles this. 12 config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? 13 14 # Compress JavaScripts and CSS. 15 config.assets.js_compressor = :uglifier 16 # config.assets.css_compressor = :sass 17 18 # Do not fallback to assets pipeline if a precompiled asset is missed. 19 config.serve_static_files = true 20 config.assets.compile = true 21 22 config.log_level = :debug 23 24 config.log_tags = [ :request_id ] 25 config.action_mailer.perform_caching = false 26 config.i18n.fallbacks = true 27 28 if ENV["RAILS_LOG_TO_STDOUT"].present? 29 logger = ActiveSupport::Logger.new(STDOUT) 30 logger.formatter = config.log_formatter 31 config.logger = ActiveSupport::TaggedLogging.new(logger) 32 end 33 34 config.active_record.dump_schema_after_migration = false 35end 36 37 38 39 40

public/assetsにはアクセスできているようなので、該当のファイルをpublic/assetsに配置してしまえば解決できそうなのですが、nginxの勉強も兼ねて実現できたら幸いでございます。
大変お手数おかけしますが、わかる方いましたら助言のほどよろしくお願いいたします。

参考になりそうなもの

この方と同じ悩みと思われます
Rails(Apache+Unicorn)で、public以下のディレクトリの中身が404になる場合の解決策
Rails 4.2以降: Rails+Unicorn で、publicディレクトリの中身が404になる場合の解決策
sitemapの作成の際の参考記事

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

$ less /etc/nginx/conf.d/local.conf

nginx側で以下のように設定をし、解決できました!

pathが誤っていたようです。。

・・・・・中略・・・・・・ location = /sitemap.xml.gz { root /var/www/app/sample_app/current/public; } location = /robots.txt { root /var/www/app/sample_app/current/public; }

投稿2017/12/05 02:45

編集2017/12/05 02:46
big2017

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

public/assetsは出来ているということは、assets以外のフォルダにNginxが操作を行うための権限が付与されていないような気がします。
ls -alなどでエラーとなるフォルダやファイルのユーザーとグループを確認し、assetsのユーザーとグループ権限と比較し、もしassetsと違う場合はassetsの権限に合わせてみてはいかがでしょうか?

投稿2017/12/04 01:01

kenny_sayama

総合スコア1036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

big2017

2017/12/04 01:08

回答いただきありがとうございます。 早速アドバイス通り確認して見ます!
big2017

2017/12/04 04:32 編集

権限などの差を比較しましたが、public/assetsとpublic/で特に権限の違いは見当たりませんでした。。 $ ls -al sample_app/public/ 合計 32 drwxrwxr-x 3 hoge hoge 4096 11月 1 15:03 2017 . drwxrwxr-x 14 hoge hoge 4096 11月 1 19:48 2017 .. -rw-rw-r-- 1 hoge hoge 1722 11月 1 15:03 2017 404.html -rw-rw-r-- 1 hoge hoge 1705 11月 1 15:03 2017 422.html -rw-rw-r-- 1 hoge hoge 1635 11月 1 15:03 2017 500.html -rw-rw-r-- 1 hoge hoge 0 11月 1 15:03 2017 apple-touch-icon-precomposed.png -rw-rw-r-- 1 hoge hoge 0 11月 1 15:03 2017 apple-touch-icon.png drwxrwxr-x 4 hoge hoge 4096 11月 1 17:52 2017 assets -rw-rw-r-- 1 hoge hoge 0 11月 1 15:03 2017 favicon.ico -rw-rw-r-- 1 hoge hoge 197 11月 1 15:03 2017 robots.txt -rw-rw-r-- 1 hoge hoge 322 11月 30 00:23 2017 sitemap.xml.gz $ ls -al sample_app/public/assets 合計 2404 drwxrwxr-x 4 hoge hoge 4096 11月 1 17:52 2017 . drwxrwxr-x 3 hoge hoge 4096 11月 1 15:03 2017 .. -rw-rw-r-- 1 hoge hoge 9129 11月 1 17:52 2017 .sprockets-manifest-69752f69ea0f456f755297f8.json -rw-rw-r-- 1 hoge hoge 390319 11月 1 15:03 2017 application-0d15e4d6a625ee90d80d2c28c9f462d7cebe65f7f115ee386118e91bc1c.js -rw-rw-r-- 1 hoge hoge 107298 11月 1 15:03 2017 application-0d15e4d6a625ee90sjkdrgd80d9f1f22c28c9f462d7cebe15ee386118e91bc1c.js.gz -rw-rw-r-- 1 hoge hoge 160220 11月 1 15:03 2017 application-2694b6bd69124749eaa51fc87b893acdcd3ed97e41b615ba21.css -rw-rw-r-- 1 hoge hoge 13044 11月 1 15:03 2017 application-2694b6bd69024alskdjfa9b9e51fc8740ceb893acdcd3ee41b6ce15ba21.css.gz -rw-rw-r-- 1 hoge hoge 156364 11月 1 17:51 2017 application-4f9d640f6asrjhgaklj21ff93a4e05f4c68d608641d77f32b7936429d7.js -rw-rw-r-- 1 hoge hoge 47482 11月 1 17:51 2017 application-4f992c2421ff97klsdjf;lks7753a4e05f4c31a68d6c9bf367.js.gz
kenny_sayama

2017/12/04 04:51

参考記事に挙げられていることは実践してみましたか?
big2017

2017/12/04 05:46 編集

はい。実践しましたが、前進することはありませんでした。 それとすみませんが、今回の問題以前の問題を発見しました。 本番サーバのファイルがある日から全く更新されていないという問題です。(リリースは毎日行なっていて、Uデプロイ先URLにアクセスした時には最新になっていて問題ないのですが、サーバーのファイルの中身(ソースコードなど)を確認すると11月1日あたりを最後に更新がされていません。) $ ls -al sample_app/public/assetsの結果からも分かる通り、11月 1日からログが更新されていません。 どうしてこのようなギャップが起きてしまっているのかわかりませんが、まずはそちらから解決しないとおそらく先に進めそうにありませんので、今回の問題を解決するのに少し時間がかかってしまいそうです。 ご迷惑おかけしすみませんでした。まずは整理して、質問させていただきます。 ありがとうございました!
kenny_sayama

2017/12/04 05:45

お力になれずすみません。。
big2017

2017/12/04 05:48

とんでもございません、根本原因が見つかりそうで大変感謝しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問