RVM 附带了一个方便的包装生成器,可以为 init.d 脚本创建中间加载器。这允许您使用特定的 Ruby 版本和 gemset 加载服务。我这样使用它(安装 Thin Gem 后):
1 - 为 Thin 创建 init.d 条目
sudo thin install
2 - 设置一些默认值
sudo /usr/sbin/update-rc.d -f thin defaults
3 - 为您的 Rails 应用程序生成启动配置
sudo thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 4 -e production
4 - 生成rvm包装脚本
rvm wrapper <rubyversion>@<gemset> bootup thin
5 - 如果您使用的是全局宝石集,则可以使用
rvm wrapper ruby-1.9.2-p125 bootup thin
6 - 编辑精简初始化
sudo nano /etc/init.d/thin
7-更改原来的loader
DAEMON=/usr/local/rvm/gems/ruby-<rubyversion>-<rubyrevision>@<gemset>/bin/thin
8 - 改为指向 rvm 包装器
DAEMON=/usr/local/bin/bootup_thin
9 - 启动它
sudo service thin start
如果您运行多个应用程序,只需为每个应用程序生成一个启动配置 yml 文件;当启动 Thin 时,/etc/thin/ 中的所有 yml 文件都会被解析。更多信息请点击这里:
http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 注意:这是链接到修订版,最新版本已被编辑为空。考虑查看不带?rev=...
在 url 中,当前版本可能会回来并且可能是最新的。
HTH
2013年奖金编辑
虽然我不再在生产中使用 RVM,但 Thin 仍然是我选择的生产服务器,并且我仍然使用上面的步骤 1-3 来开始。但它生成的默认配置可以进行一些调整,以下是我的一些调整:
将 Thin 运行的用户和组设置为:
user: www-data
group: www-data
删除端口配置并切换到使用套接字(更快一点):
# port: 3000
socket: tmp/sockets/<appname>.sock
告诉 Thin 一个一个地重新启动实例,而不是在再次启动之前将它们全部关闭(滚动重新启动):
onebyone: true
给服务器进程一个“标签”来帮助识别它们(在 ps aux 等中):
tag: <appname>