什么是瘦,为什么我需要它

这是一个很低的问题,因为我从来没有真正理解它,所以我想要一个解释:

  • 什么是薄(或乘客或其他select)?
  • 瘦(或其他select)的目的是什么?
  • 为什么我需要使用Apache(或Nginx或其他选项)的Thin(或其他)?
  • 可以使用精简(或其他替代品)而不使用Apache(或其他替代品)?
  • Thin(或其他alt。)和Apache(或其他alt。)之间有什么区别?

目前, 我对这个问题的理解是有限的(可能是错误的) 。Apache是​​一个http web服务器(在这种情况下,它就像一个反向代理(?)),Thin是一个ruby web应用服务器。 为什么他们是什么样的,他们是如何工作的,有些回避我。

措辞可能是非常混乱的(例如,networking服务器与networking应用程序服务器,等等…(有点像“主机”或“主机名”可能会非常混乱))。 如果我在网上find的所有阅读材料对我来说都不是很清楚的话,我可以去哪里去发展我对“正在解决的问题的最低限度的理解”?

Thin或Passenger或WEBrick或任何其他此类Web服务器都有一个目的。 它从networking获取HTTP请求并将其传递给Rack ,并将应用程序的响应返回到networking。

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

Thin发送到Rack之后请求发生的事情一般都不是Thin的问题; 这是应用程序和应用程序开发人员的关注点。

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

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