2012-01-16 2 views
5

저는 RubyOnRails 프로젝트를 가지고 있으며 Ubuntu 서버의 nginx에 Unicorn으로 배포했습니다.마스터 프로세스를 종료하지 않고 유니콘을 어떻게 다시로드합니까?

구성 파일 중 하나를 변경하면 유니콘을 다시 시작해야하지만 유니콘의 마스터 프로세스를 죽이고 bundle exec으로 다시 시작할 때 사이트가 종료됩니다.

프로세스를 강제 종료하지 않고 새 파일로 Unicorn을 작동시킬 수있는 방법이 있습니까? 내 카피 스트라 노의 deploy.rb에서

답변

8

나는이 :

desc "Zero-downtime restart of Unicorn" 
task :restart, :except => { :no_release => true } do 
    run "kill -s USR2 unicorn_pid" 
end 

이 잘 "Lighting fast, zero-downtime deployments with git, capistrano, nginx and Unicorn"에 설명되어 있습니다.

+0

내가, 당신의 조언 덕분에 일부 진전을했지만 지금은 새로운 오류를 가지고있다. "cap restart"을 입력하고 비밀번호를 입력하면 다음과 같은 메시지가 나타납니다. ** ** [out :: app_name] $ rvm_path (/root/.rvm/)가 존재하지 않습니다. *** [err :: app_name]/usr/local/rvm/bin/rvm-shell : 줄 57 : rvm : 명령을 찾을 수 없음 *** [err :: app_name] 오류 : RVM에서 'ruby -1.9.2-p290'' Google에서 결과를 이해할 수 있다면 "/ usr/local/rvm/bin"(실제로는 기존 디렉토리 임)으로 rvm_path var를 변경해야하지만 찾을 수 없습니다. 어딘가에. – leitasat

+0

코딩 한 스크립트를 다시 시작 하시겠습니까? 이럴 경우, 스크립트에서'rvm use 1.9.2'를 추가하여 사용할 필요가있는 rvm 버전을 알 수 있습니다. 그렇지 않으면 답을 올바른 것으로 표시하고 rvm 문제에 대해 새 답을여십시오. 기꺼이 도와 드리겠습니다. – tommasop

+0

좋아요, 필자는 필자의 rvm을 수정했습니다. (필연적 인 보석은 없었습니다.) 이제는 capistrano가 확실히 내 명령을 수행하는 것 같지만 unicorn은 config 파일의 변경 사항을 고려하지 않습니다. (예 : 작업자 프로세스 또는 데이터베이스 설정 수) – leitasat

0

허용되는 답변을 포함하여 두 가지 대답이 모두 잘못되었습니다.

http://unicorn.bogomips.org/SIGNALS.htmlHUP을 마스터 프로세스에 보냅니다.

desc "Zero-downtime restart of Unicorn" 
task :restart, :except => { :no_release => true } do 
    run "kill -s HUP `cat tmp/pids/unicorn.pid`" 
end 
+0

질문은 RELOAD (HUP) 방법을 묻는 것이 아니라 이미 USR2 인 정상적으로 다시 시작하는 방법을 묻는 것입니다. – tommasop