使用Nginx和Puma在AWS上部署Rails应用

时间:2018-10-09 16:37:29

标签: ruby-on-rails nginx deployment puma

我正在尝试在Ubuntu 16.04上使用NGINX和Puma在AWS上部署一个简单的Rails应用程序。我没有使用任何其他部署工具,因为我想先弄清楚所有工作原理。

我已经确认NGINX正在运行,并且可以从浏览器访问默认页面。 Puma也正在运行,我看不到任何问题。但是,当我尝试从浏览器访问Rails应用程序时,出现了“ 502 Bad Gateway”。

这是我的NGINX conf文件:

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;
    }
}

我的Rails应用程序根目录位于/home/ubuntu/hspc。我叫彪马

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.comec2-24-347-141-127.us-west-1.compute.amazonaws.com/users,则会显示“ 502错误的网关”。

我的Rails应用程序在机器上的开发模式和生产模式下都可以正常工作。如何使它在服务器上工作?任何帮助将不胜感激。

0 个答案:

没有答案