web-server – 什么是Thin,我为什么需要它

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

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

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

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

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

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

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

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

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

转载注明原文:web-server – 什么是Thin,我为什么需要它 - 代码日志