2011-05-03 6 views
7

몇 시간 동안 노력한 후 (그리고 신과 블루 필을 시도한 후) 나는이 문제를 해결하는 방법을 전혀 알지 못하기 때문에 여기서 질문을하기로 결정했습니다.OSX/Linux의 Monit + RVM + Thin

레일 앱이 있습니다. 내 응용 프로그램 서버로 Thin을 사용하고 싶습니다. 내 Thin 인스턴스를 모니터하기 위해 Monit을 사용하고 싶습니다. RVM을 사용하여 Ruby 버전을 로컬 사용자로 관리합니다.

I assumably 내가하고 싶은 것을 할 것이나, 그 설정 한 다음 MONIT 파일을하지 않습니다 있습니다

check process thin-81 
    with pidfile /Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid 

    start program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin start -c /Users/Michael/Desktop/myapp -e production -p 81 -d -P tmp/pids/thin.81.pid" 
    stop program = "/Users/Michael/.rvm/gems/ruby-1.9.2-p180/bin/thin stop -c /Users/Michael/Desktop/myapp -P tmp/pids/thin.81.pid" 

    if totalmem is greater than 150.0 MB for 2 cycles then restart 

단순히 외부 (명령 라인에 start program을 붙여 복사/경우 Monit의) 작동합니다. stop program이 Thin 인스턴스를 나중에 중지하는 경우에도 마찬가지입니다. 그러나 Monit을 통해 실행하면 작동하지 않습니다. -v 상세 모드에서 실행

다음을 산출 : 얇은 결코 초기화 없다고 믿고 날 리드

monit: pidfile '/Users/Michael/Desktop/myapp/tmp/pids/thin.81.pid' does not exist 

합니다. Monit이 root 같은 것으로 동작합니까? 왜냐하면 내가 RVM을 사용하고 있고 "시스템"루비를 사용하지 않기 때문에 분명히 올바른 보석이 설치되지 않기 때문입니다. 나는 현재 OSX를 사용 중이다. (결국 리눅스에 배포 할 것이다.) Monit을 루트를 통해 실행하는 경우 어떻게 관계없이 RVM을 사용할 수 있습니까? 아니면, 시작/중지 프로그램을 실행하기 위해 Monit에게 Michael:staff으로 알릴 수 있습니까? (OSX에 있다고 가정합니다)

도움이 되었습니까?

답변

11

monit은 환경을 지우고 명령에 대한 쉘을 실행하지 않습니다 (대화식 대화 상자는 제외). 나는 다음과 같이해야만한다는 것을 알게되었다 :

monit 시작 명령.

+0

감사합니다. 그 사실을 알고 싶지 않았습니다. :) –

4

더 나은 방법은 RVM 래퍼를 사용하여 thin 용 사용자 지정 실행 파일을 만드는 것입니다. 올바른 루비와 젬을 사용하기 위해 올바른 환경 변수를 생성 한 다음 가볍게 실행합니다. 신과 함께 사용하는 방법에 대한 자세한 내용은 https://rvm.io/integration/god/을 참조하십시오. 그것은 래퍼를 만들려면 MONIT

와 동일하게 작동해야합니다 rvm wrapper [email protected] bootup thin

그런 다음 start programstop program 방금 ​​만든 실행 파일을 사용하여 변경할 수 있습니다.

7

다음과 같이 내가 RVM 구글 그룹에있는 또 다른 옵션은 다음과 같습니다

start program = "/bin/su - myuser -c '/path/to/myscript.rb start' " 

SU - 사용자의 쉘이 bash는 경우,이 발생할 수 있으므로 사용자가 로그인 쉘과 같은 사용자의 쉘을 실행합니다 ~ /.bash_profile는 monitrc는 스와 실행 파일을 찾을 수없는 것, 그렇지 않으면, 그래서 환경 변수가 해당 사용자 우리는 스와의 경로가 필요합니다.

로그인 직후와 동일해야 실행합니다.

+0

마침내 루트로 실행하고'/ bin/su - user'를 사용하여이 작업을 수행하게되었습니다 ... 감사합니다! –

+0

훨씬 쉬운 솔루션입니다. 감사! – idrinkpabst