9

मार दिया गया है मैं अमेज़ॅन के लोचदार बीनस्टॉक और Django 1.8.2 का उपयोग कर रहा हूँ। यहाँ मेरी कंटेनर आदेश,अमेज़ॅन लोचदार बीनस्टॉक पर Django के माइग्रेट कमांड को

container_commands: 
    01_wsgipass: 
    command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf' 
    02_makemigrations: 
    command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --merge --noinput" 
    leader_only: true 
    03_migrate: 
    command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput" 
    leader_only: true 

कुछ कारणों migrate आदेश को मार डाला जा रहा है के लिए है। सभी माइग्रेशन मेरे स्थानीय में एक ताजा डेटाबेस के साथ भी ठीक काम कर रहे हैं। लेकिन eb-activity.log पर दिखाई देने वाली त्रुटि निम्न है।

Synchronizing apps without migrations: 
    Creating tables... 
    Running deferred SQL... 
    Installing custom SQL... 
    Running migrations: 
    Rendering model states.../bin/sh: line 1: 21228 Killed     python manage.py migrate --noinput 
    (ElasticBeanstalk::ExternalInvocationError) 

नोट: वही कंटेनर आदेश पहले एलैस्टिक बीनस्टॉक में किसी भी मुद्दे के बिना ठीक काम कर रहे थे। मैंने माइग्रेट कमांड के साथ --verbose 3 के साथ प्रयास किया लेकिन मुझे कोई अन्य डीबग संदेश नहीं मिला।

कोई समाधान? अग्रिम में धन्यवाद।

+0

दो विचार: क्या आपको [cfn-init.log] (http://qpleple.com/install-python-packages-on-elastic-beanstalk/) में कोई और जानकारी मिलती है और क्या आपने अपना [ कमांड टाइमॉट्स] (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/events.common.commandtimeout.html)? –

+0

हां, मेरा टाइमआउट पहले ही 1000 सेकंड है। यह एक टाइमआउट त्रुटि की तरह दिखता नहीं है। मैंने /var/log/cfn-init-cmd.log से त्रुटि की जांच की, यह वही त्रुटि दिखाता है। कोई विस्तृत डीबग लॉग उपलब्ध नहीं है। – Babu

+0

यदि आपको ईबीएस से कोई त्रुटि या अन्य उपयोगी निदान नहीं मिल रहा है, तो शायद कुछ और कर रहा है? क्या आपने सोचा है कि यह ओएस हो सकता है - उदा। क्या आप [ओओएम हत्यारा] का शिकार हैं (http://stackoverflow.com/questions/726690/who-killed-my-process-and- क्यों)? –

उत्तर

5

खराब लॉगिंग तंत्र के साथ समस्या निवारण की बात आती है जब एडब्ल्यूएस डेवलपर अनुकूल नहीं है।

एक उग्र एडब्ल्यूएस उपयोगकर्ता के रूप में जिन्होंने हाल ही में एक Django परियोजना के लिए ईबीएस eval'd, मैं पूरी तरह से इसी कारण से सहमत हूं। मैं इसके लिए हेरोकू के साथ जा रहा था और कारणों में मैं नहीं जाऊंगा लेकिन मुझे लगता है कि निम्नलिखित पैटर्न किसी भी तरह से मदद करता है।

अपने प्रोड पर्यावरण को तैयार करने के लिए कदम विभिन्न स्थानों पर जा सकते हैं; उन्हें आपके लक्षित वेब-सर्वर वातावरण पर होने की आवश्यकता नहीं है।

मैंने अपने तैनाती स्वचालन से और मेरे सामने होने वाले कार्यों में से अपने मेक/माइग्रेट कार्यों को खींच लिया। मेरे लक्षित वेब-सर्वर वातावरण में होने वाली एकमात्र चीजें सीधे उस सर्वर के कोड से संबंधित होती हैं।

दूसरे शब्दों में: मैं अनुशंसा करता हूं कि आपके पास निर्माण/परीक्षण के लिए सीआई उपकरण है, तो आप अपने वेबसर्वर के बाहर अपने तैनाती पाइपलाइन में अपने मेक/माइग्रेट और किसी अन्य तैयारी को खींचें।

  • चेकआउट कोड
  • रन (कर सहित/अल्पकालिक डेटाबेस पर विस्थापित यह संभव हो तो परीक्षण करने के लिए) रखरखाव मोड में
  • रखें एप्लिकेशन (या इसी तरह, यदि आवश्यक हो)
  • स्नैपशॉट डेटाबेस टेस्ट: की तरह कुछ
  • मेक/माइग्रेट उत्पादन पर
  • तैनात
  • तैनाती विफल रहता है, रोलबैक डीबी, रोलबैक अनुप्रयोग।

तो फिर आप अपने prod पर्यावरण के आराम के लिए अपने अनुप्रयोग सर्वर और स्वचालन के लिए स्वचालन की चिंताओं को अलग करने और दे अपने सीआई कि संभाल रहे हैं। आप उन्हें एक ही स्थान पर संभाल सकते हैं, लेकिन स्पष्ट रूप से यह ईबीएस की सुविधाओं का उपयोग करने के लिए थोड़ा सा गड़बड़ है।

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