Проблема в конфигурации приложения Ruby on Rails с использованием сервера "Puma" - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь развернуть свое первое API-приложение Ruby on Rails в amazon ec2 .Для этого я скопировал мой myapp в мой домашний каталог /home/user.На моем сервере я установил Rails, используя rbenv, также установил mysql-client.

В приложении Gemfile Я добавил следующие гемы:

# Use Puma as the app server
gem 'puma', '~> 3.11'
#for server deployment
group :production, :staging do
  gem 'capistrano'
  gem 'capistrano3-puma'
  gem 'capistrano-rails', require: false
  gem 'capistrano-bundler', require: false
  gem 'capistrano-rbenv'
end

puma.rb :

# Change to match your CPU core count
workers 1
# Min and Max threads per worker
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

# 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

Изначально я не ищу развертывания capistrano .Так что я не перечисляю deploy.rb файл здесь.Я установил nginx на сервере и в файле конфигурации я добавил следующие

/ etc / nginx / conf.d / virtual.conf :

upstream app {
   server unix:///home/user/myapp/shared/sockets/puma.sock fail_timeout=0;
}

server {
    listen 80;
    server_name localhost;

    root /home/user/myapp/current/public;

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

    location / {
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Connection '';
        proxy_pass http://app;
      }

    location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
        gzip_static on;
        expires max;
        add_header Cache-Control public;
      }
}

После добавления конфигурации я перезапустил сервер, мне надоело получать сервер, указав IP в браузере, но тайм-аут произошел.Затем я запустил сервер puma с помощью команды

  bundle exec puma -e production -p 3000  -b unix:/home/user/myapp/shared/sockets/puma.sock

Нужно ли запускать сервер следующим образом?

...