खोज…


निःशुल्क Gunicorn के साथ Django आवेदन चल रहा है

  1. गिंकोर्न स्थापित करें

    pip install gunicorn

  1. 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 विकल्प का उपयोग कर डेमॉन प्रक्रिया के रूप में चलाएं

  1. गुनकोर्न की सफल शुरुआत होने पर, निम्नलिखित लाइनें कंसोल में दिखाई देंगी

    Starting gunicorn 19.5.0

    Listening at: http://127.0.0.1:[port number] ([pid])

    .... (gunicorn सर्वर के बारे में अन्य अतिरिक्त जानकारी)

हेरोकू के साथ तैनाती

  1. डाउनलोड Heroku टूलबेल्ट

  2. अपने Django ऐप के स्रोतों की जड़ पर नेविगेट करें। आपको tk की आवश्यकता होगी

  3. टाइप करें heroku create [app_name] । यदि आप एक ऐप का नाम नहीं देते हैं, तो हरोकू यादृच्छिक रूप से आपके लिए एक उत्पन्न करेगा। आपका ऐप URL http://[app name].herokuapp.com

  4. Procfile नाम से एक टेक्स्ट फ़ाइल Procfile । अंत में एक्सटेंशन न रखें।

    web: <bash command to start production server>
    

    यदि आपके पास कार्यकर्ता प्रक्रिया है, तो आप इसे भी जोड़ सकते हैं। प्रारूप में एक और पंक्ति जोड़ें: worker-name: <bash command to start worker>

  5. एक आवश्यकताएँ जोड़ें।

  • यदि आप एक आभासी वातावरण का उपयोग कर रहे हैं, तो pip freeze > requirements.txt निष्पादित pip freeze > requirements.txt
  • अन्यथा, एक आभासी वातावरण प्राप्त करें! । आप अपने द्वारा आवश्यक पाइथन पैकेजों को मैन्युअल रूप से सूचीबद्ध कर सकते हैं, लेकिन यह इस ट्यूटोरियल में शामिल नहीं होगा।
  1. यह तैनाती का समय है!

    1. git push heroku master

    हरोकू को डिप्लॉय करने के लिए गिट रिपॉजिटरी या ड्रॉपबॉक्स फोल्डर की जरूरत होती है। आप वैकल्पिक रूप से heroku.com पर GitHub रिपॉजिटरी से स्वचालित पुनः लोडिंग सेट कर सकते हैं, लेकिन हम इसे इस ट्यूटोरियल में शामिल नहीं करेंगे।

    1. heroku ps:scale web=1

    यह एक के लिए वेब "डायनोस" की संख्या को मापता है। आप यहाँ डायनो के बारे में अधिक जान सकते हैं

    1. heroku open या http://app-name.herokuapp.com नेविगेट करें

    युक्ति: heroku open आपके ब्राउज़र में डिफ़ॉल्ट ब्राउज़र में URL खोलता है।

  2. ऐड-ऑन जोड़ें। आपको हरकोको में प्रदान किए गए डेटाबेस के साथ "एड-ऑन" के रूप में बाँधने के लिए अपने 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 + पर्यवेक्षक) (उबंटू)

तीन बुनियादी उपकरण।

  1. nginx - मुक्त, खुला-स्रोत, उच्च प्रदर्शन HTTP सर्वर और उच्च प्रदर्शन के साथ रिवर्स प्रॉक्सी;
  2. gunicorn - 'ग्रीन यूनिकॉर्न' UNIX के लिए पायथन WSGI HTTP सर्वर है (आपके सर्वर को प्रबंधित करने के लिए आवश्यक);
  3. पर्यवेक्षक - एक क्लाइंट / सर्वर प्रणाली जो अपने उपयोगकर्ताओं को 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 सेटिंग में हो।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow