मैंने हाल ही में अपना स्वयं का django एप्लिकेशन उत्पादन में तैनात किया है। वेबसाइट का नाम videiro.com है और इसे django HTML/CSS/JS टेलविंड में विकसित किया गया था।
मैं एक डेबियन 12 सर्वर का उपयोग कर रहा हूं जो क्लाउडफ्लेयर सुरंगों के माध्यम से मेरे एप्लिकेशन को उजागर करेगा। सभी स्थिर फ़ाइलें nginx के माध्यम से परोसी जा रही हैं और Django प्रोजेक्ट गुनिकॉर्न द्वारा चलाया जा रहा है।
इस गाइड में मैं आपको दिखाऊंगा कि मैंने इसे कैसे सेट किया।
पहली चीज़ जो आपको करनी होगी वह है सेटिंग्स.py खोलें और निम्नलिखित को बदलें
Debug = False ALLOWED_HOSTS = ['yourdomain.tld'] CSRF_COOKIE_SECURE = True CSRF_TRUSTED_ORIGINS = [ 'yourdomain.tld', ]
आपको SECRET_KEY को एक लंबी यादृच्छिक स्ट्रिंग में भी बदलना चाहिए, जिसे आपको कभी भी किसी के साथ साझा नहीं करना चाहिए।
उसके बाद .gitignore नामक एक नई फ़ाइल बनाएं और निम्नलिखित पेस्ट करें:
db.sqlite3 *.pyc
यह सुनिश्चित करेगा कि डेटाबेस हमारे सर्वर पर अपलोड नहीं किया गया है और कोई pyc फ़ाइलें भी अपलोड नहीं की गई हैं।
अब आप अपने प्रोजेक्ट को एक नए जीथब रिपॉजिटरी (या जीटिया रिपॉजिटरी) पर अपलोड कर सकते हैं। यदि आप नहीं चाहते कि हर किसी को आपके स्रोत कोड तक पहुंच प्राप्त हो, तो सुनिश्चित करें कि रिपॉजिटरी को निजी के रूप में सेट किया जाए।
यदि आप यह सुनिश्चित करना चाहते हैं कि आपका स्रोत कोड निजी रहे तो मैं आपको एक सेल्फहोस्टेड गीता इंस्टेंस सेटअप करने की सलाह देता हूं, यह कैसे करना है यह जानने के लिए सेल्फहोस्ट अपना खुद का गीता इंस्टेंस - सेल्फहोस्टेड, हल्का जीथब विकल्प पढ़ें।
git init git branch -M main git add . git commit -m "initial commit" git remote add origin https://... git push -u origin main
अब हमने यह कर लिया है कि आपको अपने सर्वर पर लॉगइन करना चाहिए
कुछ भी कॉन्फ़िगर करने से पहले सुनिश्चित करें कि आप पासवर्ड के साथ किसी भी एसएसएच लॉगिन की अनुमति नहीं देते हैं। अपने सर्वर को इस प्रकार के हमलों से सुरक्षित करने के लिए कुंजी-आधारित प्रमाणीकरण के साथ सिक्योरिंग एसएसएच का पालन करें।
अपने सर्वर पर लॉगिन करें
ssh [email protected]
सुनिश्चित करें कि आपके पैकेज डेटा पर निर्भर हैं
sudo apt update && sudo apt upgrade
अब पायथन, पिप, गिट और nginx इंस्टॉल करें
sudo apt install python3 python3-pip git nginx
अब अपने प्रोजेक्ट को अपनी होम डायरेक्टरी में क्लोन करें।
git clone https://... cd my-project
एक बार जब आप निम्नलिखित इंस्टॉल कर लें:
pip install django django-crispy-forms whitenoise
अब प्रोजेक्ट चलाने का प्रयास करें:
python3 manage.py runserver
यदि आपको कोई त्रुटि मिलती है कि कोई पैकेज गायब है तो उसे स्थापित करें और पुनः चलाएँ।
अब हम गनिकोर्न सेटअप करेंगे
पहले इसे इंस्टॉल करें
pip install gunicorn
अब अपने पसंदीदा टेक्स्ट एडिटर के साथ gunicorn.service नामक एक नई फ़ाइल बनाएं:
sudo vim /etc/systemd/system/gunicorn.service
और निम्नलिखित पेस्ट करें:
[Unit] Description=gunicorn daemon After=network.target [Service] User=YOURUSER Group=www-data WorkingDirectory=/home/YOURUSER/PROJECT ExecStart=/path/to/gunicorn --access-logfile - --workers 3 --bind 127.0.0.1:8000 PROJECTNAME.wsgi:application [Install] WantedBy=multi-user.target
अपने उपयोगकर्ता को अपने उपयोगकर्ता में बदलें।
गनिकोर्न रन का रास्ता खोजने के लिए:
which gunicorn
और आपके प्रोजेक्ट का नाम आपके प्रोजेक्ट के अंदर उस फ़ोल्डर का नाम है जिसमें सेटिंग्स.py फ़ाइल है।
अब गनिकोर्न को शुरू करने और सक्षम करने के लिए निम्नलिखित कमांड चलाएँ (बूट पर शुरू करें)
sudo systemctl daemon-reload sudo systemctl start gunicorn.service sudo systemctl enable gunicorn.service
अब यदि आप 127.0.0.1:8000 पर जाते हैं तो आपको अपना प्रोजेक्ट चलता हुआ देखना चाहिए।
लेकिन अभी तक समाप्त नहीं हुए थे
अब हमें nginx के माध्यम से अपनी स्थिर सामग्री परोसने की आवश्यकता है।
सबसे पहले अपने पसंदीदा टेक्स्ट एडिटर के साथ एक नई फ़ाइल nginx कॉन्फ़िगरेशन फ़ाइल बनाएं:
sudo vim /etc/nginx/sites-available/PROJECT
प्रोजेक्ट को अपनी इच्छानुसार बदलें
अब निम्नलिखित सामग्री चिपकाएँ:
server { listen 80; server_name YOURDOMAIN; location /static/ { alias /var/www/staticfiles/; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
बस अपने डोमेन को उस डोमेन में बदलें जिस पर इसे होस्ट किया जाएगा।
अपनी वेबसाइट को सक्षम करने के लिए एक प्रतीकात्मक लिंक बनाएं:
sudo ln -s /etc/nginx/sites-available/PROJECT /etc/nginx/sites-enabled/
nginx प्रारंभ और सक्षम करें:
sudo systemctl start nginx sudo systemctl enable nginx
पहली चीज़ जो आपको करनी होगी वह है अपने (django) प्रोजेक्ट में सीडी डालना
cd project
अब निम्न कमांड चलाएँ:
python3 manage.py collectstatic
यह staticfiles नामक एक नया फ़ोल्डर बनाएगा
अब स्थिर फ़ाइलें सेट करने के लिए हमारे पास दो विकल्प हैं:
मैं दूसरा विकल्प अपनाऊंगा:
सबसे पहले /var/www
में staticfiles नामक एक नई फ़ाइल बनाएं
sudo mkdir -p /var/www/staticfiles
अब अपने प्रोजेक्ट से सभी स्टेटिकफाइल्स को वहां कॉपी करें:
sudo cp staticfiles/* /var/www/staticfiles
अब /var/www
में सीडी डालें
cd /var/www
सभी फ़ाइलों का स्वामित्व बदलें
sudo chown www-data:www-data staticfiles sudo chown www-data:www-data staticfiles/*
nginx सेवा पुनः प्रारंभ करें:
sudo systemctl restart nginx
अब यदि आप यहां जाएं:
127.0.0.1
आपको अपनी वेबसाइट को सभी स्थिर फाइलों के साथ चलते हुए देखना चाहिए!
अब अपनी वेबसाइट को सार्वजनिक रूप से सुलभ बनाएं।
ऐसा करने के लिए आपको एक क्लाउडफ़ेयर खाते और क्लाउडफ़ेयर की ओर इंगित एक डोमेन की आवश्यकता होगी।
जीरो ट्रस्ट डैशबोर्ड पर सबसे पहले जाएं
नेटवर्क के अंतर्गत सुरंगों पर क्लिक करें और फिर एक सुरंग बनाएं
एक बार कनेक्टर स्थापित करने और चलाने के बाद, अपने विशिष्ट सेटअप के लिए पृष्ठ पर दिए गए निर्देशों का पालन करें।
कनेक्टर चलने के बाद आपको सार्वजनिक होस्टनाम टैब पर क्लिक करना चाहिए और एक सार्वजनिक होस्टनाम जोड़ना चाहिए।
अब आपको कुछ इस तरह देखना चाहिए:
जैसा मेरे पास है, वैसी जानकारी भरें। सेवा का प्रकार HTTP होना चाहिए और url 127.0.0.1:80 या localhost:80
होना चाहिएअब यदि आप अपने द्वारा निर्दिष्ट डोमेन पर जाते हैं तो आपको अपना ऐप चालू और चालू दिखना चाहिए।
बधाई हो!
यदि आपको यह पोस्ट अच्छी लगी और आप मेरे (ज्यादातर अवैतनिक) काम का समर्थन करना चाहते हैं, तो आप यहां दान कर सकते हैं।
यहाँ शामिल होएं
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3