2011-05-03 20 views
7

घंटों की कोशिश करने के बाद (और भगवान और ब्लूपिल की कोशिश करने के बाद) मैंने यहां अपना प्रश्न पूछने का फैसला किया क्योंकि मैं इस मुद्दे को हल करने के लिए पूरी तरह से अनजान हूं।ओएसएक्स/लिनक्स पर मॉनिट + आरवीएम + पतला

मेरे पास एक रेल ऐप है। मैं अपने ऐप सर्वर के रूप में पतला का उपयोग करना चाहता हूं। मैं अपने पतले उदाहरणों की निगरानी के लिए मोनिट का उपयोग करना चाहता हूं। मैं अपने रूबी संस्करणों को अपने स्थानीय उपयोगकर्ता के रूप में प्रबंधित करने के लिए आरवीएम का उपयोग करता हूं।

मैं निम्नलिखित monit फ़ाइल सेट कि assumably क्या मैं इसे करना चाहते हैं जाएगा, लेकिन ऐसा नहीं करता है: मैं बस कॉपी/कमांड लाइन करने के लिए पेस्ट start program (बाहर हैं

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 

मोनीट का) यह काम करता है। बाद में थिन इंस्टेंस को रोकने के लिए stop program के लिए चला जाता है। हालांकि, मॉनीट के माध्यम से इसे चलाना प्रतीत नहीं होता है।

-v वर्बोज़ मोड में चल रहा है निम्नलिखित पैदावार:

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

कौन सा मुझे विश्वास है कि पतला कभी नहीं initializes। क्या Monit root या कुछ के रूप में चलाता है? अगर ऐसा होता है तो यह स्पष्ट रूप से सही रत्न स्थापित नहीं होगा क्योंकि मैं आरवीएम का उपयोग कर रहा हूं, न कि "सिस्टम" रूबी। मैं वर्तमान में ओएसएक्स पर हूं (लेकिन अंत में लिनक्स पर तैनात होगा) - क्या किसी को पता है कि इसका कारण क्या हो सकता है? और यदि मॉनिट रूट के माध्यम से चलाया जाता है, तो मैं इसे बिना आरवीएम का उपयोग कैसे कर सकता हूं? या क्या मैं Michael:staff के रूप में प्रारंभ/बंद कार्यक्रमों को निष्पादित करने के लिए मॉनिट को बता सकता हूं (मुझे लगता है कि यह ओएसएक्स पर होगा?)

किसी भी मदद की बहुत सराहना की जाती है!

उत्तर

11

मोनिट पर्यावरण को साफ़ करता है और आपके आदेश के लिए एक खोल भी नहीं चलाता है (अकेले एक इंटरैक्टिव एक दें)।

monit आदेश प्रारंभ के रूप में

: मैं मैं की तरह कुछ करने के लिए लगता है।

+0

धन्यवाद, यह कुछ है जो मुझे पता नहीं था। :) –

4

पतली के लिए एक कस्टम निष्पादन योग्य बनाने के लिए एक बेहतर तरीका आरवीएम रैपर का उपयोग करना होगा। यह सही रूबी और रत्नों का उपयोग करने के लिए सही पर्यावरण चर बनाएगा, और फिर पतला लॉन्च करेगा। यहां भगवान के साथ इसका उपयोग करने के बारे में और पढ़ें: https://rvm.io/integration/god/। यह monit

के साथ एक ही काम करते हैं आवरण बनाने के लिए चाहिए: rvm wrapper [email protected] bootup thin

फिर start program और stop program निष्पादन आपने अभी बनाया का उपयोग करने के बदल जाते हैं।

7

एक और विकल्प है जो मुझे RVM गूगल समूह में पाया इस प्रकार है:

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

सु - इसलिए यदि उपयोगकर्ता के खोल bash है, यह कारण होगा उपयोगकर्ता, एक लॉगिन शेल के रूप में उपयोगकर्ता के खोल से चलाता है ~ /.bash_profile, तो वातावरण चर के तुरंत बाद ही यह है कि उपयोगकर्ता लॉग इन

में। हम सु के लिए पथ की जरूरत के रूप में ही किया जाना चाहिए चलाने के लिए अन्यथा, monitrc सु निष्पादन ढूँढने में सक्षम नहीं होगा।

+0

अंत में इसे रूट के रूप में चल रहे मोनिट के साथ काम करने और '/ bin/su - user' का उपयोग करने के लिए मिला ... धन्यवाद! –

+0

अब तक का सबसे आसान समाधान। धन्यवाद! – idrinkpabst