GitHub最近发布了使用Redis的后台处理应用程序:

我让它在本地工作,但我很难让它在生产中工作.有没有人有:

  1. Capistrano部署工人的方法(控制工人数量、重新启动工人等)
  2. 部署工人将机器与主应用程序运行的位置分开,此处需要什么设置?
  3. 让redis在服务器重新启动后存活下来(我try 将其放入cron,但没有成功)
  4. 你是如何在部署中使用resque web(他们优秀的监控应用程序)的?

谢谢

另外,我在Github上发布了一个关于这个的问题,但还没有回应.希望一些大师能在这方面提供帮助,因为我在部署方面不是很有经验.非常感谢.

推荐答案

加勒特的回答真的很有帮助,只是想发布更多细节.做了很多修补才把它修好...

我也在使用passenger,但使用的是nginx而不是apache.

首先,别忘了你需要安装sinatra,这让我有一段时间感到困惑.

然后你需要建立一个目录来运行这个东西,它必须有一个公共和tmp文件夹.它们可以是空的,但问题是git不会在repo中保存空目录.目录中必须至少有一个文件,所以我制作了一些垃圾文件作为占位符.这是git中一个奇怪的特性/错误.

我使用的是resque插件,所以我在那里创建了一个目录(默认的config.ru就是这个目录).加勒特似乎在他的rails_根目录中创建了一个新的"resque"目录.任何一个都应该有效.为了我...

cd MY_RAILS_APP/vendor/plugins/resque/
mkdir public 
mkdir tmp
touch public/placeholder.txt
touch tmp/placeholder.txt

然后我编辑了MY_RAILS_APP/vendor/plugins/resque/config.ru,看起来像这样:

#!/usr/bin/env ruby
require 'logger'

$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
require 'resque/server'

use Rack::ShowExceptions

# Set the AUTH env variable to your basic auth password to protect Resque.
AUTH_PASSWORD = "ADD_SOME_PASSWORD_HERE"
if AUTH_PASSWORD
  Resque::Server.use Rack::Auth::Basic do |username, password|
    password == AUTH_PASSWORD
  end
end

run Resque::Server.new

别忘了将ADD_SOME_PASSWORD_HERE改为你想用来保护应用的密码.

最后,我正在使用Nginx,下面是我添加到Nginx中的内容.形态

server {
  listen   80;
  server_name  resque.seoaholic.com;
  root /home/admin/public_html/seoaholic/current/vendor/plugins/resque/public;
  passenger_enabled on;
}

因此,它会在部署时重新启动,在部署时可能是这样的.rb

run "touch #{current_path}/vendor/plugins/resque/tmp/restart.txt"

我不确定这是否是最好的方式,我以前从未安装过rack/sinatra应用程序.但它是有效的.

这只是为了让监控应用程序运行起来.下一步我需要找出god 的部分.

Ruby-on-rails相关问答推荐

将会话_store 与:active_record一起使用

如何在rails 7中禁用Simple_Form验证

DateTime的最小数据提交格式

将两个日期之间的差值转换为Ruby中的iso8601持续时间(如果需要,还可以使用Rails)

Ruby:如何通过谓词将一个集合拆分为 ruby​​ 中的两个集合?

无效的单表继承类型:Rails

Rails 和 jsonb 类型jsonb不存在

Restful Rails 编辑与更新

使用回形针进行简单裁剪

Rails:删除级联与依赖销毁

在 Controller 中调用模型方法

如何验证 ActiveRecord 中邮箱字段的格式?

如何拯救 OmniAuth::Strategies::OAuth2::CallbackError?

Rails - 具有空数组的强参数

在 Rails 生产中禁用assets资源 缩小

如何在 Ruby on Rails 的内存缓存存储中列出键?

如何强制 RSpec 测试失败?

在任何来源中都找不到 thread_safe-0.3.0

如何在 rake 任务中强制 RAILS_ENV?

如何为 Rails 控制器添加延迟以进行测试?