Django
तैनाती
खोज…
निःशुल्क Gunicorn के साथ Django आवेदन चल रहा है
गिंकोर्न स्थापित करें
pip install gunicorn
Django प्रोजेक्ट फोल्डर से (वही फोल्डर जहां मैनेजम्यूड रहता है), gunicorn के साथ करंट django प्रोजेक्ट चलाने के लिए निम्न कमांड चलाएँ
gunicorn [projectname].wsgi:application -b 127.0.0.1:[port number]
आप सेटिंग्स को लोड करने के लिए पथ सेट करने के लिए
--env
विकल्प का उपयोग कर सकते हैंgunicorn --env DJANGO_SETTINGS_MODULE=[projectname].settings [projectname].wsgi
-D
विकल्प का उपयोग कर डेमॉन प्रक्रिया के रूप में चलाएं
गुनकोर्न की सफल शुरुआत होने पर, निम्नलिखित लाइनें कंसोल में दिखाई देंगी
Starting gunicorn 19.5.0
Listening at: http://127.0.0.1:[port number] ([pid])
....
(gunicorn सर्वर के बारे में अन्य अतिरिक्त जानकारी)
हेरोकू के साथ तैनाती
डाउनलोड Heroku टूलबेल्ट ।
अपने Django ऐप के स्रोतों की जड़ पर नेविगेट करें। आपको tk की आवश्यकता होगी
टाइप करें
heroku create [app_name]
। यदि आप एक ऐप का नाम नहीं देते हैं, तो हरोकू यादृच्छिक रूप से आपके लिए एक उत्पन्न करेगा। आपका ऐप URLhttp://[app name].herokuapp.com
Procfile
नाम से एक टेक्स्ट फ़ाइलProcfile
। अंत में एक्सटेंशन न रखें।web: <bash command to start production server>
यदि आपके पास कार्यकर्ता प्रक्रिया है, तो आप इसे भी जोड़ सकते हैं। प्रारूप में एक और पंक्ति जोड़ें:
worker-name: <bash command to start worker>
एक आवश्यकताएँ जोड़ें।
- यदि आप एक आभासी वातावरण का उपयोग कर रहे हैं, तो
pip freeze > requirements.txt
निष्पादितpip freeze > requirements.txt
- अन्यथा, एक आभासी वातावरण प्राप्त करें! । आप अपने द्वारा आवश्यक पाइथन पैकेजों को मैन्युअल रूप से सूचीबद्ध कर सकते हैं, लेकिन यह इस ट्यूटोरियल में शामिल नहीं होगा।
यह तैनाती का समय है!
-
git push heroku master
हरोकू को डिप्लॉय करने के लिए गिट रिपॉजिटरी या ड्रॉपबॉक्स फोल्डर की जरूरत होती है। आप वैकल्पिक रूप से
heroku.com
पर GitHub रिपॉजिटरी से स्वचालित पुनः लोडिंग सेट कर सकते हैं, लेकिन हम इसे इस ट्यूटोरियल में शामिल नहीं करेंगे।-
heroku ps:scale web=1
यह एक के लिए वेब "डायनोस" की संख्या को मापता है। आप यहाँ डायनो के बारे में अधिक जान सकते हैं ।
-
heroku open
याhttp://app-name.herokuapp.com
नेविगेट करें
युक्ति:
heroku open
आपके ब्राउज़र में डिफ़ॉल्ट ब्राउज़र में URL खोलता है।-
ऐड-ऑन जोड़ें। आपको हरकोको में प्रदान किए गए डेटाबेस के साथ "एड-ऑन" के रूप में बाँधने के लिए अपने Django ऐप को कॉन्फ़िगर करना होगा। यह उदाहरण इसे कवर नहीं करता है, लेकिन एक और उदाहरण हेरोकू में डेटाबेस को तैनात करने पर पाइपलाइन में है।
साधारण रिमोट परिनियोजन fabfile.py
फैब्रिक एक पायथन (2.5-2.7) लाइब्रेरी और कमांड-लाइन टूल है, जो एप्लिकेशन परिनियोजन या सिस्टम प्रशासन कार्यों के लिए SSH के उपयोग को व्यवस्थित बनाने के लिए है। यह आपको कमांड लाइन के माध्यम से मनमाने पायथन कार्यों को निष्पादित करने देता है।
pip install fabric
माध्यम से कपड़े स्थापित करें
अपने मूल निर्देशिका में fabfile.py
बनाएँ:
#myproject/fabfile.py
from fabric.api import *
@task
def dev():
# details of development server
env.user = # your ssh user
env.password = #your ssh password
env.hosts = # your ssh hosts (list instance, with comma-separated hosts)
env.key_filename = # pass to ssh key for github in your local keyfile
@task
def release():
# details of release server
env.user = # your ssh user
env.password = #your ssh password
env.hosts = # your ssh hosts (list instance, with comma-separated hosts)
env.key_filename = # pass to ssh key for github in your local keyfile
@task
def run():
with cd('path/to/your_project/'):
with prefix('source ../env/bin/activate'):
# activate venv, suppose it appear in one level higher
# pass commands one by one
run('git pull')
run('pip install -r requirements.txt')
run('python manage.py migrate --noinput')
run('python manage.py collectstatic --noinput')
run('touch reload.txt')
फ़ाइल निष्पादित करने के लिए, बस fab
कमांड का उपयोग करें:
$ fab dev run # for release server, `fab release run`
नोट: आप github के लिए ssh कुंजियों को कॉन्फ़िगर नहीं कर सकते हैं और सिर्फ fabfile रन के दौरान लॉगिन और पासवर्ड को मैन्युअल रूप से टाइप करते हैं, कुंजियों के साथ भी।
Heroku Django स्टार्टर टेम्पलेट का उपयोग करना।
यदि आप अपनी Django वेबसाइट Heroku पर होस्ट करने की योजना बना रहे हैं, तो आप Heroku Django Starter Template का उपयोग करके अपनी परियोजना शुरू कर सकते हैं:
django-admin.py startproject --template=https://github.com/heroku/heroku-django-template/archive/master.zip --name=Procfile YourProjectName
इसमें व्हाट्सएप के माध्यम से Django की स्टैटिक फाइल सर्विंग फंक्शनलिटी के लिए स्टैटिक फाइल्स, डेटाबेस सेटिंग्स, गिंकोर्न आदि के लिए प्रोडक्शन-रेडी कॉन्फ़िगरेशन और एन्हांसमेंट्स हैं। यह आपका समय बचाएगा, यह हरोकू पर होस्टिंग के लिए ऑल-रेडी है, बस इस टेम्पलेट के शीर्ष पर अपनी वेबसाइट बनाएं
हरोकू पर इस टेम्प्लेट को तैनात करने के लिए:
git init
git add -A
git commit -m "Initial commit"
heroku create
git push heroku master
heroku run python manage.py migrate
बस!
Django तैनाती के निर्देश। लिनक्स पर Ubuntu (Gunicorn + पर्यवेक्षक) (उबंटू)
तीन बुनियादी उपकरण।
- nginx - मुक्त, खुला-स्रोत, उच्च प्रदर्शन HTTP सर्वर और उच्च प्रदर्शन के साथ रिवर्स प्रॉक्सी;
- gunicorn - 'ग्रीन यूनिकॉर्न' UNIX के लिए पायथन WSGI HTTP सर्वर है (आपके सर्वर को प्रबंधित करने के लिए आवश्यक);
- पर्यवेक्षक - एक क्लाइंट / सर्वर प्रणाली जो अपने उपयोगकर्ताओं को UNIX जैसे ऑपरेटिंग सिस्टम पर कई प्रक्रियाओं की निगरानी और नियंत्रण करने की अनुमति देती है। जब आप ऐप या सिस्टम क्रैश करते हैं, तो आपका django / celery / अजवाइन कैम, आदि को पुनरारंभ करता है;
आदेश में ओ.टी. इसे सरल बनाएं, मान लें कि आपका ऐप इस निर्देशिका में स्थित है: /home/root/app/src/
और हम root
उपयोगकर्ता का उपयोग करने जा रहे हैं (लेकिन आपको अपने ऐप के लिए अलग उपयोगकर्ता बनाना चाहिए)। इसके अलावा हमारी वर्चुअलाइजेशन /home/root/app/env/
पाथ में स्थित होगी।
nginx
चलो nginx के साथ शुरू करते हैं। यदि नग्नेक्स पहले से मशीन पर नहीं है, तो इसे sudo apt-get install nginx
। बाद में आपको अपनी nginx निर्देशिका /etc/nginx/sites-enabled/yourapp.conf
में एक नई कॉन्फ़िग फ़ाइल /etc/nginx/sites-enabled/yourapp.conf
। अगर default.conf
नाम की कोई फाइल है - तो उसे हटा दें।
एक nginx conf फ़ाइल के लिए कोड, जो सॉकेट फ़ाइल का उपयोग करके आपकी सेवा को चलाने का प्रयास करेगा; बाद में वहाँ पर एक अंगरखा का विन्यास होगा। सॉकेट फ़ाइल का उपयोग यहाँ nginx और gunicorn के बीच संवाद करने के लिए किया जाता है। यह बंदरगाहों का उपयोग करने के साथ भी किया जा सकता है।
# your application name; can be whatever you want
upstream yourappname {
server unix:/home/root/app/src/gunicorn.sock fail_timeout=0;
}
server {
# root folder of your application
root /home/root/app/src/;
listen 80;
# server name, your main domain, all subdomains and specific subdomains
server_name yourdomain.com *.yourdomain.com somesubdomain.yourdomain.com
charset utf-8;
client_max_body_size 100m;
# place where logs will be stored;
# folder and files have to be already located there, nginx will not create
access_log /home/root/app/src/logs/nginx-access.log;
error_log /home/root/app/src/logs/nginx-error.log;
# this is where your app is served (gunicorn upstream above)
location / {
uwsgi_pass yourappname;
include uwsgi_params;
}
# static files folder, I assume they will be used
location /static/ {
alias /home/root/app/src/static/;
}
# media files folder
location /media/ {
alias /home/root/app/src/media/;
}
}
GUNICORN
अब हमारी GUNICORN स्क्रिप्ट, जो सर्वर पर django एप्लिकेशन को चलाने के लिए जिम्मेदार होगी। पहली बात यह है कि वर्चुअल वातावरण में गनपॉर्न को pip install gunicorn
साथ pip install gunicorn
।
#!/bin/bash
ME="root"
DJANGODIR=/home/root/app/src # django app dir
SOCKFILE=/home/root/app/src/gunicorn.sock # your sock file - do not create it manually
USER=root
GROUP=webapps
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=yourapp.yoursettings
DJANGO_WSGI_MODULE=yourapp.wsgi
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source /home/root/app/env/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Gunicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec /home/root/app/env/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name root \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
Gunicorn प्रारंभ स्क्रिप्ट को चलाने में सक्षम होने के लिए इसे निष्पादन मोड सक्षम होना चाहिए
sudo chmod u+x /home/root/app/src/gunicorn_start
अब आप अपने gunicorn सर्वर को केवल उपयोग करने में सक्षम कर ./gunicorn_start
पर्यवेक्षक
जैसा कि शुरुआत में कहा गया था, हम चाहते हैं कि एक पर्यवेक्षक द्वारा विफल होने पर हमारे आवेदन को फिर से शुरू किया जाए। यदि पर्यवेक्षक सर्वर पर अभी तक sudo apt-get install supervisor
साथ स्थापित नहीं है।
पहली बार पर्यवेक्षक स्थापित करें। फिर एक बनाने .conf
अपने मुख्य निर्देशिका में फ़ाइल /etc/supervisor/conf.d/your_conf_file.conf
कॉन्फ़िगरेशन फ़ाइल सामग्री:
[program:yourappname]
command = /home/root/app/src/gunicorn_start
user = root
stdout_logfile = /home/root/app/src/logs/gunicorn_supervisor.log
redirect_stderr = true
त्वरित संक्षिप्त, [program:youappname]
की शुरुआत में आवश्यक है, यह हमारा पहचानकर्ता होगा। यह भी stdout_logfile
एक फ़ाइल है जहाँ लॉग को संग्रहीत किया जाएगा, पहुँच और त्रुटियाँ दोनों।
ऐसा करने के बाद हमें अपने पर्यवेक्षक को बताना होगा कि हमने अभी नई कॉन्फ़िगरेशन फ़ाइल जोड़ी है। ऐसा करने के लिए, अलग-अलग उबंटू संस्करण के लिए अलग-अलग प्रक्रिया है।
Ubuntu version 14.04 or lesser
, बस उन कमांड को चलाएं:
sudo supervisorctl reread
reread -> सभी कॉन्फ़िगरेशन कैटलॉग के अंदर सभी कॉन्फ़िगरेशन फ़ाइलों को sudo supervisorctl reread
लोड करें यह प्रिंट आउट होना चाहिए: yourappname: available
sudo supervisorctl update
-> नए जोड़े गए कॉन्फिगरेशन फाइल्स को सुपरवाइज़र अपडेट करता है; आपको प्रिंट आउट करना चाहिए : जोड़ा गया प्रक्रिया समूह
Ubuntu 16.04
रन के लिए:
sudo service supervisor restart
और यह जांचने के लिए कि आपका ऐप सही तरीके से चल रहा है या नहीं
sudo supervisorctl status yourappname
यह प्रदर्शित होना चाहिए:
yourappname RUNNING pid 18020, uptime 0:00:50
इस प्रक्रिया का लाइव प्रदर्शन प्राप्त करने के लिए, इस वीडियो को देखें ।
Apache / nginx की स्थापना के बिना स्थानीय रूप से तैनात करना
स्थिर तैनाती के लिए Apache / Nginx का उपयोग करने के लिए उत्पादन परिनियोजन कॉल का अनुशंसित तरीका। इस प्रकार, जब DEBUG
गलत स्थिर है और मीडिया सामग्री लोड करने में विफल रहती है। हालाँकि, हम अपाचे / Nginx सर्वर को अपने ऐप के उपयोग के लिए सेटअप किए बिना परिनियोजन में स्थिर सामग्री लोड कर सकते हैं:
python manage.py runserver --insecure
यह केवल स्थानीय परिनियोजन (जैसे LAN) के लिए अभिप्रेत है और इसका उपयोग कभी भी उत्पादन में नहीं किया जाना चाहिए और यह तभी उपलब्ध होता है जब staticfiles
ऐप आपके प्रोजेक्ट की INSTALLED_APPS
सेटिंग में हो।