2012-01-02 2 views
5

좋아, 이제 첫 번째 루비 앱을 만들고있어. 모든 것을 '생산'으로 옮기는 것을 아는 분은 너무 복잡합니다. 지금까지 승객을 구성하고 시동시 작동하도록 설정 한 다음 시동시 작동되도록 경비를 얻는 방법으로 어려움을 겪었습니다.부팅 할 때 resque worker를 자동으로 만드는 방법은 무엇입니까?

내 마지막 작업이 시작되면 1 명의 작업자가 추가됩니다. 지금, 나는 ssh에 들어가 레이크 명령을 실행해야한다. rake workers:start. 분명히 ssh를 닫고 싶을 때 이것은 좋지 않습니다 .. 그래서 저는 다음 단계가 어떻게 또는 무엇인지를 정말로 알지 못합니다.

config.ru에 resque 기본 설정을 복사 해봤는데 오류가있는 Passenger가 폭발합니다. 나는 또한 어떤 사람들이 언급했지만 그것은 내 머리 위로 끝난다.

내가해야 할 일은 부팅시 1 명의 작업자를 추가하는 것입니다. 이것은 앱의 진지함이이 시점에서 가장 좋을 수는 없다는 것을 의미하지 않는다.

+0

그런데 레일즈를 사용합니까? 아니면 다른 프레임 워크? –

+0

Sinatra. 죄송합니다, 언급 했어야합니다 – Tallboy

+0

나는 당신이 느끼는 것을 이해합니다.나는 너무 압도 당했다. :-) –

답변

4

프로덕션에서는 프로세스를보기 위해 god을 사용해야합니다. 이 프로젝트가 작은 프로젝트 일지라도 시간을 투자하고 설정하는 것이 좋습니다.

또 다른 큰 이어야합니다. Capistrano입니다.

그래서 신을 사용하고 있다면 여기에 config file이 도움이 될 것입니다.

/etc/init.d/ 또는 /etc/init/ 또는 다른 시스템 (사용하는 시스템에 따라 다름)에 적절한 스크립트를 사용하여 시스템 시작시 rake resque:work을 예약 할 수도 있습니다. 나는이 시간 전 약간의 시간을 보냈고 포기했습니다 (이유를 기억하지 마십시오).

이 답변은 현재 찾고있는 것과 다르다는 것을 알고 있습니다. 그러나 상상해보십시오 : 모든 것이 설정되면 다음 버전을 배포하는 것은 개발 컴퓨터에서 rake deploy을 실행하는 것만 큼 쉽습니다. 또한 저장소에서 코드를 가져오고 마이그레이션을 실행하고 작업자와 웹 서버를 다시 시작하는 등의 작업을 처리합니다.

+1

나는 이것이 당신이 기대했던 대답이 아니라는 것을 안다. 그러나 나는 어떻게 이것을 '적절한'시작 스크립트로 할 수 있을까? 나는 하나님과 카피 스트라 노에 대한 더러운 모습을 더 약속하지만 그저 먼저 일하기를 원합니다. 나는 centOS를 사용하고있다. – Tallboy

+0

흠, 내 서버에서 우분투를 사용하고 있습니다. centos에 대해 몰라, 미안. –

+0

하나님이 예배 할 사람이라고 믿는 사람들에게 이것은 사용하기 어려운 것이지 받아 들일 수없는 해결책입니다. 더 나은 대안은 monit 일 것입니다. – sockmonk

6

나는 (1) 내가 소개 한 설정의 복잡성 때문에 매우 혼란 스러웠던 프로젝트를 보았 기 때문에 (2) 나는 개인적으로 표준 Linux (우분투) 도구는 이런 종류의 것을 처리합니다.

/etc/rc.local 파일에이 코드가 부팅에 Resque 근로자를 시작합니다. 내가 루비 환경을 설정하는 스크립트,

# Start Resque 
su -l deploy -c "/home/deploy/start-resque-workers" 
su -l deploy -c "/home/deploy/start-resque-webui" 

다음과 레이크 작업 실행 : 나는 시스템에 배포 사용자가

# Load RVM into a shell session *as a function* 
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then 
    # First try to load from a user install 
    source "$HOME/.rvm/scripts/rvm" 
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then 
    # Then try to load from a root install 
    source "/usr/local/rvm/scripts/rvm" 
else 
    printf "ERROR: An RVM installation was not found.\n" 
fi 

# Use rvm to switch to the default ruby. 
rvm use default 

# Now launch the app 
cd /home/deploy/app-name-here/current 
nohup rake QUEUE=* RAILS_ENV=production environment resque:work & 

나는 이러한 종류의를 사용하고를 몇 년 동안 설정, 그리고 단단한. 서버가 중단되지 않습니다. 필자는 다른 서버를 감시하기 위해 다른 시스템 (신 보석과 같은)을 설치하는 오버 헤드가 필요하지 않습니다.

또한 capistrano gem을 사용하여 배포시 작업자를 다시 시작할 수 있습니다.

+0

이봐 요, 네가 거의 4 년 전에 대답 한 걸 보면 알 수 있겠지만 ... 포기한 노동자들을 정리할 방법이 있겠 니? ps ax를 사용하고 죽이기를 죽이면 그 과정은 끝나지만 아직 등록은 계속된다. – jdkealy

+0

음 ... 죄송합니다. 다음은 내 도움이 필요한 경우 내 resque 스크립트입니다. https://github.com/asm-products/think-200/tree/master/script – Dogweather

+0

안녕하세요. 방금 어제 이것을 구현했습니다 : https://gist.github.com/jdkealy/a7f817bbb8e568ff38bb resque 직원이 작업에 몰두하고 레이크 작업을 실행하는 bash 스크립트에 심볼 링크를 추가하는 동안 서버를 죽이는 것에 대해 걱정했습니다. /etc/rc0.d/는 정상적으로 노동자들을 그만 뒀다. – jdkealy

관련 문제