#8 楼 @southwolf 的确,我目前用的 ruby 1.9.2 就是用这个方法才装上的,为此我还花了点时间研究了一些 C 编译环境,这里有一张图片,解释 GCC,LLVM 和 Clang 我认为最为清楚。
~ $ rvm requirements
Notes for Darwin ( Mac OS X )
For Snow Leopard: Xcode Version 3.2.1 (1613) or later, such as 3.2.6 or Xcode 4.1.
[ Please note that Xcode 3.x will *not* work on OS X Lion. The 'cross-over' is Xcode 4.1. ]
You should download the Xcode tools from developer.apple.com, since the Snow Leopard dvd install contained bugs.
You can find Xcode 4.1 for OS X Lion at:
https://developer.apple.com/downloads/download.action?path=Developer_Tools/xcode_4.1_for_lion/xcode_4.1_for_lion.dmg
** Lion Users: Xcode Version 4.2.x for OS X Lion works only for ruby 1.9.3-p0 (or higher).
It currently fails to build several other rubies and gems, as well as several Homebrew and
Macports packages. Xcode Version 4.1 (4B110) works.
** NOTE: Currently, Node.js is having issues building with osx-gcc-installer. This is _not_ an RVM issue. This is
because Node.js depends on the Carbon headers. ox-gcc-installer does not install these to the system.
This issue only affects users using osx-gcc-installer, and not Xcode. The only fix is to install Xcode over osx-gcc-installer.
For MacRuby: Install LLVM first.
For JRuby: Install the JDK. See http://developer.apple.com/java/download/ # Current Java version 1.6.0_26
For IronRuby: Install Mono >= 2.6
For Ruby 1.9.3: Install libksba # If using Homebrew, 'brew install libksba'
To use an RVM installed Ruby as default, instead of the system ruby:
rvm install 1.8.7 # installs patch 352: closest supported version
rvm system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system.gems # migrate your gems
rvm --default 1.8.7
#2 楼 @KennX 那到不必,最近我重新装过一遍 Lion,也是被这个问题折腾了好久,很可能是用 XCode 编译出来的 ruby-1.9.2-p290 的问题,目前也没有完全搞定,我已经下载好了 XCode 4.1,逼急了我就把 XCode 的版本降级回去。你可以按照这篇文章里面的方案先试试看: http://rors.org/2011/10/25/compiling-ruby-on-a-fresh-lion-install.html
你倒不如完整贴出 console 里面的 log,从执行开始一直到结束。
gem install bundler rails
安装过程中会安装所有的依赖包,而有些 gem 包是带有 C 扩展的,而你遇到的可能是环境依赖问题或者是编译环境的问题,你安装的是 XCode 4.2.1 么?给出你的 gcc 版本信息
gcc -v
新版本的 XCode 4.2.1 移除了 gcc , 默认使用 llvm,这个有可能是问题的根源,为了兼容性考虑,现阶段最佳方案是安装 XCode 4.1 而不是最新版本。
本帖子将在 Topic 首页右侧的“置顶栏目”中放置一周。
这周工作任务有点紧张,可能来不及准备一个技术话题,我帮你问问,顺便推广下。
#1 楼 @huacnlee 在转向之前,我看了一下,是指向这个网站: http://wuit.com/
我还真没有办法举出一个反例,能够证明还有人比你的专业更对口啊。。。。
哈哈,欢迎!
要 wiki 权限的人,都在这里跟帖吧,我打算计划每天固定十几分钟上来更新 wiki,持续为社区作贡献。
#4 楼 @huacnlee 在官方提供的 init.sh 脚步中,是这样判断的:
upgrade)
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
then
n=$TIMEOUT
while test -s $old_pid && test $n -ge 0
do
printf '.' && sleep 1 && n=$(( $n - 1 ))
done
echo
if test $n -lt 0 && test -s $old_pid
then
echo >&2 "$old_pid still exists after $TIMEOUT seconds"
exit 1
fi
exit 0
fi
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
$CMD
;;
不过我还没有在本机测试过,我现在仍然采用手杀,晚上找个时间我试试看。
@huacnlee 其实这个问题在我的本机开发中我也遇到了,你的做法是对的,先用 USR2,当新的 master process 启动好了以后,需要给原有的 master process 发送一个 QUIT singal,对于这个流程官方网站解释的非常清楚: http://unicorn.bogomips.org/SIGNALS.html (Procedure to replace a running unicorn executable)
关于自动化这个流程,可以参见 Unicorn 的官方 example: https://github.com/defunkt/unicorn/blob/master/examples/init.sh
btw: 我用
pstree -s unicorn
来查看 unicorn 的新老进程的状态
#1 楼 @aNdReW_Qx 我也在上海,能跟你交换一下 Gtalk 么?我希你们能有时间的话,我去拜访你们。我的 GTalk:
lgn21st[at]gmail.com
touch tmp/restart.txt
其实也能实现优雅的重启 Unicorn 进程。不过我在想的是服务器上跑的不仅仅只有 Rails server,还有数据库,redis,以及 resque 等等后台进程,跑一个 monitor 来监控这些所有的后台 Services,并自动完成 deploy 后重启。
Passenger 和 Thin 以及 Unicorn 背后的 Philosophy 和 Architecture 不同,就单机 VPS,小网站而言,Passenger 没有什么不好,不过我更认可 Unicorn 用 Unix Domain Socket 来完成进程间通讯,Loading balance 基于 OS 内核调度来实现,fork 一个 worker processor 出奇的快,配合 god 或者 monit 监控并发送 singal 来管理/切换服务器进程非常平顺,然后一切都尽在 Capistrano 掌控之下。
#7 楼 @KennX 关于服务器部署,Ruby-china.org 就是一个 Nginx + Unicorn 的例子,如果你想要更加直观的了解这个方面的细节,我推荐 Railscasts.com 上的一个 Pro 的视频教程,非常好,推荐付费订阅 http://railscasts.com/episodes/293-nginx-unicorn
新的 Dropdown 按钮看起来相当不错,不过我个人的经验是,如果使用了 Bootstrap,只使用默认 style 或者小范围修改非常方便,如果需要基于 Bootstrap 实现一套完全不一样的 Style,就不那么方便了。
恭喜,第一篇招聘帖,这里的 Rubyist 都非常靠谱,相信会有越来越多的人看到招聘信息。 @huacnlee 我感觉我们在处理换行的时候有些问题,你看同样一篇帖子,在 v2ex 的排版就比较正常:http://www.v2ex.com/t/21741
恭喜你,你的测试通过了 :-)
同意继续使用盛大云得 MongoIC 服务,盛大云背后有上百人得运维团队,相信他们后面得服务会越做越好。