【发布时间】:2021-10-08 15:54:52
【问题描述】:
生成动态内容的网络应用程序需要两个组件:
- Web 服务器 - 主要通过在提供内容的同时处理 HTTP 请求和响应与客户端进行通信。
- 应用服务器 - 另一方面,通常位于 Web 服务器后面。如果网络服务器无法通过静态文件生成请求的内容,则到达应用服务器生成动态内容。
软件示例
Web 服务器和应用程序服务器作为典型 Web 应用程序中的组件一起工作。
在生产环境中运行 Rails
当使用乘客在生产环境中运行 Rails 应用程序时,一些选项包括:
- Running Passenger 作为独立解决方案
- 将 Passenger 作为应用服务器运行,Apache/Nginx 作为 Web 服务器运行
在开发中运行 Rails
在开发中运行 Rails 应用程序时,默认配置为使用 Puma - see Ruby Docs。 Puma 是一个应用服务器。为什么默认情况下,在 Rails 中,Puma 可以自己运行整个 Web 应用程序?在应用程序堆栈中没有提到像 Nginx 或 Apache 这样的 Web 服务器。
我不明白这怎么可能。有人可以解释一下吗? Puma 一直是应用服务器,而不是 Web 服务器……
提前致谢。
【问题讨论】:
-
“Puma 一直是应用服务器,而不是 Web 服务器”? puma 的创造者们似乎有不同的看法。引用
puma README:“Puma:为并发构建的 Ruby Web 服务器” -
@spickermann 感谢您的参考。看起来是这样的,尽管这个领域的大多数软件最初都是作为应用程序服务器或 Web 服务器开始的,但它的创建者确实在推动独立的解决方案(Web 应用程序服务器)。
标签: ruby-on-rails ruby nginx passenger puma