문제

Github Guys는 최근 Redis를 사용하는 백그라운드 처리 앱을 출시했습니다.http://github.com/defunkt/resque http://github.com/blog/542-introducting-resque

나는 그것을 현지에서 일하고 있지만 생산에서 일하기 위해 고군분투하고 있습니다. 누구든지 A가 있습니까?

  1. Capistrano 레시피를 배치하는 근로자 (근로자 제어 번호, 재시작 등)
  2. 기본 앱이 실행중인 위치에서 기계를 분리하도록 배치 된 작업자는 여기서 어떤 설정이 필요한가?
  3. 서버의 재부팅에서 살아 남기 위해 Redis를 얻었습니다 (Cron에 넣었지만 운이 없습니다).
  4. Resque-Web (우수한 모니터링 앱)를 배포에 어떻게 작업 했습니까?

감사!

추신 : 나는 이것에 대해 Github에 문제를 게시했지만 아직 응답은 없었습니다. 배포에 경험이 많지 않기 때문에 일부 전문가 가이 문제에 도움이 될 수 있기를 바라고 있습니다. 고맙습니다!

도움이 되었습니까?

해결책 3

개렛의 대답은 실제로 도움이되었으며 몇 가지 자세한 내용을 게시하고 싶었습니다. 그것을 제대로 얻는 데 많은 땜질이 필요했습니다 ...

나는 또한 승객을 사용하고 있지만 apache 대신 nginx입니다.

먼저, 시나트라를 설치해야한다는 것을 잊지 마십시오. 이것은 잠시 동안 나를 던졌습니다.sudo gem install sinatra

그런 다음 실행하려면 디렉토리를 만들어야하며 공개 및 TMP 폴더가 있어야합니다. 그들은 비어있을 수 있지만 문제는 git이 repo에 빈 디렉토리를 저장하지 않는다는 것입니다. 디렉토리에는 적어도 하나의 파일이 있어야하므로 자리 표시 자로 정크 파일을 만들었습니다. 이것은 git의 이상한 기능/버그입니다.

Resque 플러그인을 사용하고 있으므로 디렉토리를 만들었습니다 (기본 config.ru가있는 곳). 개렛이 그의 Rails_root에서 새로운 '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;
}

배포에서 다시 시작됩니다.

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

이것이 가장 좋은 방법인지 확실하지 않습니다. 나는 전에 랙/시나트라 앱을 설정 한 적이 없습니다. 그러나 그것은 작동합니다.

이것은 단지 모니터링 앱을 얻는 것입니다. 다음으로 신의 부분을 알아 내야합니다.

다른 팁

나는 파티에 조금 늦었지만 나를 위해 일한 것을 게시 할 것이라고 생각했습니다. 본질적으로, 나는 Redis와 Resque를 모니터링하기 위해 신의 설정을 가지고 있습니다. 그들이 더 이상 달리지 않으면, 하나님은 그들을 다시 시작합니다. 그런 다음 Capistrano 배포 후 실행되는 갈퀴 작업이 있습니다. 일단 노동자들이 그만두면, 하나님은 새로운 노동자들을 시작하여 최신 코드베이스를 운영 할 것입니다.

다음은 제작에서 Resque를 사용하는 방법에 대한 전체 글입니다.

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

나는 어제 밤에 이것을 알아 냈습니다. capistrano를 위해 당신은 사용해야합니다 SAN_JUAN, 나는 사용을 좋아한다 하나님 근로자 배치를 관리합니다. 재부팅에서 살아남은 것에 관해서는 확실하지 않지만 6 개월마다 재부팅하여 너무 걱정하지 않습니다.

그는 그것을 시작하는 다른 방법을 제안하지만 이것이 나에게 가장 쉬운 일입니다. (배포 내에서)

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

실행되는 위치, 다른 서버 등에서 관리하기 위해 그는 구성 섹션README.

나는 슬라이스에 승객을 사용하기 때문에 비교적 쉬웠습니다. 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 레이크 과제, 그것은 새로운 노동자들을 하나님과 산란에 많은 시간을 절약 할 것입니다.

나는 많은 어려움을 겪었으므로 더 이상 도움이 필요하면 의견을 게시하십시오.

웹 서버 레벨을 사용하여 구성하고 플러그인을 편집하는 대신이 단계를 사용하십시오.

#The steps need to be performed to use resque-web with in your application

#In routes.rb

ApplicationName::Application.routes.draw do
  resources :some_controller_name
  mount Resque::Server, :at=> "/resque"
end

#That's it now you can access it from within your application i.e
#http://localhost:3000/resque

#To be insured that that Resque::Server is loaded add its requirement condition in Gemfile

gem 'resque', :require=>"resque/server"

#To add  basic http authentication add resque_auth.rb file in initializers folder and add these lines for the security

Resque::Server.use(Rack::Auth::Basic) do |user, password|
  password == "secret"
end

#That's It !!!!! :)

#Thanks to Ryan from RailsCasts for this valuable information.
#http://railscasts.com/episodes/271-resque?autoplay=true 

https://gist.github.com/1060167

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top