2016-07-17 5 views
0

Я просто нажал приложение Rails на мой удаленный сервер, используя Capistrano. Приложение развернуто под домашним каталогом deploy - /home/deploy/my_app/current/Команда запускает сервер rails при использовании Puma + Nginx

Я использую puma как веб-сервер и имею nginx, настроенный на поиск сокета, которому он должен пересылать весь входящий веб-трафик. Snippet из моего Nginx файла конфигурации сайта -

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

Соответственно, мой puma.rb файл использует bind создать тот же сокет, упомянутых выше.

# config/puma 

# Change to match your CPU core count 
workers Integer(ENV["PUMA_WORKERS"] || 2) 

# Min and Max threads per worker 
threads 1, Integer(ENV["PUMA_MAX_THREADS"] || 5) 

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

# Default to production 
port ENV["PORT"] || 3000 
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 

Последняя часть - это запуск моего приложения Rails. Какую команду я должен использовать для ее запуска? Я попробовал

SECRET_KEY_BASE=blahblahblah rails s -e production --daemon 

однако это не создало розетку по указанному выше пути. Я также подтвердил это, пытаясь ударить мой URL, и nginx сбросил 502 плохих шлюза.

Вместо этого я должен использовать puma -C config/puma.rb? В чем разница, я полагаю, что rails server начинает пуму в любом случае. И как я могу создать этот сокет?

Спасибо!

EDIT: Когда я ищу процесс puma, который работает, он сообщает мне, что он прослушивает порт TCP. Я не уверен, как это отличается от сокетов, но может ли это быть проблемой?

[01:08:09] deploy:~ > ps aux | grep puma 
deploy 12132 0.0 7.6 523736 78160 ?  Sl 00:59 0:00 puma 3.4.0 (tcp://localhost:3000) [/] 
deploy 12314 0.0 0.0 14512 936 pts/0 S+ 01:08 0:00 grep puma 

ответ

3

Нет рельсов 4 в сервер по умолчанию WEBrick и да, вы должны использовать PUMA -C config/puma.rb

0

Если вы хотите перезапустить Nginx, то вы можете использовать эту команду:

sudo service nginx restart 

Если вы хотите перезапустить ваш сервер рельсов (Puma), тогда команда должна быть:

RAILS_ENV=production puma -C config/puma.rb