题 什么是薄,我为什么需要它


这是一个非常noob的问题,因为我从来没有真正理解它,我想要一个解释:

  • 什么是瘦(或乘客或其他替代品)?
  • Thin(或其他替代方案)的目的是什么?
  • 为什么我需要使用Apache(或Nginx或其他替代方案)的Thin(或其他alt。)?
  • 没有Apache(或其他alt。)可以使用Thin(或其他alt。)吗?
  • Thin(或其他alt。)和Apache(或其他alt。)之间有什么区别?

在这一刻, 我对这个问题的当前(有限的,可能是错误的)理解 是...... Apache是​​一个http Web服务器(在这种情况下就像一个反向代理(?))而Thin是一个ruby web应用服务器。为什么他们是这样的,他们的工作方式有点躲避我。

措辞可能非常令人困惑(例如,网络服务器与网络应用服务器,以及其他... ...(有点像“主机”或“主机名”可能非常混乱))也在互联网上。 如果我在网上找到的所有阅读材料对我来说都不是很清楚,我在哪里可以发展我对“正在解决的问题的最小理解”?


6
2018-06-17 20:07




最初Apache服务的静态文件很好。然后apache服务于CGI,它不太好。从那时起,我们就提出了一种方法,试图解决普通的旧CGI糟透的事实。 Thin是其中一种工具。 - Zoredache
@Zoredache更多的SO答案应该以圣经的方式书写。 +1! - ceejayoz
这个问题不像我的一些同事所想的那么明显。我花了很长时间才弄清楚Ruby中的Web应用程序是如何构建的。 - Michael Hampton♦


答案:


瘦,或乘客,或WEBrick,或任何其他此类Web服务器,只有一个目的。它接收来自网络的HTTP请求并将其传递给 ,并将应用程序的响应返回到网络上。

(通常,Rack被用作使用Rails或Sinatra等框架编写的完整Ruby应用程序的一个组件。它通过自己的处理传入的HTTP请求 中间件 并确保它们被路由到正确的应用程序代码。)

Thin将其发送到Rack后,请求会发生什么变化通常不是Thin的问题;这是应用程序和应用程序开发人员的关注点。

Ruby Web服务器通常放在更传统的Web服务器(如Apache或nginx)后面的原因是为了提高性能。 Ruby Web服务器是用Ruby编写的,并经过优化以处理它所服务的应用程序堆栈。特别是,它不一定非常擅长快速提供静态资产。在通常的生产设置中,传统的Web服务器将为静态资产提供服务 Rails在部署期间或首次访问时预编译为rake任务和Thin(或您选择的服务器)将其他所有内容传递给应用程序。因此,单独运行Thin仅在开发环境中有用,因为那里的性能通常不存在问题。这不是我们想做的事情。 (通常WEBrick用于此目的,因为它是Rails应用程序的默认Web服务器。)

作为系统管理员,我们通常不关心应用程序代码,但在某些情况下,您需要与开发人员一起评估应该在给定应用程序中使用哪些可能的Ruby Web服务器。虽然作为一般规则,但从应用的角度来看,它们应该是可以互换的。


9
2018-06-20 22:19



这有助于澄清事物,真正体会到它。当你说那些网络服务器有“单一目的”时,这是否意味着它只适用于中间件? Thin还可以提供像Apache这样的静态内容吗? - agent provocateur
瘦 能够 正如我所提到的那样,服务静态内容并不像传统的Web服务器那么快。 - Michael Hampton♦