2014-09-30 7 views
0

AWS에서 Rails 3.2.18 응용 프로그램을 실행 중입니다. 이 응용 프로그램은 Capistrano를 사용하여 배포되며 응용 프로그램의 Resque 작업자를 시작합니다.인스턴스 시작시 Capistrano 명령 실행

내 문제는 AWS가 거의 경고없이 인스턴스를 다시 시작하거나 AWS 콘솔에서 인스턴스를 다시 시작할 수 있다는 것입니다. 이 경우 Resque는 정상적인 배포 프로세스 중에 그대로 시작되지 않습니다.

/etc/init.d에 Resque를 시작하기 위해 쉘 스크립트를 만들려고했으나이 스크립트는 암호를 묻는 메시지를 계속 표시하며 내가 무엇이 빠졌는지 잘 모르겠습니다. 시작 스크립트의 본질은 다음과 같습니다

분명히 배쉬 프롬프트에서 "배포"사용자로 실행하면 예상하지만, sudo /etc/init.d/resque start를 통해 실행하면 처음 실행시 암호를 입력하라는 메시지로 위의 명령이 작동
/bin/su -l deploy-user -c "/www/apps/deploy-user/current && bundle exec cap <environment> resque:scheduler:start resque:start" 

카피스트라노 명령.

실종 신고 된 것이 있습니까? 아니면 이것을 수행하는 더 좋은 방법이 있습니까?

답변

0

당신은 명령을 지정하기 위해 -c 매개 변수를 사용하여 SU를 실행하고 따옴표 내의 모든 명령을 묶어야한다 :

물론
/bin/su -l deploy-user -c "/www/apps/deploy-user/current && bundle exec cap <environment> resque:scheduler:start resque:start" 

, 당신은 /etc/rc.local에 같은 다른 대안을 가지고있다.

그러나 init.d 스크립트를 사용하려면 최소한 (시작/중지, 기본 런레벨 ...) 이상적으로 만들 것을 제안합니다. 그렇지 않으면 /etc/rc.local 또는 배포 사용자의 cron 작업과 함께 갈 것입니다.

@reboot /www/apps/deploy-user/current && bundle exec cap <environment> resque:scheduler:start resque:start 
+0

아, 실제로 문제를 일으킨 것이 아니라 이전 명령을 복사했습니다. 나는'-c' 플래그를 사용하고 있으며 여전히 작동하지 않습니다. 질문을 업데이트했습니다. – CDub