25

मैं अमेज़ॅन वेब सर्विसेज 'लोचदार बीनस्टॉक के तहत डीजेगो को स्थापित करने के लिए कई दिनों के लिए प्रयास कर रहा हूं। मुझे लगता है कि समस्या मैं मार रहा हूँ इस एक है:एडब्ल्यूएस लोचदार बीनस्टॉक पर डीजेंगो की स्थापना: डब्लूएसजीआईपीएथ नहीं मिला

ERROR - Your WSGIPath refers to a file that does not exist. 

मैं ट्यूटोरियल here पीछा किया और सभी चरण 6 के अंत तक अच्छी तरह से चला जाता है, लेकिन मैं मुझे के जीवन के लिए कुछ भी अन्य प्रदर्शित करने के लिए नहीं मिल सकता है चरण 5, # 2 से जेनेरिक लोचदार बीनस्टॉक पृष्ठ की तुलना में। जब मैं

./manage.py runserver 

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

मैंने this tutorial में वर्णित एक python.config फ़ाइल जोड़ा।

-.git/ 
-.mysite/ 
    -myapp/ 
     -__init__.py 
     -models.py 
     -tests.py 
     -views.py 
    -mysite/ 
     -__init__.py 
     -settings.py 
     -urls.py 
     -wsgi.py 
    -.ebextensions/ 
     -python.config 
    -manage.py 
    -mysite.db 
    -requirements.txt 

मेरी settings.py से::

यहाँ मेरी फ़ाइल संरचना है

python.config
DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': 'mysite.db', 
     'USER': '', 
     'PASSWORD': '', 
     'HOST': '', 
     'PORT': '', 
    } 
} 

यहाँ है:

container_commands: 01_syncdb:  
    command: "django-admin.py syncdb --noinput" 
    leader_only: true 

option_settings: 
    - namespace: aws:elasticbeanstalk:container:python 
     option_name: WSGIPath 
     value: mysite/wsgi.py 
    - option_name: DJANGO_SETTINGS_MODULE 
     value: mysite.settings 
    - option_name: AWS_SECRET_KEY 
     value: <This is my secret key> 
    - option_name: AWS_ACCESS_KEY_ID 
     value: <This is my access key> 

वहाँ एक अन्य जगह मैं अपने परिभाषित करने की जरूरत है WSGIPath? क्या एडब्ल्यूएस कंसोल के माध्यम से ऐसा करने का कोई तरीका है? क्या मुझे बस ईबी को पूरी तरह से छोड़ना चाहिए और सीधे ईसी 2 का उपयोग करना चाहिए?

+6

इस मुद्दे को विस्तृत [यहां] (https://forums.aws.amazon.com/thread.jspa?messageID=396656񠵰) के रूप में हल किया गया है। मैं एक निर्देशिका में सभी कोड संग्रहीत कर रहा था, और मैंने उस संपूर्ण निर्देशिका को ज़िप (और अपलोड) किया।मुझे क्या करना चाहिए था निर्देशिका की बजाय उस निर्देशिका में सभी प्रासंगिक फ़ाइलों को ज़िपित किया गया था, इसलिए फ़ाइलों को अनजिप करते समय सभी साइट की रूट निर्देशिका में होंगे। उम्मीद है कि यह एक ही समस्या के साथ किसी और की मदद करता है। मुझे लगता है कि मैं जीयूआई और गिट के माध्यम से अपलोड करने के लिए एक ही मुद्दे में भाग गया। – Xephryous

+2

आपको प्रश्न संपादित नहीं करना चाहिए, लेकिन अपना स्वयं का जवाब जोड़ें और इसे स्वीकार करें। – bikeshedder

+0

कृपया ध्यान दें कि असामान्य परिवर्तन तैनात नहीं किए जा रहे हैं, इसलिए आपके पास ईबी सीएलआई के साथ इसे तैनात करने के लिए किए गए ".ebextensions" फ़ोल्डर पर आपके सभी परिवर्तन होना चाहिए। – nisevi

उत्तर

13

से https://forums.aws.amazon.com/thread.jspa?messageID=396656&#396656

".ebextensions" निर्देशिका अपने आवेदन के रूट स्तर निर्देशिका में होना चाहिए, लेकिन लॉग उत्पादन से, निर्देशिका "mysite/.ebextensions" निर्देशिका में बजाय है। उदाहरण के लिए, जब आप चलाने डॉक्स में Django ट्यूटोरियल पालन करने के बाद "Git aws.push" अपने रूट निर्देशिका इस प्रकार दिखाई देगा:

. 
├── .ebextensions 
│ └── python.config 
├── .elasticbeanstalk 
│ ├── config 
├── .git 
├── .gitignore 
├── manage.py 
├── mysite 
│ ├── __init__.py 
│ ├── settings.py 
│ ├── urls.py 
│ └── wsgi.py 
└── requirements.txt 
इसके बजाय इस बात का

:

. 
└── mysite 
    ├── .ebextensions 
    ├── .elasticbeanstalk 
    ├── .git 
    ├── .gitignore 
    ├── manage.py 
    ├── mysite 
    └── requirements.txt 
+2

वह वही है! मैंने वास्तव में एक टिप्पणी में अपने प्रश्न का उत्तर दिया [यहां] (http://stackoverflow.com/questions/13102076/setting-up-django-on-aws-elastic-beanstalk-wsgipath-not-found/17711770?iemail=1&noredirect = 1 # comment17943273_13102076)। मुझे लगता है कि उस समय या कुछ जवाब देने के लिए मेरे पास पर्याप्त SO प्रतिष्ठा नहीं थी। वैसे भी, मुद्दा हल हो गया है। – Xephryous

+1

हमें psycopg2 के साथ कोई समस्या नहीं थी। उन लाइनों को हमारे .ebextensions/01-app.config फ़ाइल में जोड़कर इसे ठीक किया गया: पैकेज: यम: पोस्टग्रेस्क्ल 3 9-डीवेल: [] –

8

.elasticbeanstalk/optionsettings.your-app-name खोजें में आपके ऐप की रूट निर्देशिका। WSGIPath के लिए खोजें और सुनिश्चित करें कि यह आपके इच्छित मार्ग है। ऐसा लगता है कि यह application.py पर डिफ़ॉल्ट है।

+0

क्या सापेक्ष पथ है? इसके अलावा 'eb' स्क्रिप्ट उस मान को ओवरराइट करना जारी रखती है जो मैंने वहां रखा था। – Mikhail

1

ठीक है, यहां दस लाख चीजों की कोशिश करने के बाद मेरे लिए क्या काम किया गया है। पर्यावरण को अद्यतन करने के लिए आपको eb update चलाएं।

तो यकीन है कि .elasticbeanstalk/optionsettings.whatever-env क्या आप यह चाहते करने के लिए सेट WSGIPath है बनाने के लिए, और यह सुनिश्चित करें .ebextensions/whatever.config इस हो:

option_settings: 
    - namespace: aws:elasticbeanstalk:container:python 
    option_name: WSGIPath 
    value: whatever/wsgi.py 

फिर eb update चलाने के लिए और यह चाहिए काम करते हैं। याद रखें कि आपको यह सुनिश्चित करने के लिए उपनाम सेट करना होगा कि आपका eb कमांड वास्तव में काम करता है।उदाहरण के लिए:

alias eb="python2.7 ../AWS-ElasticBeanstalk-CLI-2.6.3/eb/linux/python2.7/eb" 
+1

मेरा मानना ​​है कि 'ईबी अपडेट' हाल ही में 'eb तैनाती' में बदल गया है। 2016 में इस तरह की जानकारी की तलाश करने वाले लोगों के लिए यह उपयोगी हो सकता है :) – Vlad

1

मैं एक ही समस्या थी ( "आपका WSGIPath एक फ़ाइल जो मौजूद नहीं है को संदर्भित करता है"), और अंत में एक समाधान नहीं मिला:

  • समस्या: मैं डाउनलोड करने गया था सीधे गिटहब ("ज़िप डाउनलोड करें") से परियोजना का बंडल, जो शायद एक अनुचित संरचना थी।
  • समाधान: मैं कंप्रेस कमांड का उपयोग करके, मुख्य फ़ोल्डर के बिना फ़ाइलों को ठीक से ज़िप करता हूं। (सीएफ http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deployment.source.html)।

नोट: सबसे पहले, मैं गलत दिशा में, खोज रहा था क्योंकि ईबी भी इस संदेश को दिखा रहा था: निर्माण के दौरान त्रुटि हुई: कमान 01_migrate विफल रहा है।। इसलिए मैं * .config सहित फ़ाइलों को सही ढंग से स्थित थे।

2

डॉट पर एडब्ल्यूएस के दस्तावेज़ों का पालन करने के बाद मुझे एक ही समस्या थी। इससे बचने के लिए मैंने क्या किया था, एडब्ल्यूएसआई डॉक्स द्वारा निर्देशित आदेश (~/ebdjango $ eb init -p python2.7 django-tutorial) के आदेश के बिना, चरणबद्ध रूप से ईबी सीएलआई चरण के माध्यम से एक आवेदन शुरू किया गया था, और एक कदम से पर्यावरण कदम बनाना भी। चरणों मैं ईबी CLI में ले लिया निम्नलिखित हैं:

  1. प्रारंभ आवेदन
    1. eb init
    2. एक डिफ़ॉल्ट क्षेत्र
    3. आवेदन नाम (दबाने में प्रवेश द्वारा इस्तेमाल किया डिफ़ॉल्ट)
    4. पुष्टि दर्ज चयन करें कि मैं पाइथन
    5. का उपयोग कर रहा हूं चयनित पाइथन संस्करण मेरे स्थानीय पर्यावरण
    6. के साथ संगत 10
  2. सेट करें SSH पर्यावरण बनाएं
    1. eb create
    2. दर्ज पर्यावरण नाम
    3. दर्ज DNS CNAME उपसर्ग (दबाकर इस्तेमाल किया डिफ़ॉल्ट प्रवेश) (प्रवेश दबाकर इस्तेमाल किया डिफ़ॉल्ट)
    4. करें एक लोड बैलेंसर प्रकार (मैंने 1 दर्ज करके क्लासिक का चयन किया)

पर्यावरण बाद मैं eb config का उपयोग ईबी के कॉन्फ़िग फ़ाइल को खोलने के लिए इस बात की पुष्टि करने के लिए मेरे WSGI के लिए पथ यह क्या किया जाना चाहिए है कि बनाई गई है:

aws:elasticbeanstalk:container:python: 
    NumProcesses: '1' 
    NumThreads: '15' 
    StaticFiles: /static/=static/ 
    WSGIPath: path/to/wsgi.py 

कोई भी परिवर्तन किए रहे हैं, तो सुनिश्चित करें कि आप फ़ाइल को सहेजने के बनाने के लिए और पुष्टि करें कि पिछले चरणों में निर्दिष्ट डोमेन नाम का उपयोग कर ब्राउज़र विंडो खोलने के लिए अपने टर्मिनल में eb open दर्ज करके सबकुछ बढ़ गया है।

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