【问题标题】:Command to start rails server when using Puma + Nginx使用 Puma + Nginx 时启动 rails 服务器的命令
【发布时间】:2016-11-19 23:03:56
【问题描述】:

我刚刚使用 Capistrano 将我的 Rails 应用程序推送到了远程服务器。该应用程序部署在deploy用户的主目录下-/home/deploy/my_app/current/

我正在使用 puma 作为 Web 服务器,并已将 nginx 配置为查找应将所有传入 Web 流量转发到的套接字。来自我的 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 bad gateway。

我应该改用puma -C config/puma.rb 吗?有什么区别,我假设rails server 无论如何都会启动 puma。以及如何创建该套接字?

谢谢!

编辑:当我搜索正在运行的 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

【问题讨论】:

    标签: ruby-on-rails nginx capistrano puma


    【解决方案1】:

    不,rails 4 的默认服务器是 webrick,是的,你应该使用 puma -C config/puma.rb

    【讨论】:

      【解决方案2】:

      如果你想重启Nginx那么你可以使用这个命令:

       sudo service nginx restart
      

      如果你想重启你的 Rails 服务器(Puma),那么命令应该是:

      RAILS_ENV=production puma -C config/puma.rb     
      

      【讨论】:

        猜你喜欢
        • 2016-09-13
        • 2016-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-05
        • 2016-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多