मेरे पास इलास्टिक बीनस्टॉक के साथ एक अजीब मुद्दा है। मैंने एक Django प्रोजेक्ट को एक ऑटो-स्कैलिंग EC2 इंस्टेंस में तैनात किया।

.ebextensions निर्देशिका में अंत में इन पंक्तियों के साथ python.config फ़ाइल थी:

option_settings:
  "aws:elasticbeanstalk:application:environment":
    DJANGO_SETTINGS_MODULE: "myapp.settings_eb_staging"
    "PYTHONPATH": "/opt/python/current/app/django-myapp:$PYTHONPATH"
  "aws:elasticbeanstalk:container:python":
    WSGIPath: myapp/wsgi.py
    NumProcesses: 3
    NumThreads: 20
  "aws:elasticbeanstalk:container:python:staticfiles":
    "/static/": "myapp/static/"
    "/favicon.ico": "myapp/static/site/img/favicon.ico"

जब मैं के साथ परियोजना को तैनात किया

$ eb deploy

परिनियोजन प्रक्रिया ने यह अपाचे कॉन्फ़िगरेशन बनाया है जो /etc/httpd/conf.d/wsgi.conf पर पाया जा सकता है:

Alias /favicon.ico /opt/python/current/app/myapp/static/site/img/favicon.ico
<Directory /opt/python/current/app/myapp/static/site/img/favicon.ico>
Order allow,deny
Allow from all
</Directory>

यह स्पष्ट रूप से गलत था, क्योंकि favicon.ico एक फ़ाइल है, निर्देशिका नहीं है।

इसलिए मैंने python.config फ़ाइल से अंतिम पंक्ति को हटाने का प्रयास किया:

{{ X 0 }}

और फिर परियोजना को फिर से तैयार किया।

समस्या यह है कि अपाचे निर्देश वहाँ रहता है। मैंने निर्देश को मैन्युअल रूप से हटाने का भी प्रयास किया, लेकिन अगली तैनाती के बाद यह फिर से प्रकट होता है। मैंने पर्यावरण के पुनर्निर्माण की भी कोशिश की, लेकिन इसने अभी भी गलत अपाचे विन्यास निर्देश बनाया।

मुझे इससे कैसे छुटकारा मिल सकता है?

1
Aidas Bendoraitis 21 नवम्बर 2015, 08:22

2 जवाब

सबसे बढ़िया उत्तर

यह पता चला है, wsgi.conf कॉन्फ़िगरेशन फ़ाइल को .ebextensions/python.config फाइल में ओवरराइट किया जा सकता है। यह जो मैंने किया है:

  1. SSH EC2 उदाहरण eb ssh द्वारा और cat /etc/httpd/conf.d/wsgi.conf के साथ wsgi.conf की सामग्री प्राप्त करें।

  2. एक फ़ाइल .ebextensions/wsgi.conf बनाएं और वहां पिछले चरण की सामग्री को कॉपी करें। स्थैतिक निर्देशिका और फ़ेविकॉन के बारे में अपाचे निर्देश निकालें।

  3. .ebextensions/python.config संशोधित करें और /tmp/ निर्देशिका {जो संभवतः तैनाती प्रक्रिया के दौरान उपयोग की जाती है) को कॉपी करने के लिए एक कमांड जोड़ें wsgi.conf

    container_commands:
      01_refresh_apache_conf:
        command: "cp .ebextensions/wsgi.conf /tmp/wsgi.conf"
      02_migrate:
        command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
    leader_only: true
      03_collectstatic:
        command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"
    
    option_settings:
      "aws:elasticbeanstalk:application:environment":
        DJANGO_SETTINGS_MODULE: "myapp.settings_eb_staging"
        "PYTHONPATH": "/opt/python/current/app/django-myapp:$PYTHONPATH"
      "aws:elasticbeanstalk:container:python":
        WSGIPath: myapp/wsgi.py
        NumProcesses: 3
        NumThreads: 20
      "aws:elasticbeanstalk:container:python:staticfiles":
        "/static/": "myapp/static/"
    
  4. Git और eb deploy के साथ परिनियोजित करें।

अनुलेख स्थिर निर्देशिका से फ़ेविकॉन दिखाने के लिए, मुझे base.html टेम्प्लेट में अपना पूरा पथ जोड़ना होगा:

<link rel="shortcut icon" href="{{ STATIC_URL }}site/img/favicon.ico" />
0
Aidas Bendoraitis 21 नवम्बर 2015, 11:53

आप बस अपनी खुद की wsgi.conf (httpd conf) कॉपी कर सकते हैं मूल निर्देशिका में और इस तरह आपकी फ़ाइल डिफ़ॉल्ट के बजाय उपयोग की जाएगी।

container_commands:
  03_wsgireplace:
    command: 'cp . ebextensions/wsgi.conf ../wsgi.conf'
0
Gustaf 22 नवम्बर 2015, 14:15