2012-05-23 12 views
6

मेरे पास ईसी 2 पर एक प्ले 2.0 ऐप तैनात है और मैं play start के साथ ऐप शुरू करता हूं और यह पृष्ठभूमि में चलता है, मैं Ctrl-D पर हिट कर सकता हूं और प्रक्रिया पृष्ठभूमि में चलती रहेगी लेकिन फिर यह मर जाएगी थोड़ी देर के बाद (15 या 20 मिनट?), यकीन नहीं क्यों। ऐप शुरू करने के बाद मैं आम तौर पर एसएसएच सत्र से बाहर निकलता हूं, मुझे आशा है कि यह कारण नहीं है।स्कैला शुरू करें उत्पादन में सर्वर

+3

हाँ, यह संभवतः आपके 'एसएसएच सत्र को समाप्त करने से आपके द्वारा लटकाए गए सिग्नल के परिणामस्वरूप बंद हो रहा है। यूनिक्स प्रोग्राम 'स्क्रीन' (एक मल्टीप्लेक्सर) लॉन्च करने का प्रयास करें, फिर अपने प्ले सर्वर को सामान्य की तरह लॉन्च करें। फिर, 'ssh' से लॉग आउट करने से पहले,' ctrl + a' दबाएं और फिर 'd' 'स्क्रीन' सत्र को" अलग करें "दबाएं। यह आपके 'ssh' सत्र समाप्त होने के बाद भी पृष्ठभूमि में चल रहा है ('स्क्रीन' के माध्यम से) चलाएगा। – Destin

+1

क्या आपने प्रक्रिया को अस्वीकार करने का प्रयास किया है? Http://stackoverflow.com/a/625436/51280 – opyate

+0

@ डेस्टिन देखें, हाँ यह मेरे 'ssh' सत्र समाप्त होने और 'नोहुप' कार्यों के कारण था। – Bob

उत्तर

10

nohup play start मेरे लिए काम करता है।

+0

हाँ, यह काम किया, धन्यवाद! – Bob

+2

नोहअप एक्टिवेटर रन अब और काम नहीं करता है। इसे ऐसा करना था: http://stackoverflow.com/a/25852899/2426994 रास्ता। – JohnVanDijk

3

मैं अपने प्ले ऐप के लिए निम्न स्टार्टअप स्क्रिप्ट (सेंटोस पर) का उपयोग कर रहा हूं, यह ठीक काम करता प्रतीत होता है, यह इसे पृष्ठभूमि में और अपने स्वयं के प्रक्रिया समूह और सत्र में रखता है, इसलिए यह hangups आदि के प्रति प्रतिरक्षा है। play stage और target/startGuillaume Bort से आता है और "इसे करने का उचित तरीका" है।

#!/bin/bash 
# 
# chkconfig: 2345 98 1 
# description: MyApp application 
# 

case "$1" in 
start) 
    su - apps <<'EOF' 
cd /opt/myapp || exit 1 
PATH=/opt/play-2.1.1:$PATH 
echo "Starting MyApp..." 
play stage 
setsid target/start </dev/null> /dev/null 2>&1 & 
EOF 
    ;; 
stop) 
    su - apps <<'EOF' 
cd /opt/myapp || exit 1 
PATH=/opt/play-2.1.1:$PATH 
echo "Stopping MyApp..." 
play stop 
EOF 
    ;; 
esac 

आप इसे सत्यापित कर सकते हैं के साथ अलग-थलग पड़ रहा है:

ps -e -o user,pid,ppid,pgrp,sid,command | grep -i play 

आप की तरह कुछ दिखाई देगा:

apps  2949  1 2949 2949 java -cp target/staged/* play.core.server.NettyServer target/.. 

मतलब init (पीआईडी ​​1) अपनी मूल है और यह अपने आप में अलग है प्रक्रिया समूह (2949)।

1

मैं सुझाव दूंगा कि आप स्टेज कमांड का उपयोग कर प्रोजेक्ट परिनियोजन बाइनरी तैयार करें जो एक्टिवेटर (पूर्व में प्ले) स्क्रिप्ट लेता है। आप उस बाइनरी को पृष्ठभूमि में चला सकते हैं, यह उस पथ में पाया जा सकता है जो नीचे दिए गए कोड में दूसरा आदेश दिखाता है।

./activator stage 
target/universal/stage/bin/project-name & 
+0

आपको बाद में प्रक्रिया को अस्वीकार कर देना चाहिए। – stephenmuss

0

खेलने के लिए 2.2.3 ... play "D -http.port = 8080 "मेरे लिए काम किया!

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