2012-06-22 19 views
10

के साथ गनिकोर्न और डीजेगो सबसे पहले मेरे पास कई Django उदाहरण सेटअप और इस तरह चल रहे हैं।अपस्टार्ट और एनजिनक्स

प्रत्येक परियोजना में मैं एक script.sh खोल स्क्रिप्ट है कि gunicorn आदि शुरू होता .:

#!/bin/bash 
    set -e 
    LOGFILE=/var/log/gunicorn/app_name.log 
    LOGDIR=$(dirname $LOGFILE) 
    NUM_WORKERS=3 
    # user/group to run as 
    USER=root 
    GROUP=root 
    PORT=8060 
    IP=127.0.0.1 
    cd /var/www/webapps/app_name 
    source ../bin/activate 
    test -d $LOGDIR || mkdir -p $LOGDIR 
    exec /var/www/webapps/bin/gunicorn_django -b $IP:$PORT -w $NUM_WORKERS \ 
    --user=$USER --group=$GROUP --log-level=debug --log-file=$LOGFILE 2>>$LOGFILE 

जब बैश script.sh साथ कमांड लाइन से इस स्क्रिप्ट चल रहा है, साइट पूरी तरह से काम करता है, तो Nginx सही सेटअप है।

जैसे ही मैं सेवा app_name के साथ अपस्टार्ट का उपयोग करता हूं ऐप शुरू होता है और फिर बस बंद हो जाता है। यह लॉग फ़ाइल को भी नहीं लिखता है।

description "Test Django instance" 
start on runlevel [2345] 
stop on runlevel [06] 
respawn 
respawn limit 10 5 
exec /var/www/webapps/app_name/script.sh 

तो क्या समस्या यहाँ है:

यह app_name.conf /etc/init/app_name.conf में फ़ाइल है? कमांड लाइन काम से चलने का कारण है, लेकिन मुश्किल अपस्टार्ट करना नहीं है। और मुझे नहीं पता कि क्या गलत है?

+0

अरे यह निराशाजनक है, मुझे यकीन है कि मैं अंधा हूं या कुछ और समस्या को नहीं देख रहा हूं! – Harry

+0

यहां तक ​​कि जब यह fomr कमांड लाइन gunicorn_django -b $ IP चला रहा है: $ PORT -w $ NUM_WORKERS \ --user = $ USER --group = $ GROUP --log-level = debug --log-file = $ LOGFILE 2 >> $ LOGFILE सब कुछ काम करता है। यह होना चाहिए कि अपस्टार्ट समस्या है? – Harry

उत्तर

15

ठीक है, मैंने इसे समझ लिया। यदि कोई भी इस तरह से कुछ चलाता है ...

इसकी मूल रूप से शैल स्क्रिप्ट के बारे में ज्ञान की कमी जो मुझे वापस पकड़ रही थी।

प्रत्येक पंक्ति ओ स्क्रिप्ट फ़ाइल पर टिप्पणी करने के बाद मुझे लाइन के साथ समस्या मिली: स्रोत ../bin/activate और उसके बाद सब कुछ।

समस्या यह थी कि इसके सामने 2 रिक्त स्थान थे, और अब मुझे पता है कि इसे सभी तरह से गठबंधन करने की आवश्यकता है। अब यह काम कर रहा है।

यह मैं कैसे यह समझ से बाहर है:

tail -f /var/log/syslog 
Jun 26 10:54:59 saturn7 init: app_name main process (3521) terminated with status 127 

मुझे पता चला स्थिति 127 मूल रूप से एक आदेश है कि नहीं मिला है। तो मुझे पता है कि समस्या वास्तव में स्क्रिप्ट फ़ाइल में थी।

लेकिन मुझे यकीन नहीं है कि क्यों बैश ./script.sh काम करेगा और मुझे कुछ भी नहीं बताएगा गलत है? मुझे स्कील स्क्रिप्ट के बारे में पढ़ने की जरूरत है ..

+0

मैं अपनी सभी अपस्टार्ट स्क्रिप्ट को 'exec>/var/log/$ {UPSTART_JOB} .log 2> और 1' के साथ' set -x' 'के साथ शुरू करता हूं - यह प्रत्येक पंक्ति को/var/log/[upstart-job] पर निष्पादित करता है .log और आपको एक स्पष्ट विचार मिलता है कि क्यों और कुछ विफल हो जाता है। मैं setuid द्वारा पकड़ा गया अपस्टार्ट के पहले संस्करण पर समर्थित नहीं है – jmurphyau

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