【问题标题】:Deploy Ruby on Rails application in a Windows Server 2012在 Windows Server 2012 中部署 Ruby on Rails 应用程序
【发布时间】:2015-10-22 10:06:55
【问题描述】:

我已经阅读了有关如何在 Windows 中部署 Ruby on Rails 的文章,其中一些是关于 Windows Server 和 IIS 的。 我在我的开发人员电脑中下载了 Rubyinstaller 及其 Dev-Kit 来开发我的应用程序,但是我不知道如何将它与 Apache 一起使用,而不是嵌入 WEBrick 服务器。有人指出使用Passenger Gem在性能方面不是一个好主意,但我发现的那些帖子是2012年之前或更早的。

我想知道如何在使用 Windows Server 2012 和 XAMPP (Apache) 的生产服务器中部署 RoR 应用程序(Rails 4.x、Ruby 2.x),而不会破坏大部分当前配置,最好不使用 IIS。

我还发现了一个带有 Ruby Stack 的 Bitnami 安装程序。我可以自定义安装,取消选择我已经拥有或不需要的那些组件,例如 Git、PHP、MySQL 等,但是在此安装程序中安装 Apache 是强制性的,所以,有没有机会避免破坏我当前的安装/ Apache 的配置(由另一个 Bitnami XAMPP 安装程序安装)?我已经安装了一个不想破坏的 Apache/PHP。

【问题讨论】:

  • this answer 有帮助吗?
  • 主要是。我让它在本地工作,但这可能会破坏我当前的生产配置。
  • 您能详细说明一下吗?什么可能打破?还是您真的不知道什么会损坏?
  • 我通过设置rails_env = production 环境变量和所有这些东西在我自己的本地机器上模拟了一个生产环境。我必须为 Thin webserver 的反向代理配置一个 VirtualHost,但这破坏了配置并使其他 PHP 站点无法访问。我不得不为 PHP 站点创建另一个 VirtualHost。两个站点都以这种方式工作,问题在于生产服务器 PHP 应用程序只能通过 mysite.com/myapp 访问,没有额外的配置,没有不同的端口,我担心配置可能会阻止它。
  • 它是否有理由必须在 apache 下运行?我想你不需要加载平衡或类似的东西?最简单的事情是将 Rails 作为 Windows 服务运行,您只需要注意不要使用那些已经被 IIS 或 Apache 使用的端口。我以这种方式与 Tomcat 和 IIS 一起运行了几个 Sinatra 应用程序。我曾经在 Bitnami 堆栈中的 apache 下配置 Sinatra 应用程序成功,但我必须进行很多实验。

标签: ruby-on-rails ruby windows apache


【解决方案1】:

根据您的要求,我将在 azure/windows 服务器上的 Docker 中运行该应用程序。

或者试试 puma,使用这个 windows 安装教程https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows

【讨论】:

  • 我不太喜欢在服务器中运行虚拟机的想法...:/
  • 介意我问为什么吗?我们运行 docker 并且非常喜欢。它使部署变得非常容易,并且具有良好的安全性。也就是说,它并不适合所有人。
  • 我从未使用过 Docker,我喜欢在不同操作系统中使用相同堆栈的想法。我在过去的一个项目中与使用 MacOS X 的开发人员一起工作,我在 CentOS 服务器上进行测试。当我后来听说 Docker 时,我认为这在当时可能会有所帮助。我想在未来的项目中实现它,但在其他服务器中......问题是我喜欢 Docker 的特性是你不需要虚拟机,在 Windows 中不存在。当您安装 VirtualBox 之类的东西时,您必须在安装后重新启动主机。我无法在我们的生产服务器中执行此操作。
  • 公平。所以,我用过passenger,很不错,我也喜欢puma。
【解决方案2】:

理想情况下,您只需使用 Docker 并在 linux 容器中运行应用程序即可避免所有潜在问题。但是,由于 Windows Server 2012 缺乏对容器的原生支持,我认为您不能让 Docker 直接在此 Windows 服务器上运行。

因此,相反,我建议在两者之间添加一个额外的层 - 部署一个安装了 Docker 并包含一个包含您的应用程序的 Docker 映像到 Windows 服务器的 linux VM。

【讨论】:

    【解决方案3】:

    我认为合适的方法是在 IIS 中托管您的应用程序。唯一的问题是 IIS 没有本地方式来托管 Rails 应用程序。选项 1 - 我们在使用 Mongrel 的现有 IIS Web 基础架构上使用 Rails:http://www.napcsweb.com/howto/rails/deployment/railsonIISWithMongrel.pdf

    或者

    选项 2 在没有 IIS 的情况下使用 Mongrel:

    1. 安装 rails 和 mongrel gem install rails –include-dependencies gem install mongrel –include-dependencies

    2. 服务 rails 应用程序

    rails app 要么 ruby server 0e production -p 4001 检查您是否可以访问该网站 按 ctrl-c 退出

    1. 将 Mongrel 安装为服务

    mongrel_rails_service install –n rails_app –p 4001

    从 services.msc 启动 rails_app 服务

    从原始的 Rails 文档中,您有更多选项可以在生产环境中托管您的 ruby​​ 应用程序: http://weblog.rubyonrails.org/2006/5/11/deploying-rails-on-windows-servers/

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2012-06-21
      • 2012-09-15
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 2018-06-10
      • 2016-01-06
      • 1970-01-01
      相关资源
      最近更新 更多