복붙노트

[REDIS] 어떻게 생산 resque 노동자를 배포하려면?

REDIS

어떻게 생산 resque 노동자를 배포하려면?

GitHub의의 사람은 최근 레디 스를 사용하여 자신의 백그라운드 처리 응용 프로그램을 발표했다 : http://github.com/defunkt/resque http://github.com/blog/542-introducing-resque

나는 그것이 로컬 작업,하지만 나는 그것이 생산 작업을 진행하기 위해 사투를 벌인거야. 사람이 가지고있다 :

감사!

추신 나는 아직이 있지만 응답에 대한 Github에서에 문제를 기록했다. 일부 SO 지도자를 기대하는 것은 내가 매우 구축에 경험이 아니에요으로이 일에 도움이 될 수 있습니다. 감사합니다!

해결법

  1. ==============================

    1.나는 파티에 조금 늦게 해요,하지만 난 나를 위해 일한 무엇을 게시 할 거라고 생각했다. 기본적으로, 나는 모니터 레디 스 및 resque에 신 설정을 가지고있다. 그들은 더 이상 실행하지 않는 경우, 하나님은 그들을 백업을 시작합니다. 그럼, 내 resque 노동자 않게 종료 카피 스트라 노에 배포 한 후 실행됩니다 갈퀴 작업을해야합니다. 노동자가 종료되면, 하나님은 최신 코드베이스를 실행하는만큼 새로운 근로자를 시작합니다.

    나는 파티에 조금 늦게 해요,하지만 난 나를 위해 일한 무엇을 게시 할 거라고 생각했다. 기본적으로, 나는 모니터 레디 스 및 resque에 신 설정을 가지고있다. 그들은 더 이상 실행하지 않는 경우, 하나님은 그들을 백업을 시작합니다. 그럼, 내 resque 노동자 않게 종료 카피 스트라 노에 배포 한 후 실행됩니다 갈퀴 작업을해야합니다. 노동자가 종료되면, 하나님은 최신 코드베이스를 실행하는만큼 새로운 근로자를 시작합니다.

    여기에 내가 생산에 resque을 사용하는 방법의 내 전체 작성자는 다음과 같습니다

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

  2. ==============================

    2.난 그냥 카피 스트라 노 당신은 노동자의 배포를 관리하기 위해 나는 하나님의 사용과 같은 san_juan 사용해야 어젯밤이 생각. 재부팅을 생존에 관해서는, 나는 확실하지 않다,하지만 너무 걱정하고 있지 않다 그래서 나는 매 6 개월마다 다시 부팅합니다.

    난 그냥 카피 스트라 노 당신은 노동자의 배포를 관리하기 위해 나는 하나님의 사용과 같은 san_juan 사용해야 어젯밤이 생각. 재부팅을 생존에 관해서는, 나는 확실하지 않다,하지만 너무 걱정하고 있지 않다 그래서 나는 매 6 개월마다 다시 부팅합니다.

    그는 그것을 시작하는 다른 방법을 제안했지만,이 날 위해 가장 쉬운 방법 일 것입니다. (당신의 deploy.rb 이내)

    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 *: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>
    

    또한, 빠른 노트. 당신이 구조보다 우선합니다 설치 레이크 작업을, 그것은 하나님과 새로운 근로자를 산란을 위해 당신에게 많은 시간을 절약 할 수 있습니다.

    난 당신이 더 이상 도움이 필요하면 그렇게, 그냥 코멘트를 게시, 많은 문제에 달렸다.

  3. ==============================

    3.정말 도움이 개렛의 대답은 단지 몇 가지 더 세부 사항을 게시하고 싶었다. 그것은 바로 그걸 얻기 위해 땜질을 많이했다 ...

    정말 도움이 개렛의 대답은 단지 몇 가지 더 세부 사항을 게시하고 싶었다. 그것은 바로 그걸 얻기 위해 땜질을 많이했다 ...

    또한 승객을 사용하지만, 대신 아파치의 nginx에 있어요.

    먼저, 잠시 동안, 당신은시나를 설치해야 나를 놔 줬어요이를 잊지 마세요. 시나를 설치 보석 SUDO

    그런 다음 일을 실행하기위한 디렉토리를 만들 필요하고, 공용 및 TMP 폴더를 가지고있다. 그들은 비어있을 수 있지만, 문제는 REPO에 빈 디렉토리를 저장하지 않습니다 그 자식입니다. 디렉토리 내가 자리 일부 정크 파일을 만든 그래서, 적어도 하나 개의 파일을 가지고 있습니다. 이것은 자식의 이상한 기능 / 버그입니다.

    내가 (기본 config.ru 임)이 디렉토리를했다, 그래서 나는 resque 플러그인을 사용하고 있습니다. 개렛 그의 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 / 공급 업체 / 플러그인 / 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"
    

    난 정말 확실이 최선의 방법 인 경우, 내가 전에 결코 설치 랙 /시나 애플 리케이션을했습니다 아니에요. 그러나 그것은 작동합니다.

    이 단지 모니터링 응용 프로그램은 가야하는 것입니다. 나는 신 부분을 강구해야 다음으로.

  4. ==============================

    4.대신 웹 서버 수준 구성을하고 플러그인 편집의 다음 단계를 사용합니다 :

    대신 웹 서버 수준 구성을하고 플러그인 편집의 다음 단계를 사용합니다 :

    #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

  5. from https://stackoverflow.com/questions/1732415/how-to-deploy-resque-workers-in-production by cc-by-sa and MIT license