之前的标题让部分网友不是很舒服,所以改了一下,在此也给大家说声对不起。
话说 Rails 一个理念就是 Convention over configuration,这确实不错,这也是 Rails 被用其它语言复制这个框架最重要的因素。我对 Rails 也关注了一段时间,但我发现在网站部署方面和整体架构方法,这个理念没有那么好的体现。
我在这里最想得到的答案就是,有没有一个在 Rails 方面经验十分朋友能够给出一个方案,也就是约定一下,向你学习,你怎么做,我们就怎么做,只要把一个不错的网站开发出来就 OK 了。当然,这里指的不错的网站,从访问量上来看,至少也算是个大网站吧。
希望大家来讨论一下。
Rails 部署对于很多刚刚接触的人来说确实是个大问题,得学会 Nginx 配置,Linux 配置,得理清 Linux 权限和 PATH 看起来什么时候得出个简单快速的部署方式。 目前 WIKI 里面推荐的 Nginx + Passenger 部署方式从大家使用的反馈来看都还是问题多多
是我的表达能力的问题,看这位的 ID 号很前,我想应该是位高手,我再解释一下我的问题,如果我还说不清楚的话,我再解释。 主要就是希望有经验的朋友,能分享一个相对很好的方案,大家跟着学,跟着做就可以了。例如:你有用 Rails 开发比较大型网站(不要问什么是比较大型,任感觉吧)的经验,给大家分享一下: 1、用的什么开发工具(你用什么,我买什么); 2、在什么环境下开发(操作系统),我跟你一样; 3、团队如何配合(如果有可能的话,尽量差不多); 4、部署方案是什么(跟你搞一样的) 5、开发过程中有哪些要注意的。 6、。。。。
具体一点,就当一个“最佳方案”给出来,约定约定,大家跟着你的方法来就可以了。当然,我不是反对更好的方案,也不是说其它方案都没有这个好。只是希望不要有太多的选择。
我觉得我应该给 Rails 做一点点辩解。
关于 Rails 所说的 Convention over configuration(简称 COC)其实是有个界定范围的。
对于 Rails,我认为这个范围就限于 Framework 本身,是gem install rails
安装的所有 gems。COC 给你最大的好处是节约时间,从而提升开发效率,我给你举个 Rails 框架内的例子,如果你要开始一个 Rails 项目,你是否需要先考虑用什么 template engine 呢?是 haml 好还是 slim 好呢?你是否需要先试用每个模板引擎后给出一个评测报告,然后你的团队根据你的评测来决定到底大家应该用那一个模板引擎?实际情况是不必,Rails 已经在 Framework 给你预置了ERB
,虽然有人觉得 erb 不是最好的选择,但是 erb 却是一个非常不错的 start point,你可以在将来根据具体的需求来决定是否换用其他的模板引擎。同样的 COC 还表现在 ORM,Routing,代码组织结构,gems 加载顺序等等。Rails 给你在 90%以上的情况下都适用而不需额外去做技术选型的框架基础,让你将注意力集中在业务本身。
记得在 Rails 之前,如果要用 Java 开发一个 web 项目,光是技术选型,项目框架搭建和模块划分,就足以让开发团队讨论很久很久了。
以上是 Rails 框架范围内的 COC,那么 Rails 框架范围外的 COC 呢?Rails 并不要求你一定要用 Mac 或者 Linux,Rails 并不要求你具体用哪个 Editor,Rails 同样也不直接给你“网站部署方面和整体架构方法”的 COC,怎么办呢?我们有社区啊,Rails 的 COC 其实一直在影响整个社区,比如什么系统最适合开发 Rails?什么编辑器最好用?怎么部署才是最佳实践,已经有了这么多的讨论,只要你保持对社区的关注,那么你完全可以自己佐证出一套大家普遍接受采纳的方案,那么这个方案就是一个不错的 start point,比如你想找个 Editor,看到 Vim 和 Emacs 的讨论,而且如果两边的拥护一样多的话,你完全不需要观望直到大家有了个统一的结论说 Vim 一定就比 Emacs 或者反之,随便选一个都是 good start point。如果是部署方面,你如果就从 ruby-china.org 的部署方案本身开始,绝对是一个 excellent start point. 所以你的问题就请直接参照这个论坛的部署方案吧。
另外关于“大网站”的话题,除非你已经有了明确的需求和用户数量(这种情况其实很少,试问多人上来做个 Rails 网站就已经是个大网站的?)。网站都是慢慢积累用户,从小网站逐渐发展成大网站的,所以一开始就寻求 Rails 的大网站解决方案,思路是不对的,当你足够了解了 Rails 的开发和部署方面的知识,怎么应付大网站的访问量,以及架构方面的调整,是水到渠成的事情。
你们观点“关于 Rails 所说的 Convention over configuration(简称 COC)其实是有个界定范围的。”,我非常同意。可能我的问题确实没有问好。我的核心问题只是觉得选择不要太多了,对于刚接触的朋友,能有一个约定的“最佳方案”,蛮好的。
关于大网站,我的意思不是说如果把一个网站运营成一个大网站,只是如果现在有一个网站访问量已经相对比较大了,想用 Rails 改版或者说支持以后的发展。
#7 楼 @huacnlee 全部改掉了。 #8 楼 @kevin__liu 关于大网站,其实是一个怎么“优化”的话题,没有统一的方案,具体思路是通过架构调优和运用 cache 技术,以及利用 NoSQL 数据库的 scalability 能力提升单机的吞吐量,然后增加服务器通过集群的方式解决大访问量问题,这个在这个社区里面讨论的不多,但是 Google 的话,能找到很多资料。
以下是我的方案 1、开发工具 Sublime Text 2 2、操作系统 Ubuntu Desktop 10.10 3、团队配合 Git Redmine Email Gmail Gtalk GoogleAppMail Github 4、部署方案 Ubuntu Passenger Nginx Mysql 5、前台技术框架 JQuery,JQueryUI,Bootstrap 6、开发过程中要注意的,永远要把测试放在第一位,要不断的重构代码,不断的读新闻,不断的升级。
#7 楼 @huacnlee 我很奇怪,为什么不能叫 RoR。 你看 Wiki 上说“Ruby on Rails, often shortened to Rails or RoR” http://en.wikipedia.org/wiki/Ruby_on_Rails
最佳方案:
如果@jean对我的问题理解的过于偏的话,请你原谅是我没有表达清楚,凡事有个度,这点相信大家都是知道的。弯路可以走,但如果一开始就是弯路,相信会把太多的人挡在门外。如果你要讲这是这些人不够坚持,失败了就退缩,在这里讨论这些问题,我认为不够有意义。占用大家太多看水贴的时间了。当然,适当幽默一下还是蛮好的。
这是 robbin 推荐的一篇关于 RoR 的部署方案,含性能测试对比图,http://robbin.iteye.com/blog/212684 摘选其中的一句:“Lighttpd+FastCGI > Lighttpd+Mongrel > Nginx+Mongrel > Apache+Mongrel > Ngignx+FastCGI > Apache+FastCGI 其中 Lighttpd+FastCGI 是性能最佳方案,而 Apache+FastCGI 是性能最差方案。”
感觉楼主希望的就是在这里得到“答案”,比如学习 rails 的最佳方法,最佳配置,最佳... 但我觉得这不是 true 和 false 的问题,别人最多能讲的是自己的解决办法,这并不是答案。 “你怎么做,我们就怎么做”,这本身就是一种错误的学习方法。
Thin 相比 Passenger 的有点是,独立允许,可以很容易搭建多台服务器做成一个集群 和 Unicorn 目前没有看法 其实 Thin, Passenger 和 Unicorn 都差不多,就看你习惯于用来那个 这个三个是目前 Rails 最佳的部署后端。 前面跑个 Nginx
我觉得吧,每种语言,每种框架都有他最适合的环境,Rails 框架是重约定的框架,但是很多约定要根据自己的应用场景去做,没人能把各种场景都约定好,如果是这样那就不用开发了,大家看约定手册就好了;比如说,做网站一个是要在框架中增加 cache 层,减轻数据库方面压力,另外一种思路是静态化,思路不同效果也不一样。最好的做法是去接触各种和网站有关的技术,经过考察和筛选后,确定自己采用的方案,如果这些都没办法做到,还必须有个牛人来帮你规划,那还要你干嘛,公司直接招他去好了。
对于我的这个提问,可能让一部分比较敏感的朋友有点不舒服,得到了你们批评,我很乐意接受了,我本意是希望有大牛能够把宝贵的经验与时间拿出来,让大家快速进步,但现在看来是不太现实的,可能是因为国内的环境不够好,大家都在分了生活而努力工作,没有太多的业余时间来分享,这个我可以理解,又或者因为大牛们性格上都很低调,不太愿意表现,这也能理解,当然,还有很多的原因,都能理解。不过,还是大部分的朋友们都表现出了分享的精神,昨天去了上海的 RubyTuesday,通过对大家的接触,就很能感受到了 Ruby 社区朋友的分享精神。 如果未来真的没有大牛站出来搞一个比较全面的系统化的讨论的化,我愿意慢慢去深入了解 web 开发的方方面面,结合自己的经验与其他私下与朋友的交流,跟大家逐步讨论出一个相对系统的解决大部分 web 开发的问题的方案与架构,特别是电子商务这块。希望社区里低调的大牛们支持,在此,先谢谢大家了。
#47 楼 @kevin__liu #49 楼 @yum2014 你们俩的问题我觉得都可以用一句话回答——“先做,发现错误再来问”,网上的答案其实已经一堆一堆了,但是你不好说谁的更“官方”,所以先根据现有网上的测试/部署方式尝试一下比较好
哇哈哈,我生活在 win 下好几年了。。。开发环境一直是 win,服务器是 centos。 貌似还没碰到啥很特别的东东,反正 git 提交的就 Rails 的代码。