2011-08-11 11 views
5

में आवेदन शुरू, मैं एक स्क्रिप्ट है कि सर्वर है कि तरह लग रहा है शुरू होता है है निम्नलिखित:Erlang जब मैं स्थानीय होस्ट पर मेरे erlang आवेदन का परीक्षण कर रहा हूँ उत्पादन

#!/bin/sh 
PWD="$(pwd)" 
NAME="$(basename $PWD)" 
erl -pa "$PWD/ebin" deps/*/ebin -boot start_sasl \ 
    -name [email protected] \ 
    -s reloader \ 
    -s $NAME \ 
    -setcookie some_random_cookie \ 
    +K true \ 
    +P 65536 

यह Erlang खोल खोलने का संकेत देता है और वहाँ से मैं

application:start(myapp)

यह विकास प्रयोजनों के लिए ठीक है, लेकिन मैं कैसे उत्पादन में इस तैनात है: की तरह कुछ टाइप करेंगे? अभी तक, ऐसा करने का एकमात्र तरीका यह है कि मैं स्क्रीन प्रक्रिया शुरू कर रहा हूं और इससे अलग हो रहा हूं। मुझे नहीं लगता कि यह मामला होना चाहिए। मैं रीबर का उपयोग कर रहा हूं, अगर यह बिल्कुल मदद करता है।

उत्तर

6

लगता है जैसे आप कस्टम बूट स्क्रिप्ट का उपयोग करना चाहते हैं। एक बूट स्क्रिप्ट एरलांग सिस्टम को बताती है कि क्या शुरू करना है।

-boot start_sasl 

http://www.erlang.org/doc/system_principles/system_principles.html, अनुभाग "उपयोगकर्ता निर्धारित बूट स्क्रिप्ट"

एक आसान विकल्प आपके आवेदन कन्वर्ट करने के लिए हो सकता है के लिए देखो: स्क्रिप्ट का उपयोग कर रहे है, तो आप के साथ बूट स्क्रिप्ट स्थापित कर रहे हैं रीबर का उपयोग करने के लिए: https://github.com/basho/rebar। इसके बाद आप निम्न कार्य करने में सक्षम होगा:

./rebar compile generate 

यह आवेदन के लिए एक रिलीज पैदा करेगा अनुमति देता है आप के लिए तो:

./rel/<app_name>/bin/<app_name> 

एक ही सिद्धांतों, बस सब आसान उपयोग के लिए ऊपर लपेट।

+2

ध्यान दें कि वह पहले से ही उल्लेख करता है कि रीबर का उपयोग किया जा रहा है।यदि आपने एक rebar reltool.config लिखना है, तो आपका उत्तर बहुत बेहतर होगा। –

-7

ठीक है, आप इसे अपाचे (see here) में जोड़ने की कोशिश कर सकते हैं, या एक आसान समाधान है जो स्क्रीन सत्र के रूप में हैकी जैसा नहीं है nohup का उपयोग करना है। यदि आप वास्तव में इसे उत्पादन सर्वर पर कार्यान्वित कर रहे हैं, और अपाचे मार्ग नहीं लेना चाहते हैं, तो आप init script पर विचार कर सकते हैं।

+0

अपाचे को यहां कुछ भी करने के साथ क्या करना है? मेरे Erlang नोड्स एक वेब सर्वर नहीं चलाते हैं। – randombits

+0

आह, आपके द्वारा लिपि में दी गई जानकारी के आधार पर, मुझे लगता है कि यह एक वेबसर्वर के रूप में व्यवहार कर रहा था, लेकिन मुझे लगता है कि यह किसी अन्य वेब सर्वर से भी बातचीत कर सकता है। उस स्थिति में अपाचे कम सहायक होता है;) 'नोहुप' अभी भी एक अच्छा समाधान है, हालांकि अन्यथा उल्लिखित '-डेटेड 'विकल्प का उपयोग करना शायद बेहतर है। – stefan

+0

-1। एक भ्रमित जवाब। अपाचे के पास इसके साथ कुछ लेना देना नहीं है, और एक पृथक एरलांग नोड के लिए नोहप आवश्यक नहीं है। –

5

पैरामीटर -detached जोड़ें। documentation इस अच्छी तरह से सारांशित करता है:

सिस्टम कंसोल से अलग एरलांग रनटाइम सिस्टम प्रारंभ करता है। डेमॉन और पृष्ठभूमि प्रक्रियाओं को चलाने के लिए उपयोगी।

एक बार ऐसा करने के बाद, आप अपना आवेदन -s पैरामीटर से शुरू करने के लिए प्राप्त कर सकते हैं। मान लें $NAME = myapp, init myapp:start/0 पर कॉल करने का प्रयास करेगा (यदि आप चाहें तो इसे कस्टमाइज़ कर सकते हैं)। उस समारोह को application:start(myapp) पर कॉल के साथ समाप्त होना चाहिए।

यदि आप उन सभी पहेली टुकड़ों को जगह में प्राप्त कर सकते हैं, तो आपके पास एक कार्यशील स्क्रिप्ट होनी चाहिए।

 संबंधित मुद्दे