部署 unicorn,passenger,thin 分别优势?

QueXuQ · 2012年09月28日 · 最后由 QueXuQ 回复于 2012年10月04日 · 8721 次阅读

什么是 Unicorn

Unicorn 是一个 Ruby 的 HTTP 服务器,支持 Rack 和 Mongrel,Thin 类似,支持所有 Rack Application。Unicorn 用了 Mongrel's Ragel HTTP paser,不同的体现在架构和设计理念上。Mongrel 使用 thread,mongrel daemon 接收到 HTTP 请求后,启动线程处理请求,Unicorn 则使用线程模型,用 pre-fork 提高性能。有兴趣的可以读这篇:I like Unicorn because it's Unix。

什么是 Passenger

Passenger 是一个 Rails 应用服务的管理工具,可以统一管理 Rails 进程的数量、生命周期、请求队列等等。

什么是 thin

thin 是个合成品,分别使用了来自 mongrel 的解析器,Every Machine 的网络 IO 库,Rack 的 web 服务器和 Ruby 框架的接口。 也就是说 thin 有 mongrel 的速度和安全性,有 Every Machine 的高伸缩性,性能和稳定性。

但是他们究竟有什么不一样了? 什么时候我们该选择什么?为什么呢?我找了好久都没有找到答案,更多的就是说 unicorn 好,但是好在哪里是否有很多在使用着的人也不知道呢?

可否有那么高人为我们指点江山!

我就说 passenger 好在哪:管理方便,touch 一下 tmp/restart 就自动重启了,企业版提供滚动重启、异常回退等功能。

@Rei 用 Passenger 比较多?我自从进了 Ruby 的门直接患上了选择困难综合症,现在一旦有选择,必定要到网上翻遍各种评论和测试,然后每种都要试下才舒坦,最近刚好在纠结部署方式,搞得代码都没心思写了。

那是部署的时候考虑的时候考虑的事吧,先写代码

#2 楼 @PrideChung 我个人喜好而已。Passenger 可能不是最快,也不符合 *nix 风格,但是简单易用。我觉得越易用的东西越好扩展,一想到 unicorn 和 thin 部署每个应用的时候都要对每个进程发信号我就觉得恐怖。

#4 楼 @Rei 我也一直在用着 Passenger,但是现在各个人说用 unicorn,正捉摸是否换。但是都不知道有和优势和缺陷。

unicorn 唯一吸引我的地方就是,多个 Ruby 版本的应用可以共存

Passenger Stand Standalone 貌似不错哦

#7 楼 @fresh_fish

$gem install passenger
$sudo apt-get install libcurl4-openssl-dev  #安装SSL gem
#遵从passenger官方安装指南(http://www.modrails.com/install.html)的提示,开始安装:
$rvmsudo passenger-install-nginx-module     #都是默认选择,选择1,安装目录也选择默认 /opt/nginx/

这样安装的是什么 passenger?

@QueXuQ 这就是 standalone 的吧;

#8 楼 @QueXuQ #9 楼 @leomao10

这是 nginx-module。

standalone 这样装 passenger start

#10 楼 @Rei 竟然还有这样的东西,真心不是一般的多。请问你从哪里获取这些新玩意的咨询的呢?

@Rei 晕,看来之前的理解一直都有问题哈;多谢指正

#12 楼 @Rei 恩。谢谢。看到了。 “从文档的多少来说,passenger 的开发者应该是推荐用服务的方式运行生产环境,standalone 用来跑开发环境。”

需要 登录 后方可回复, 如果你还没有账号请 注册新账号