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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

685閲覧

rails5+nginx+unicorn本番環境でアプリのルートファイルが表示できません。

Banksy

総合スコア8

nginx

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/05/08 15:12

編集2018/05/13 06:06

rails5+nginx+unicorn本番環境でアプリのルートファイルが表示できない

app/views以下に設定したrootページが表示できないです。
試しにapp_name/public/にindex.htmlを置くとapp_name/public/index.htmlは表示されpublic/assets以降も表示できるような状況ですが、app_name/public/からindex.htmlを削除して、本来表示したいroutesに設定したhome#indexが表示せずに403 Forbiddenと返ってきます。

ruby

1rails server -e production

ローカルで本番環境を確認してもrootで設定したファイルが表示されます。

nginx/error.logエラーログは以下です。

2018/05/12 12:31:47 [error] 13982#13982: *1 directory index of "/home/user_name/rails_app/public/" is forbidden, client: ***.*.***.***, server: example.com, request: "GET / HTTP/2.0", host: "example.com"

/home/user_name/rails_app/public配下にindex.htmlを置くとページは表示される状況です。

publicのパーミッションは以下になります。

drwxrwxr-x 3 nginx user 4096 5月 11 15:53

rails_app/config/routes.rb

Ruby

1Rails.application.routes.draw do 2 get 'home/index' 3 root :to => 'home#index' 4end 5

nginxで.confは以下の3つで設定しています。

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; include /etc/nginx/conf.d/*.conf; }

htpps.conf

map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 443 ssl http2; server_name example.com; location / { root /home/user_name/rails_app/public; index index.html index.htm; } ssl_protocols TLSv1.2; ssl_ciphers EECDH+AESGCM:EECDH+AES; ssl_ecdh_curve prime256v1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; error_page 500 502 503 504 /50x.html; location = /50x.html { root /home/user_name/rails_app/public; } }

rails.conf

upstream unicorn { server unix:/home/user_name/rails_app/tmp/unicorn.sock; } server { listen 80; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /home/user_name/rails_app/public; 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; } }

environments/production.rbは以下の設定です。

ruby

1Rails.application.configure do 2 # Settings specified here will take precedence over those in config/application.rb. 3 4 # Code is not reloaded between requests. 5 config.cache_classes = true 6 7 # Eager load code on boot. This eager loads most of Rails and 8 # your application in memory, allowing both threaded web servers 9 # and those relying on copy on write to perform better. 10 # Rake tasks automatically ignore this option for performance. 11 config.eager_load = true 12 13 # Full error reports are disabled and caching is turned on. 14 config.consider_all_requests_local = false 15 config.action_controller.perform_caching = true 16 17 # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] 18 # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). 19 # config.require_master_key = true 20 21 # Disable serving static files from the `/public` folder by default since 22 # Apache or NGINX already handles this. 23 config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? 24 25 # Compress JavaScripts and CSS. 26 config.assets.js_compressor = :uglifier 27 # config.assets.css_compressor = :sass 28 29 # Do not fallback to assets pipeline if a precompiled asset is missed. 30 config.assets.compile = false 31 32 # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb 33 34 # Enable serving of images, stylesheets, and JavaScripts from an asset server. 35 # config.action_controller.asset_host = 'http://assets.example.com' 36 37 # Specifies the header that your server uses for sending files. 38 # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache 39 # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX 40 41 # Store uploaded files on the local file system (see config/storage.yml for options) 42 config.active_storage.service = :local 43 44 # Mount Action Cable outside main process or domain 45 # config.action_cable.mount_path = nil 46 # config.action_cable.url = 'wss://example.com/cable' 47 # config.action_cable.allowed_request_origins = [ 'http://example.com', /http://example.*/ ] 48 49 # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 50 config.force_ssl = true 51 52 # Use the lowest log level to ensure availability of diagnostic information 53 # when problems arise. 54 config.log_level = :debug 55 56 # Prepend all log lines with the following tags. 57 config.log_tags = [ :request_id ] 58 59 # Use a different cache store in production. 60 # config.cache_store = :mem_cache_store 61 62 # Use a real queuing backend for Active Job (and separate queues per environment) 63 # config.active_job.queue_adapter = :resque 64 # config.active_job.queue_name_prefix = "appname_#{Rails.env}" 65 66 config.action_mailer.perform_caching = false 67 68 # Ignore bad email addresses and do not raise email delivery errors. 69 # Set this to true and configure the email server for immediate delivery to raise delivery errors. 70 # config.action_mailer.raise_delivery_errors = false 71 72 # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 73 # the I18n.default_locale when a translation cannot be found). 74 config.i18n.fallbacks = true 75 76 # Send deprecation notices to registered listeners. 77 config.active_support.deprecation = :notify 78 79 # Use default logging formatter so that PID and timestamp are not suppressed. 80 config.log_formatter = ::Logger::Formatter.new 81 82 # Use a different logger for distributed setups. 83 # require 'syslog/logger' 84 # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') 85 86 if ENV["RAILS_LOG_TO_STDOUT"].present? 87 logger = ActiveSupport::Logger.new(STDOUT) 88 logger.formatter = config.log_formatter 89 config.logger = ActiveSupport::TaggedLogging.new(logger) 90 end 91 92 # Do not dump schema after migrations. 93 config.active_record.dump_schema_after_migration = false 94end 95

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/05/08 16:59

nginxのエラーログってどうなってますか?また、railsのターミナルにエラーは出ていますか?
Banksy

2018/05/11 03:54

情報追記いたしました。
guest

回答2

0

ベストアンサー

nginxから"/home/user_name/rails_app/public"このファイルへのアクセス権が無いように思われます。
パーミッションを確認してみてはどうでしょうか。

投稿2018/05/11 06:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Banksy

2018/05/11 06:59

ありがとうございます。 /home/user_name/rails_app/public配下にindex.htmlを置くとページは表示される状況でして、 drwxrwxr-x 3 nginx user 4096 5月 11 15:53 publicとなっております。
guest

0

nginx ではなく、rails の config/routes.rb ファイルを以下のように書き換えてみてください。

ruby

1Rails.application.routes.draw do 2 root 'home#index' 3end 4

投稿2018/05/09 12:04

keniroya

総合スコア104

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

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

Banksy

2018/05/11 03:55

Rails.application.routes.draw do root 'home#index' end 上記試しましたが解決しませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問