झांगो अनुप्रयोग उपयोजित कसे करावे:

सर्वांना अभिवादन कसे करावे, <» मधील हा माझा पहिला लेख आहे DesdeLinux (माझ्या xD मसुद्यांमध्ये असलेल्या अनेकांपैकी), मला आशा आहे की ते तुमच्यासाठी उपयुक्त आहे 😀

बरं, माझ्या नवीन आणि सद्य नोकरीमध्ये, या क्षणी अनेक प्रणालींचे जाँगोमध्ये स्थलांतर होत आहे (किती विचित्र आहे? एक्सडी) आणि विकासाव्यतिरिक्त माझे एक काम म्हणजे या गोष्टी तयार करणे, चांगली शिकवणूक म्हणून, वास्तविक सर्व्हरवर उत्पादन तयार करण्याची ही माझी पहिली वेळ असल्याने: $ मी स्टॅकच्या प्रत्येक आवश्यक पॅकेजेसचे अधिकृत डॉक वाचण्यास सुरवात केली (गनीकॉर्न आणि सुपरवायझर्ड सर्वांपेक्षा जास्त) आणि ते पाहून शिकवण्या स्पॅनिश मध्ये ते मला काही बाबींमध्ये फारसे स्पष्ट नव्हते, डांझानो, गॅनिकॉर्न, सुपरव्हिझोर्ड, निगिनेक्स आणि पोस्टग्रीक्ल स्टॅकच्या आधारे मी अनुप्रयोग तयार करण्याच्या चरणांचे एक मिनी मार्गदर्शक तयार करण्याचे ठरविले.

मी जिथे काम करीत आहे तेथे सर्व्हर अद्यापही डेबियन स्क्झी चालवित आहेत, परंतु मार्गदर्शक इतर वितरणासाठी पूर्णपणे वैध असले पाहिजे ... तर आपण थेट त्या बिंदूवर जाऊ आणि प्रारंभ करू:

मी एक सुपर वापरकर्ता म्हणून काम करेन. सर्व प्रथम, खालील पॅकेजेस आवश्यक आहेत:

पीआयपी -> पायथनसाठी पॅकेजेस स्थापित आणि व्यवस्थापित करण्याचे साधन
aptitude install python-pip

Nginx -> वेब सर्व्हर (आम्ही याचा वापर उलट प्रॉक्सी म्हणून करू आणि स्थिर फायली 'आयएमजी, जेएस, सीएसएस' कॅशे करण्यासाठी) आम्ही हे यासह स्थापित केलेः
aptitude install nginx

पर्यवेक्षक -> आपला अनुप्रयोग व्यवस्थापित करण्यासाठी आणि परीक्षण करण्यासाठी अनुप्रयोग, जरी तो बर्‍याच गोष्टींसाठी वापरला जातो. आम्ही हे यासह स्थापित करतो:
aptitude install supervisor

व्हर्चुआलेनव्ह -> आमच्या अनुप्रयोगासाठी सानुकूलित व्हर्च्युअल एक्झिक्युशन वातावरण तयार करण्यास आम्हाला मदत करते. आम्ही हे यासह स्थापित करतो:
aptitude install python-virtualenv

गनिकॉर्न -> अजगर साठी वेब सर्व्हर (आम्ही अद्याप हे स्थापित करणार नाही)

मी गृहित धरू की त्यांच्याकडे आधीपासूनच पोस्टग्रेस्क्ल स्थापित केलेले आणि कॉन्फिगर केलेले असावे

सायकोपजी 2 -> अजगरासाठी पोस्टग्रेस्क्ल कनेक्टर (आम्ही अद्याप तो स्थापित करणार नाही)

व्हर्चुएलेनव्ह सह आभासी वातावरण तयार करा:

प्रथम आपण कार्य करण्याच्या निर्देशिकेत जाऊ, जे आपण उत्पादनात वापरण्यासाठी वापरू.
cd /var/www/

नंतर या निर्देशिकेत आपण आभासी वातावरण तयार करू.
virtualenv ENV-nombreApp

मी नुकत्याच तयार केलेल्या डिरेक्टरीमध्ये जाऊ
cd ENV-nombreAPP

आम्ही या निर्देशिकेत अनुप्रयोग कॉपी करतो आणि आता आम्ही यासह वातावरण सक्रिय करण्यासाठी पुढे जाऊ:
source bin/activate

प्रॉम्प्ट आता यासारखे दिसले पाहिजे (ENV)usuario@host:

हे आता आपण करत असलेली प्रत्येक गोष्ट निर्देशिका मध्ये संचयित करेल / var / www / ENV-appname / सिस्टम पॅकेजवर परिणाम न करता

आता आम्ही directoryप्लिकेशन निर्देशिकेत जाऊ:
cd nombreApp

आम्ही अनुप्रयोग अवलंबिता (आवश्यक असल्यास) ची सूची स्थापित करणे सुरू करतो, ज्यामध्ये ते फाईलमध्ये निर्दिष्ट केले गेले आहेत आवश्यकता.txt:
pip install -r requirements.txt

आम्ही संकुल स्वतंत्रपणे स्थापित करू शकतो, उदाहरणार्थ, कनेक्टर स्थापित करण्यासाठी पोस्टग्रेस्क्ल:
pip install psycopg2

GUnicorn स्थापना आणि कॉन्फिगरेशन:

हे स्थापित करण्यासाठी आम्ही ते त्याच प्रकारे करतोः
pip install gunicorn

आता आपण ही कॉन्फिगर करणार आहोत. त्यासाठी आपण एक फाईल तयार करणार आहोत gunicorn-deploy.py आमच्या अनुप्रयोगाच्या मुळाशी, (नाव काहीही असले तरीही) खालील सामग्रीसह:

bind = "127.0.0.1:8001" # dirección a donde accederá Nginx
logfile = "/var/www/logs/nombreApp/gunicorn.log" # dirección donde estarán los logs de la aplicación
workers = 1 # dependerá en medida de la carga de trabajo que tenga la aplicación, también depende del hardware con que se cuente
loglevel = 'info' # tipo de logging

सुपरवायझर कॉन्फिगरेशन:

आता सेट करू पर्यवेक्षकत्यासाठी कॉन्फिगरेशन फाईल जनरेट करते

echo_supervisord_conf > /etc/supervisord.conf

आता आम्ही कॉन्फिगरेशन फाइल संपादित करतोः
vim /etc/supervisord.conf

आणि आम्ही काढून टाकून खालील ओळी बिनधास्त करतो; (अर्धविराम):

[युनिक्स_एचटीपी_सर्व्हर] फाईल = / टीएमपी / सुपरवायझर.सॉक [सुपरवायझर] लॉगफाइल = / वार / लॉग / पर्यवेक्षक.लॉग लॉगफाइल_मॅक्सबीट्स = M० एमबी लॉगफाइल_बॅकअप = १० लॉगलेवल = डीबग पिडफाइल = / वार / रन / सुपरवायझर्ड.पीड नोडिमॉन = खोटे मिनीफोकस = १०२२ = २०० [आरपीसीन्टरफेस: पर्यवेक्षक] पर्यवेक्षक.आरपीसीन्टरफेस_फक्टरी = सुपरवायझर.आरपीसीन्टरफेस: मेक_मेन_आरपीसीन्टरफेस [सुपरवायझरक्ल] सर्व्हरल = युनिक्स: [प्रोग्राम: अ‍ॅप नेम] कमांड = / वार / www / ENV-appname / बिन / django_unicorn -c / var / www / ENV -अॅपनेम / अ‍ॅपनेम / गनिकॉर्न- डेप्लोय.पी.ई. निर्देशिका / / वार / www / ENV-appname / appname / autostart = खरे ऑटोरेस्टार्ट = खरे वापरकर्ता = वापरकर्तानाव पुनर्निर्देशित_शब्द = सत्य stdout_logfile = / var / www / लॉग / अ‍ॅपनाव / पर्यवेक्षण.लॉग

आता आम्ही सिस्टम सुरू करण्यासाठी सुपरवायझरची स्क्रिप्ट बनवू, त्यासाठी आपण फाईल तयार करू.
vim /etc/init.d/supervisord

आणि आम्ही पुढील सामग्री जोडा:

 # सुपरवायझर्ड ऑटो-स्टार्ट # # वर्णन: स्वयं-आरंभ पर्यवेक्षी # प्रोसेसनाव: सुपरवायझर्ड # पिडफाइल: /var/run/supervisord.pid सुपरव्हिसॉर्ड = / usr / स्थानिक / बिन / पर्यवेक्षक सुपर / व्हिस्टोरट्ल = / usr / स्थानिक / बिन / पर्यवेक्षकीय प्रकरण case 1 आरंभात) प्रतिध्वनी -n "आरंभ करणे सुपरवायझर:" UP सुपरव्हर्सर्ड इको ;; थांबा) प्रतिध्वनी -n "स्टॉपिंग सुपरवायझर:" UP सुपरव्हॉर्सीटीएल शटडाउन इको ;; रीस्टार्ट) एको -n "स्टॉपिंग सुपरवायझर:" UP सुपरव्हिजॉर्टरट शटडाउन इको -n "सुपरवायझर स्टार्टिंग:" UP सुपरव्हिसॉर्ड इको ;; त्या सी

आणि आता आम्ही फाईल कार्यान्वयन परवानग्या देतो जेणेकरून ती सिस्टमपासून सुरू होईल:
sudo chmod +x /etc/init.d/supervisord

सेवा सुरू करण्यासाठी आम्ही दुवे अद्यतनित करतोः
sudo update-rc.d supervisord defaults

आम्ही सेवा सुरूः
sudo /etc/init.d/supervisord start

एनजीन्क्स सेट अप करत आहे:

ही पद्धत अगदी सोपी आहे, आम्ही खालील कॉन्फिगरेशन फाइल तयार करू nginx आमच्या अर्जासाठीः

vim /etc/nginx/sites-enabled/nombreApp

आणि आम्ही आपल्यास पुढील सामग्री जोडू

सर्व्हर {ऐका 9001; # पोर्ट जिथे त्यांना सर्व्हर_नाव www.domain.com ऐकावे nginx पाहिजे आहेत; # किंवा 192.168.0.100, ज्या पत्त्यावर आम्ही प्रवेश करू - प्रवेश / लॉग /var/log/nginx/appname.access.log; # जिथे आमच्याकडे अ‍ॅप्लिकेशन लॉग स्थान / / # असेल जेथे www.dominio.com/ प्रॉक्सी_पास http://127.0.0.1:8001 वर प्रवेश करताना एनजीन्क्स कॉल करेल; प्रॉक्सी_सेट_हेडर होस्ट $ http_host; / स्थान / स्थिर / {# जिथे आम्ही www.dominio.com/static/ ऊर्फ / var / www / ENV-appname / appname / staticfiles / प्रविष्ट करतो तेव्हा nginx प्रवेश करू शकेल; }}

आणि आम्ही एनजीन्क्स रीस्टार्ट करतोः
service nginx restart

जांगो सेट अप करत आहे:

चला डांगो कॉन्फिगरेशन फाईल सुधारित करू:
vim nombreApp/settings.py

म्हणणारी ओळ शोधतो डेबग = सत्य आणि आम्ही मूल्य बदलू, उर्वरित डेबग = चुकीचे

आम्ही डीबी पॅरामीटर्स जोडतो:

डेटाबेस = default 'डीफॉल्ट': EN 'इंजिन': 'django.db.backends.postgresql_psycopg2', # किंवा mysql, किंवा काहीही 'NAME': 'DBName', 'वापरकर्ता': 'DBUser', 'PASSWORD': 'संकेतशब्द डीबी ',' हॉस्ट ':' लोकल होस्ट ', # किंवा ज्याला त्यांना' पोर्ट 'आवश्यक आहे:' ', # किंवा एक ज्याचा ते वापरत आहेत}}

आम्ही ओळ शोधतो ALLOWED_HOSTS = [] आणि आम्ही डोमेन किंवा पत्ता जोडतो ज्याद्वारे आपण प्रवेश करू अशा काहीतरी सोडून ALLOWED_HOSTS = ['www.domain.com']

आम्ही स्टॅटिक फाइल्ससाठी डिरेक्टरी कॉन्फिगर करतो, ज्याची ओळ आपल्याला म्हणते STATIC_ROOT = ' ' आणि आम्ही स्थिर फाईल्स जिथे ठेवू इच्छितो तेथे संपूर्ण मार्ग ठेवून व्हॅल्यू बदलतो, माझ्या बाबतीत मी कमीतकमी यासारखे सोडले STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

जवळजवळ समाप्त झाल्यावर आपण पुढील आज्ञा कार्यान्वित करू.
./manage.py collectstatic

हे नावाने एक फोल्डर तयार करेलस्टॅटिक्स आम्ही निर्दिष्ट केलेल्या मार्गावर settings.py ', तिथे आमच्या सर्व स्थिर फायली असतील.

आणि शेवटी आम्ही नवीन बदल करण्यासाठी पर्यवेक्षक पुन्हा सुरू करतो:
supervisorctl restart nombreApp

आणि हे सर्व होईल, शेवटी हे इतके सत्य नव्हते? ते मला सोपे वाटले 😀

मी आशा करतो की हे आपल्यासाठी उपयुक्त आहे, अभिवादन 😉

GUnicorn दस्तऐवजीकरण

सुपरवायझर्ड दस्तऐवजीकरण


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   f3niX म्हणाले

    मला समजले आहे की वेब सर्व्हर फोल्डर (/ var / www) च्या रूटमध्ये डांगो अॅप ठेवू नये? सुरक्षिततेसाठी, मला माहित नाही की मी चूक आहे की नाही.

    ग्रीटिंग्ज

    1.    urKh म्हणाले

      ठीक आहे !!! हे असे काहीतरी होते ज्याचा मला पूर्णपणे ठाऊक नव्हता, मी प्रविष्टी अद्यतनित करेन आणि सोमवारी परत येताच मी एक्सडी अनुप्रयोगात बदल करीन
      धन्यवाद

  2.   रॉड्रिगो ब्राव्हो (गॉडॉर) म्हणाले

    एपल भाऊ चांगले ट्यूटोरियल अलीकडे मी देखील तिथे होतो परंतु डेबियन 7 मध्ये, मला शोधणे व कमी-अधिक वाचावे लागले. मी शिफारस करतो की आपण लपलेल्या फोल्डरमध्ये वापरकर्त्याच्या घरात व्हर्चुएलेनव्हचे आभासी वातावरण तयार करा.

    धन्यवाद!

  3.   सर्व्ह फेंरिझ म्हणाले

    हाहााहा सीटीएम मी काल जॅंगो चे दस्तऐवजीकरण केले आणि आपण आधीच आकाशगंगातून जात आहात 999999 ग्रीटिंग्ज मेन एक्सडी

  4.   daniel2ac म्हणाले

    खूप चांगला लेख =) फक्त एका आठवड्यापूर्वी मी माझा जॅंगो अॅप तैनात केला होता परंतु मी ते उझगी आणि एनजीन्क्सद्वारे केले, आपल्याला माहित आहे की गनकोर्नचा काय फायदा आहे? मी त्याचा खूप उल्लेख केलेला पाहिले आहे.
    हे पाहून आनंद झाला की झांगो खूप लोकप्रिय होत आहे, सत्य मी पाहिलेली सर्वात चांगली चौकट आहे =)

  5.   ओझकार म्हणाले

    STATIC_ROOT साठी मी काय करतो ते जागतिक चल परिभाषित करते. यासारखेच काहीसे:

    import os
    PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')

    जिथे बॅकएंड हा मी तयार केलेला अॅप आहे. या मार्गाने मी हे सुनिश्चित करते की मी जिथे प्रकल्प उपयोजित करतो तेथे जागतिक मार्ग सारखा आहे.

  6.   एसजीमार्ट म्हणाले

    मनोरंजक, मी भविष्यात प्रयत्न करेन.

    तसे, एखाद्याला जँगो अनुप्रयोगामध्ये उच्चारण आणि असिस्की नसलेले वर्ण कसे सक्षम करावे हे माहित आहे काय?

    मी सर्वत्र पाहिले आहे, खालीलपैकी कोणत्याही पद्धती माझ्यासाठी कार्य करीत नाहीत:
    sys.setdefaultencoding ('utf-8') # साइट्स.पाई मध्ये

    # - * - कोडिंग: utf-8 - * - # प्रत्येक अजगर फाईलमध्ये

    साइट.पी.चे संपादन करणे आणि एएससीआयऐवजी utf-8 टाकणे कार्य करत आहे असे मानले जात आहे, परंतु models फाईल मॉडेल.पी मला माहिती देते की माझी फाईल अद्याप एक असी आहे.

    काही सूचना?

    1.    एसजीमार्ट म्हणाले

      हे काम !!!!

  7.   anime230 म्हणाले

    खूप चांगले ट्यूटोरियल परंतु आधीपासून तयार असलेल्या वेब सर्व्हरवर माझे अ‍ॅप कसे अपलोड करावे यासाठी आपण एखादे कार्य करू शकाल
    Gracias