如何在生产中部署resque工人?

GitHub家伙最近发布了使用Redis的后台处理应用程序: http : //github.com/defunkt/resque http://github.com/blog/542-introducing-resque

我在当地工作,但我正在努力让它在生产中工作。 有没有人有一个:

  1. Capistrano食谱部署工人(控制工人数量,重新启动他们等)
  2. 部署的工作人员从主应用程序运行的地方分离机器,在这里需要什么设置?
  3. 得到Redis的生存在服务器上重新启动(我试图把它放在克朗,但没有运气)
  4. 你是如何将resque-web(他们优秀的监控应用程序)join你的部署的?

谢谢!

PS我在Github上发布了一个关于这个问题,但没有回应。 希望有些大师可以帮助这个,因为我在部署方面不是很有经验。 谢谢!

我对派对有点迟了,但是以为我会发布对我有用的东西。 本质上,我有上帝设置监视redis和resque。 如果他们不再运行,上帝就会启动他们。 然后,我有一个耙子任务,在capistrano部署后退出,退出我的resque工人。 一旦工人辞职,上帝会启动新的工作人员,以便他们运行最新的代码库。

以下是我在生产中如何使用resque的完整资料:

http://thomasmango.com/2010/05/27/resque-in-production

我昨晚才知道,因为Capistrano你应该用san_juan ,然后我喜欢用上帝来pipe理工人的部署。 至于重新启动,我不知道,但我每隔6个月重新启动一次,所以我并不太担心。

虽然他提出了不同的启动方式,但这对我来说最简单。 (在您的deploy.rb中)

 require 'san_juan' after "deploy:symlink", "god:app:reload" after "deploy:symlink", "god:app:start" 

为了pipe理它在哪里运行,在另一个服务器上等,他在README的configuration部分中介绍了这一点。

我在我的切片上使用Passenger,所以它相对容易,我只需要有一个config.ru文件,如下所示:

 require 'resque/server' run Rack::URLMap.new \ "/" => Resque::Server.new 

对于我的VirtualHost文件,我有:

 <VirtualHost *:80> ServerName resque.server.com DocumentRoot /var/www/server.com/current/resque/public <Location /> AuthType Basic AuthName "Resque Workers" AuthUserFile /var/www/server.com/current/resque/.htpasswd Require valid-user </Location> </VirtualHost> 

另外,快速的说明。 确保你重写了resque:setup rake任务,这将为你节省大量的时间来与上帝产生新的工作者。

我遇到了很多麻烦,所以如果你需要更多的帮助,只需发表评论。

加勒特的回答真的有帮助,只是想发表一些更多的细节。 它做了很多修补,以得到它的权利…

我也使用乘客,但nginx而不是阿帕奇。

首先,不要忘记你需要安装sinatra,这让我有一阵子。 sudo gem install sinatra

然后你需要build立一个目录来运行,它必须有一个public和tmp文件夹。 他们可以是空的,但问题是,git不会保存回购中的空目录。 该目录至less有一个文件,所以我做了一些垃圾文件作为占位符。 这是git中一个奇怪的特性/错误。

我使用resque插件,所以我做了目录(默认config.ru是)。 看起来Garrett在他的rails_root中创build了一个新的'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.conf

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

所以它会在你的部署中重新启动,在你的deploy.rb中可能是这样的

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

我不确定这是否是最好的方法,我从来没有安装机架/ sinatra应用程序。 但它的作品。

这只是为了让监控应用程序。 接下来我需要弄清楚神的部分

使用这些步骤,而不是使用Web服务器级别和编辑插件进行configuration

https://gist.github.com/1060167