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

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

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

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

nginx

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

Ruby on Rails

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

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

1回答

2642閲覧

【Ruby on Rails 5】NginxとUnicornを使ってデプロイするも、トップページが「404」になってしまう

jusco

総合スコア80

unicorn

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

nginx

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

Ruby on Rails

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

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2017/08/16 17:02

Rails5で作成したアプリケーションを、VPSにデプロイして公開しようとしています。
Capistranoを利用して、なんとかデプロイは出来たものの、正しくNginxとUnicornの設定が出来ていないようです。

アプリケーションは【/home/user_name/app_name】にCapistranoを利用してデプロイしており、

app_name
|-current
|-log
|-releases
|-repo
|-revisions.log
|-shared

といったファイル構成になっています。

app_name/current 内で
「bundle exec unicorn_rails -c config/unicorn/production.rb -D -E production」
「sudo systemctl start nginx」
をそれぞれ実行すると起動しますが、その後ドメインにアクセスしても「404 NOT Found」となり、アプリケーションが起動しません。

設定ファイルをどのように修正すればいいでしょうか。
どなたかご教示お願いいたします。

★config/unicorn/production.rb

ruby

1# config/unicorn/production.rb 2 3@app_path = '/home/user_name/app_name' 4working_directory @app_path + "/current" 5 6worker_processes 2 7preload_app true 8timeout 30 9 10listen "/tmp/unicorn.sock" 11pid "/tmp/unicorn.pid" 12 13stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) 14stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) 15 16before_fork do |server, worker| 17 ENV['BUNDLE_GEMFILE'] = @app_path + '/current/Gemfile' 18end 19 20before_fork do |server, worker| 21 if defined?(ActiveRecord::Base) 22 ActiveRecord::Base.connection.disconnect! 23 end 24 25 old_pid = "#{server.config[:pid]}.oldbin" 26 if File.exists?(old_pid) && server.pid != old_pid 27 begin 28 Process.kill("QUIT", File.read(old_pid).to_i) 29 rescue Errno::ENOENT, Errno::ESRCH 30 end 31 end 32end 33 34after_fork do |server, worker| 35 if defined?(ActiveRecord::Base) 36 ActiveRecord::Base.establish_connection 37 end 38end

★/etc/nginx/nginx.conf

# /etc/nginx/nginx.conf user user_name; worker_processes 1; error_log /home/user_name/app_name/log/nginx_error.log; 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; }

★/etc/nginx/conf.d/rails.conf

#/etc/nginx/conf.d/rails.conf upstream unicorn { server unix:/home/user_name/app_name/tmp/unicorn.sock; } server { listen 80; server_name <VPSサーバーのipアドレス>; access_log /home/user_name/app_name/log/nginx_access.log; error_log /home/user_name/app_name/log/nginx_error.log; root /home/user_name/app_name/current; 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; } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

私の経験からですが、おそらくパスが合っていないんじゃないですかね。

listen "/tmp/unicorn.sock" pid "/tmp/unicorn.pid"

ここら辺、を含め、パスがちゃんとあっているか確認するといいような気がします。
あと、念のためですが、DNSはこのドメインに向いていますよね。

それとこんな感じの情報をproduction.rbに書いた覚えがありますが、いかがでしょう。

server 'ホスト情報', user: '', roles: %w{web app db} set :branch, "master" set :user, "" set :rails_env, "production" set :unicorn_roles, :web set :unicorn_pid, "/home/user/basic_app/shared/tmp/production_unicorn.pid" set :unicorn_config_path, "/home/user/basic_app/current/config/unicorn.rb" set :unicorn_rack_env, 'production'

投稿2017/08/18 17:39

Yuinyan

総合スコア312

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問