RVM 带有一个方便的包装器生成器,它为 init.d 脚本创建一个中间加载器。这允许您使用特定的 Ruby 版本和 gemset 加载服务。我像这样使用它(在安装了thin gem之后):
1 - 为瘦创建 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 - 如果您使用的是全局 gemset,则可以使用
rvm wrapper ruby-1.9.2-p125 bootup thin
6 - 编辑瘦初始化
sudo nano /etc/init.d/thin
7 - 改变原来的装载机
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 文件;当启动瘦时,/etc/thin/ 中的所有 yml 文件都会被解析。更多信息在这里:
http://wiki.rubyonrails.org/deployment/nginx-thin?rev=1233246014 注意:这是链接到修订版,最新版本已被编辑为空。考虑查看?rev=...
url 中没有 的链接,当前版本可能会返回并且可能会更新。
高温高压
2013 年奖金编辑
虽然我不再在生产中使用 RVM,但 Thin 仍然是我选择的生产服务器,我仍然使用上面的步骤 1-3 开始。但是它生成的默认配置可以做一些调整,这里是我的一些:
将瘦运行的用户和组设置为:
user: www-data
group: www-data
删除端口配置并改用套接字(快一点):
# port: 3000
socket: tmp/sockets/<appname>.sock
告诉 Thin 一个一个地重启实例,而不是在重新启动之前将它们全部关闭(滚动重启):
onebyone: true
给服务器进程一个“标签”以帮助识别它们(在 ps aux 等中):
tag: <appname>