मेरे पास इलास्टिक बीनस्टॉक के साथ एक अजीब मुद्दा है। मैंने एक 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 }}
और फिर परियोजना को फिर से तैयार किया।
समस्या यह है कि अपाचे निर्देश वहाँ रहता है। मैंने निर्देश को मैन्युअल रूप से हटाने का भी प्रयास किया, लेकिन अगली तैनाती के बाद यह फिर से प्रकट होता है। मैंने पर्यावरण के पुनर्निर्माण की भी कोशिश की, लेकिन इसने अभी भी गलत अपाचे विन्यास निर्देश बनाया।
मुझे इससे कैसे छुटकारा मिल सकता है?
2 जवाब
यह पता चला है, wsgi.conf
कॉन्फ़िगरेशन फ़ाइल को .ebextensions/python.config
फाइल में ओवरराइट किया जा सकता है। यह जो मैंने किया है:
SSH EC2 उदाहरण
eb ssh
द्वारा औरcat /etc/httpd/conf.d/wsgi.conf
के साथwsgi.conf
की सामग्री प्राप्त करें।एक फ़ाइल
.ebextensions/wsgi.conf
बनाएं और वहां पिछले चरण की सामग्री को कॉपी करें। स्थैतिक निर्देशिका और फ़ेविकॉन के बारे में अपाचे निर्देश निकालें।.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/"
Git और
eb deploy
के साथ परिनियोजित करें।
अनुलेख स्थिर निर्देशिका से फ़ेविकॉन दिखाने के लिए, मुझे base.html
टेम्प्लेट में अपना पूरा पथ जोड़ना होगा:
<link rel="shortcut icon" href="{{ STATIC_URL }}site/img/favicon.ico" />
आप बस अपनी खुद की wsgi.conf (httpd conf) कॉपी कर सकते हैं मूल निर्देशिका में और इस तरह आपकी फ़ाइल डिफ़ॉल्ट के बजाय उपयोग की जाएगी।
container_commands:
03_wsgireplace:
command: 'cp . ebextensions/wsgi.conf ../wsgi.conf'
संबंधित सवाल
नए सवाल
django
Django एक ओपन-सोर्स सर्वर-साइड वेब एप्लीकेशन फ्रेमवर्क है जिसे पायथन में लिखा गया है। यह कम कोड, विशेष-अतिरेक पर विशेष ध्यान देने और निहित से अधिक स्पष्ट होने के साथ जटिल डेटा-संचालित वेबसाइटों और वेब एप्लिकेशन बनाने के लिए आवश्यक प्रयास को कम करने के लिए डिज़ाइन किया गया है।