【问题标题】:Can a Rails 5 application with ActionCable be deployed on Windows?可以在 Windows 上部署带有 ActionCable 的 Rails 5 应用程序吗?
【发布时间】:2016-08-12 15:16:07
【问题描述】:

我有一个 Rails 5 应用程序,计划部署在 Linux 上,但因为我们需要一些访问非常特定的仅限 Windows 的软件,所以我需要将它部署在 Windows Server 2012 R2 上。我的软件堆栈(或混合)应该是 Nginx/Puma/Rails/PostgreSQL/Redis。除了 Puma 之外,Windows 上的所有东西都为我安装,Rails 文档说我需要 Puma for ActionCable。

如何让 Puma 在 Windows 上运行?我已经看到并尝试了 sn-ps 的尝试,我也看到并尝试了 sn-ps 不做的事情,例如在守护程序模式下运行,因为不支持 fork()。关于如何让 Puma 使用 Rails 应用程序在 Windows 上工作,有人有一套可重复的说明吗?

或者,如果 Puma 不是 Windows 的入门者,是否有可重复的替代方法将带有 ActionCable 的 Rails 5 应用程序部署到 Windows Server 主机(例如 Windows 2012 R2)?

【问题讨论】:

    标签: production-environment windows-server-2012-r2 ruby-on-rails-5 puma actioncable


    【解决方案1】:

    根据 github 页面中的readme file,请记住以下几点:

    • 不支持守护程序模式。所以注释掉/删除以下,如果有这样的行。

      daemonize false
      
    • Workers 不能在 Windows 中工作,因为它不支持进程。我们希望工人是“0”。所以注释掉以下几行:

      workers 2        # The default is "0"
      preload_app!
      
    • 服务器套接字在重新启动时不是无缝的,它们必须关闭并重新打开。这些平台无法将描述符传递给暴露给 ruby​​ 的新进程。

    • 不要使用 unix 套接字,而是将服务器绑定到“tcp://”。所以注释掉任何如下所示的行:

      bind 'unix:///var/run/puma.sock'
      bind 'unix:///var/run/puma.sock?umask=0111'
      

      改为使用以下内容:

      bind "tcp://127.0.0.1:4001"
      # You don't have to if you don't need to specify a port 
      # since the default is "tcp://0.0.0.0:9292"
      
    • 如果您在启动 rails 服务器后看到任何 http 解析错误(格式错误的 http 请求),请尝试 this answer。如果不起作用,则从 config/environments/production.rb 或 config/environments/production.rb 中注释掉这一行(取决于您要运行 Puma 的环境)

      config.force_ssl = true
      

    puma.rb 文件可能如下所示:

    worker 0     # Not necessary. The default is "0"    
    
    threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
    threads threads_count, threads_count
    
    bind "tcp://127.0.0.1:4001"    # Not necessary. Default is "tcp://0.0.0.0:9292"
    
    environment ENV.fetch("RAILS_ENV") { "development" }
    
    plugin :tmp_restart
    

    最后运行bundle exec puma -C config\puma.rb,它应该可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多