Развертывание приложения Rails на AWS с Nginx и Puma - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь развернуть простое приложение Rails на AWS с NGINX и Puma на Ubuntu 16.04.Я не использую никаких других инструментов развертывания, так как я хочу выяснить, как все это работает, прежде чем сделать это.

Я подтвердил, что NGINX работает, и я мог получить доступ к странице по умолчанию из своего браузера.Puma тоже работает, и я не вижу никаких проблем с этим.Но когда я пытаюсь получить доступ к своему приложению Rails из браузера, я получаю «502 Bad Gateway».

Это мой файл конфигурации NGINX:

upstream hspc {
    server unix:///home/ubuntu/hspc/shared/sockets/puma.sock;

}

server {
    listen 80;
}

server_name ec2-24-347-141-127.us-west-1.compute.amazonaws.com;
    root /home/ubuntu/hspc/public;

    try_files $uri/index.html $uri @hspc;

    location @hspc {
            proxy_pass http://ec2-56-347-141-127.us-west-1.compute.amazonaws.com;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ~* ^/assets/ {
            # Per RFC2616 - 1 year maximum expiry
            expires 1y;
            add_header Cache-Control public;
    }
}

Корень приложения My Rails находится по адресу /home/ubuntu/hspc.Я звоню в Puma с

RAILS_ENV=production rails server

Мой config/puma.rb является стандартным:

workers 1
threads 1, 6

app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"

# Default to production
rails_env = ENV['RAILS_ENV'] || "production"
environment rails_env

daemonize false

# Set up socket location
bind "unix://#{shared_dir}/sockets/puma.sock"

# Logging
stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true

# Set master PID and state locations
pidfile "#{shared_dir}/pids/puma.pid"
state_path "#{shared_dir}/pids/puma.state"
activate_control_app

on_worker_boot do
  require "active_record"
  ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished
  ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env])
end

Если я пытаюсь перейти на http://ec2-24-347-141-127.us-west-1.compute.amazonaws.com или ec2-24-347-141-127.us-west-1.compute.amazonaws.com/users, я получаю '502 Bad Gateway'.

Приложение My Rails отлично работает в режиме разработки и в рабочем режиме на моей машине.Как я могу заставить его работать на сервере?Любая помощь будет оценена.

...