【发布时间】:2015-12-02 03:19:55
【问题描述】:
在 php 中,你只需要 apache 或 nginx。为什么已经安装了 nginx 的 ruby rails 还需要 puma 或 unicorn 之类的东西?
【问题讨论】:
-
你可以在 nginx 代理后面使用独角兽。它可以帮助您处理许多请求
标签: ruby-on-rails ruby nginx unicorn puma
在 php 中,你只需要 apache 或 nginx。为什么已经安装了 nginx 的 ruby rails 还需要 puma 或 unicorn 之类的东西?
【问题讨论】:
标签: ruby-on-rails ruby nginx unicorn puma
我在这里找到了一篇很棒的文章 https://www.rubyguides.com/2019/08/puma-app-server/
我还用一个非常简单的 Web 服务器、应用程序服务器和 Web 框架的职责列表制作了这个图表
【讨论】:
这并不完全正确,要使用 apache 运行 PHP,您将需要 apache mod_php 或将其作为 FastCGI module 运行。对于 Nginx 是后者seems to be the norm。
对于 Ruby,Phusion Passenger 填补了这个角色,并支持 apache 和 nginx。在 apache 上,它像 mod_php 一样作为插件模块运行。对于 Nginx 我不确定。
但是,您可能希望使用专用的应用程序服务器来运行您的 ruby 应用程序。这就是 Unicorn、Puma 等的用武之地。没有什么可以阻止您为 php 进行类似的设置,但它不太常见。
在许多情况下使 php 更易于部署的另一件事是大多数发行版和服务器安装都带有 apache 和 nginx 已经设置为处理 php,而您需要为 ruby 自行设置。
一旦设置好Passenger,部署ruby 应用程序几乎(但不完全)就像部署php 应用程序一样简单。
【讨论】:
由于您使用过 php 后端,我假设您熟悉 modphp 或 fcgi 模块。它们是编译和运行 php 代码的实际引擎。 Ruby on rails 不能像 php 一样独立运行。所以需要像 puma 或 phusion 乘客这样的东西来运行它。它们被称为应用服务器。 您可以使用应用程序服务器直接为网站提供服务,但这是推荐的方法。有更合适的替代品,比如 nginx,就是为了这个目的而发展起来的。
【讨论】: