带有 ActionCable 的 Rails 5 应用程序可以部署在 Windows 上吗?

2024-03-04

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

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

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


根据自述文件 https://github.com/puma/puma/blob/master/README.md从 github 页面来看,需要记住以下几点:

  • 不支持守护进程模式。因此,如果有这样的行,请注释掉/删除以下内容。

    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 请求),请尝试这个答案 https://stackoverflow.com/a/28388372/5715870。如果它不起作用,请从 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它应该有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 ActionCable 的 Rails 5 应用程序可以部署在 Windows 上吗? 的相关文章

随机推荐

  • html 或 java 脚本代码在硬盘中创建文本文件

    请有人给我一个代码来在硬盘驱动器中创建一个文本文件 结果应该是一个html文件 当双击 html 文件时 它需要在硬盘驱动器 本地 的给定路径中创建一个文本文件 谢谢 出于安全原因 浏览器中常规 HTML 页面中的 JavaScript 不
  • 构造函数中的默认参数--C++

    我有一个 C 类 其中有一个构造函数char char ostream 我想提供一个默认值ostream cerr 这是在标题或 cpp file 您需要将参数设置为参考参数 您不应该尝试复制std cerr 您可能需要在头文件中指定默认参
  • 更改 WPF 中单个/活动窗口的系统语言

    WPF 中是否可以仅更改一个窗口的系统语言 我知道关于InputLanguageManager但我认为它会改变整个系统的语言 InputLanguageManager 完全符合您的要求 它更改当前应用程序的键盘布局 操作系统为每个正在运行的
  • 有没有办法循环遍历 r 中的线性模型的列名称(而不是数字)?

    我有一个包含 40 个数据列 40 种不同的营养素 的数据表 还有用于绘图数字和因子的附加列 我想自动循环每个列名称并为每个列生成一个线性模型和摘要 数据列从第 10 列开始 for i in 10 ncol df for loop ove
  • 将带有 json 的 numpy 数组发送到带有请求的 Flask 应用程序

    使用请求 我需要在单个帖子中将带有 json 数据的 numpy 数组发送到我的 Flask 应用程序 我该怎么做呢 转换 numpy 数组arr到 json 时 可以将其序列化 同时保留维度json dumps arr tolist 然后
  • LIKE '%...' 如何在索引上查找?

    我期待这两个SELECT具有相同的执行计划和性能 由于有一个前导通配符LIKE 我期望进行索引扫描 当我运行这个并查看计划时 第一个SELECT行为符合预期 通过扫描 但第二个SELECT计划显示索引查找 并且运行速度快 20 倍 Code
  • 将散列数据作为散列的密钥传递再次返回不正确的结果

    我正在创建一个将使用 GAS 访问 AWS 服务的脚本 我使用实用程序库中的哈希函数来执行创建 v4 签名所需的所有哈希 这些函数似乎能够成功地对数据进行一次哈希处理 但尝试将哈希数据传递到参数中会产生不正确的结果 还有其他人遇到这个问题并
  • 在swift中实现函数

    我是 swift 的新手 试图实现一个简单的函数 该函数将最小和最大数字作为输入 并返回一个包含所有限制数字的数组 我收到错误 错误 对泛型类型 Array 的引用需要 中的参数 我可以知道我错过了什么吗 func serialNumber
  • Scikit-learn、KMeans:如何使用 max_iter

    我想了解类中的参数 max itersklearn cluster KMeans http scikit learn org stable modules generated sklearn cluster KMeans html 根据文档
  • Haskell:如何停止程序打印向左或向右

    我用 haskell 制作了一个计算器 我在 GHCi 中运行它 然而 由于最终的数字可以是整数或双精度数 我已经进行了类型声明 calc String gt Either Integer Double 然而 函数的输出总是在其前面有左或右
  • C++ 判断类是否具有可比性

    我或多或少是Java程序员 所以这可能是一个愚蠢的问题 但我没有找到任何简单的解决方案 我在 C 中有一个这样的类 template
  • JavaScript 排序方法处理大写字母

    注意到 JavaScript 可能有些奇怪的地方sort 方法 给定以下数组 var arr Aaa CUSTREF Copy a template Copy of Statementsmm Copy1 of Default Email T
  • 在 ColdFusion 中维护出站 TCP 连接池

    我希望从 ColdFusion 应用程序中大量使用 RESTful API 我不是 CF 专家 但我预计重复的 cfhttp 调用将成为瓶颈 因为我相信每次调用都会导致建立连接 发送请求 收到响应和断开连接 我很好奇 有没有办法维护一个连接
  • 在批处理文件中定义和使用变量

    我正在尝试在批处理文件中定义和使用变量 看起来应该很简单 echo off set location bob echo We re working with location 我得到的输出如下 We re working with 这里发生
  • jQuery Mobile 视口在 Windows Phone 中无法工作

    我正在 WindowsPhone 中测试 jQueryMobile 但视口无法正常工作 有一个解决方法这一页 http forum jquery com topic problem with virtual viewport size on
  • FireStore Tasks.whenAllComplete 与协程

    我想同步实现这段代码 但job join deferred await和火力基地await 不工作 有谁知道解决方案吗 CoroutineScope Dispatchers Main launch val job launch Tasks
  • 如何使用 System.Net.HttpClient 发布复杂类型?

    我有一个自定义复杂类型 我想使用 Web API 来使用它 public class Widget public int ID get set public string Name get set public decimal Price
  • 如何使用复选框更改 QGraphicsView 背景

    在此代码中 更改了QGraphicsView背景 现在当我检查 true 时我需要更改背景checkBox 当我设置为checkBox去检查true我需要像这段代码一样设置背景 当我设置时checkBox去检查false 我需要设置QGra
  • Tensorflow 2 抛出 ValueError:as_list() 未在未知 TensorShape 上定义

    我正在尝试在 Tensorflow 2 0 中训练 Unet 模型 该模型将图像和分割掩模作为输入 但我得到了ValueError as list is not defined on an unknown TensorShape 堆栈跟踪显
  • 带有 ActionCable 的 Rails 5 应用程序可以部署在 Windows 上吗?

    我有一个 Rails 5 应用程序 我计划将其部署在 Linux 上 但由于我们需要一些访问非常特定的仅限 Windows 的软件 因此我需要将其部署在 Windows Server 2012 R2 上 我的软件堆栈 或组合 应该是 Ngi