Bii a ṣe le ran ohun elo Django kan:

Bawo ni nipa ikini si gbogbo eniyan, eyi ni nkan akọkọ mi ni <»Lati Lainos (ti pupọ ti Mo ni ninu awọn akọpamọ xD mi), Mo nireti pe yoo wulo

O dara, ninu iṣẹ tuntun mi ati lọwọlọwọ, ni akoko yii iṣipo ti ọpọlọpọ awọn ọna ṣiṣe si Django ni a nṣe (bawo ni ajeji eh ?? xD) ati ọkan ninu awọn iṣẹ mi, yatọ si idagbasoke, n fi awọn wọnyi sinu iṣelọpọ, nitorinaa bawo ni ọmọ-iṣẹ ti o dara, nitori o jẹ akoko akọkọ mi ti n fi ohun elo sinu iṣelọpọ lori olupin gidi kan: $ Mo bẹrẹ lati ka iwe aṣẹ osise ti ọkọọkan awọn idii ti o nilo fun akopọ (Gunicorn ati Supervisord julọ julọ), ati rii pe awọn itọnisọna naa Ni Ilu Sipeeni wọn ko ṣalaye pupọ si mi ni awọn aaye kan, Mo pinnu lati ṣẹda itọsọna mini pẹlu awọn igbesẹ ti Mo tẹle lati fi ohun elo sinu iṣelọpọ, da lori Django, Gunicorn, Supervisord, Nginx ati Postgresql akopọ.

Ninu ọran ibi ti Mo ṣiṣẹ, awọn olupin tun n ṣiṣẹ lori Iwọn Debian, ṣugbọn itọsọna yẹ ki o wulo ni kikun fun awọn pinpin miiran ... nitorinaa jẹ ki a tọ taara si aaye ki a bẹrẹ:

Emi yoo ṣiṣẹ bi olumulo nla kan. Ni akọkọ, a nilo awọn idii atẹle:

Pip -> Ọpa lati fi sori ẹrọ ati ṣakoso awọn idii fun Python
aptitude install python-pip

Nginx -> Olupin wẹẹbu (a yoo lo bi aṣoju oniduro ati lati kaṣe awọn faili aimi 'img, js, css') A fi sii pẹlu:
aptitude install nginx

Alabojuto -> Ohun elo lati ṣakoso ati ṣetọju ohun elo wa, botilẹjẹpe o ti lo fun pupọ diẹ sii. A fi sii pẹlu:
aptitude install supervisor

Virtualenv -> O ṣe iranlọwọ fun wa lati ṣẹda agbegbe ipaniyan foju ti ara ẹni fun ohun elo wa. A fi sii pẹlu:
aptitude install python-virtualenv

Gunicorn -> olupin ayelujara fun Python (a kii yoo fi sori ẹrọ yii sibẹsibẹ)

Mo ro pe wọn yẹ ki o ti fi sori ẹrọ ati tunto postgresql tẹlẹ

iworan2 -> Asopọ Postgresql fun Python (a kii yoo fi sii sibẹsibẹ boya)

Ṣẹda agbegbe ti o foju pẹlu virtualenv:

Ni akọkọ a yoo lọ si itọsọna iṣẹ ti a yoo lo fun fifi si iṣelọpọ:
cd /var/www/

Lẹhinna ninu itọsọna yii a yoo ṣẹda agbegbe foju:
virtualenv ENV-nombreApp

A gbe lọ si itọsọna ti Mo ṣẹṣẹ ṣẹda ẹda
cd ENV-nombreAPP

A daakọ ohun elo naa ninu itọsọna yii ati ni bayi a tẹsiwaju lati muu ayika ṣiṣẹ pẹlu:
source bin/activate

Itọsọna yẹ ki o wa bayi (ENV)usuario@host:

Eyi yoo ṣe bayi ohun gbogbo ti a ṣe ni a fipamọ sinu itọsọna naa / var / www / orukọ-orukọ ENV / laisi ni ipa awọn idii eto

Bayi a lọ si itọsọna ohun elo:
cd nombreApp

A tẹsiwaju lati fi atokọ ti awọn igbẹkẹle ohun elo sii (ti o ba jẹ dandan), ninu eyiti wọn ṣe apejuwe ninu faili naa awọn ibeere.txt:
pip install -r requirements.txt

A tun le fi awọn idii sii leyo, fun apẹẹrẹ, lati fi sori ẹrọ asopọ ti postgresql:
pip install psycopg2

GUnicorn fifi sori ẹrọ ati iṣeto ni:

Lati fi sii a ṣe ni ọna kanna:
pip install gunicorn

Bayi a yoo tunto rẹ, fun eyi a yoo ṣẹda faili kan ti a pe gunicorn-deploy.py ni gbongbo ti ohun elo wa, (botilẹjẹpe orukọ le jẹ ohunkohun) pẹlu akoonu atẹle:

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

Iṣeto Supervisord:

Bayi jẹ ki a ṣeto awọn alabojuto, fun eyi a ṣe ipilẹ faili iṣeto pẹlu

echo_supervisord_conf > /etc/supervisord.conf

Bayi a ṣatunkọ faili iṣeto:
vim /etc/supervisord.conf

Ati pe a ko ni itẹlera awọn ila wọnyi nipa yiyọ awọn; (semicolon):

[unix_http_server] faili = / tmp / supervisor.sock [supervisord] logfile = / var / log / supervisord.log logfile_maxbytes = 50MB logfile_backups = 10 loglevel = yokokoro pidfile = / var / run / supervisord.pid nodaemon = awọn minfds eke = 1024 minprocs = 200 [rpcinterface: alabojuwo] alabojuto.rpcinterface_factory = alabojuwo.rpcinterface: make_main_rpcinterface [supervisorctl] serverurl = unix: [eto: appname] pipaṣẹ = / var / www / ENV-orukọ orukọ / bin / django_unicorn -c / var / www / ENV -Appname / appname / gunicorn-deploy.py liana = / var / www / ENV-appname / appname / autostart = otitọ autorestart = olumulo tootọ = Orukọ olumulo redirect_stderr = otitọ stdout_logfile = / var / www / log / appname / supervisord.log

Bayi a yoo ṣẹda iwe afọwọkọ fun alabojuto lati bẹrẹ pẹlu eto naa, fun eyi a yoo ṣẹda faili naa:
vim /etc/init.d/supervisord

Ati pe a ṣafikun akoonu atẹle:

 # Supervisord auto-start # # description: Aifọwọyi bẹrẹ supervisord # ilana orukọ: supervisord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / agbegbe / bin / supervisord SUPERVISORCTL = / usr / agbegbe / bin / supervisorctl case $ 1 ni ibere) iwoyi -n "Bibẹrẹ supervisord:" $ SUPERVISORD iwoyi ;; da duro) iwoyi -n "Idaduro alabojuto:" $ SUPERVISORCTL iwoyi tiipa ;; tun bẹrẹ) iwoyi -n "Idaduro alabojuwo:" $ SUPERVISORCTL tiipa iwoyi iwoyi -n "Bibẹrẹ alabojuwo:" $ SUPERVISORD iwoyi ;; pe C

Ati nisisiyi a fun faili naa ṣiṣe awọn igbanilaaye ki o le bẹrẹ pẹlu eto naa:
sudo chmod +x /etc/init.d/supervisord

A ṣe imudojuiwọn awọn ọna asopọ lati bẹrẹ iṣẹ naa:
sudo update-rc.d supervisord defaults

A bẹrẹ iṣẹ naa:
sudo /etc/init.d/supervisord start

Ṣiṣeto nginx:

Igbesẹ yii tun rọrun, a yoo ṣẹda faili atunto atẹle ti nginx fun ohun elo wa:

vim /etc/nginx/sites-enabled/nombreApp

Ati pe a yoo ṣafikun akoonu atẹle si ọ

olupin {gbọ 9001; # ibudo nibiti wọn fẹ nginx lati tẹtisi olupin_name www.domain.com; # tabi 192.168.0.100, adirẹsi ti a yoo wọle si access_log /var/log/nginx/Appname.access.log; # ibi ti a yoo ni ipo iwe ohun elo / {# ibiti nginx yoo pe nigbati o ba wọle si www.dominio.com/proxy_pass http://127.0.0.1:8001; Gbalejo proxy_set_header $ http_host; } ipo / aimi / {# nibi ti nginx yoo wọle si nigbati a ba tẹ www.dominio.com/static/ inagijẹ / var / www / ENV-orukọ-orukọ / apeso / staticfiles /; }}

Ati pe a tun bẹrẹ nginx:
service nginx restart

Ṣiṣeto Django:

Jẹ ki a ṣe atunṣe faili iṣeto django:
vim nombreApp/settings.py

A wa laini ti o sọ DEBUG = Otitọ a si yi iye pada, ti o ku DEBUG = Eke

A ṣafikun awọn ipilẹ DB:

DATABASES = {'aiyipada': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # tabi mysql, tabi ohunkohun ti wọn nlo 'NAME': 'DBName', 'USER': 'DBUser', 'PASSWORD' : 'ọrọ igbaniwọle DB', 'HOST': 'localhost', # tabi eyi ti wọn nilo 'PORT': '', # tabi eyi ti wọn nlo}}

A wa laini ALLOWED_HOSTS = [] ati pe a ṣafikun agbegbe tabi adirẹsi nipasẹ eyiti a yoo gba wọle si, nlọ nkan bi ALLOWED_HOSTS = ['www.domain.com']

A tunto itọsọna fun awọn faili aimi, a wa laini ti o sọ STATIC_ROOT = ' ' ati pe a yi iye pada, ni gbigbe ọna to ga julọ nibiti a fẹ ki awọn faili wa duro jẹ, ninu ọran mi Mo fi silẹ diẹ sii tabi kere si bii eyi STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

O fẹrẹ pari, a ṣe pipaṣẹ wọnyi:
./manage.py collectstatic

Eyi yoo ṣẹda folda pẹlu orukọ 'awọn iṣiro ni ọna ti a ṣe pato ninu awọn eto.py ', iyẹn ni ibiti gbogbo awọn faili aimi wa yoo wa.

Ati nikẹhin a tun bẹrẹ alabojuto lati mu awọn ayipada tuntun:
supervisorctl restart nombreApp

Ati pe iyẹn yoo jẹ gbogbo, ni ipari kii ṣe otitọ pupọ bẹ? o dabi enipe o rọrun fun mi 😀

Mo nireti pe o wulo fun ọ, ikini 😉

 

GUnicorn iwe

Supervisord iwe

 


Awọn akoonu ti nkan naa faramọ awọn ilana wa ti awọn ilana olootu. Lati jabo aṣiṣe kan tẹ nibi.

Awọn asọye 9, fi tirẹ silẹ

Fi ọrọ rẹ silẹ

Adirẹsi imeeli rẹ yoo ko le ṣe atejade. O beere aaye ti wa ni samisi pẹlu *

*

*

  1. Lodidi fun data naa: Miguel Ángel Gatón
  2. Idi ti data naa: SPAM Iṣakoso, iṣakoso ọrọ asọye.
  3. Ofin: Iyọọda rẹ
  4. Ibaraẹnisọrọ data: Awọn data kii yoo ni ifọrọhan si awọn ẹgbẹ kẹta ayafi nipasẹ ọranyan ofin.
  5. Ibi ipamọ data: Alaye data ti o gbalejo nipasẹ Awọn nẹtiwọọki Occentus (EU)
  6. Awọn ẹtọ: Ni eyikeyi akoko o le ni opin, gba pada ki o paarẹ alaye rẹ.

  1.   F3niX wi

    Mo ye mi pe ko yẹ ki a gbe ohun elo Django sinu gbongbo ti folda olupin wẹẹbu (/ var / www)? Fun aabo, Emi ko mọ boya Mo ṣe aṣiṣe.

    Ẹ kí

    1.    urKh wi

      O dara !!! O jẹ nkan ti Emi ko mọ rara, Emi yoo ṣe imudojuiwọn titẹsi 😛 ati ni kete ti Mo ba pada ni Ọjọ Aarọ Emi yoo ṣe awọn ayipada ninu ohun elo xD
      Gracias

  2.   Rodrigo Bravo (goidor) wi

    Epale arakunrin ti o dara Tutorial. Laipẹ Mo tun wa kanna ṣugbọn ni Debian 7, Mo ni lati wa ati ka diẹ sii tabi kere si. Mo ṣeduro pe ki o ṣẹda agbegbe foju ti virtuellev ni ile olumulo ni folda ti o pamọ.

    Saludos!

  3.   Iṣẹ Fenriz wi

    hahaha ctm Mo lana documenting Django ati pe o ti n lọ tẹlẹ nipasẹ galaxy 999999 Ẹ awọn ọkunrin ikini xD

  4.   daniel2ac wi

    Nkan ti o dara pupọ =) ni ọsẹ kan sẹhin ni mo fi ranṣẹ ohun elo django mi ṣugbọn Mo ṣe pẹlu uwsgi ati nginx, ṣe o mọ kini anfani gunicorn ni? Mo ti rii ti o mẹnuba pupọ.
    O dara lati rii pe django ti di olokiki pupọ, otitọ ni ilana ti o dara julọ ti Mo ti rii =)

  5.   Ozkar wi

    Fun STATIC_ROOT ohun ti Mo ṣe n ṣalaye oniyipada agbaye kan. Nkankan bi eleyi:

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

    Nibo ẹhin jẹ ohun elo ti Mo ṣẹda. Nitorinaa Mo rii daju pe ibiti mo gbe ranṣẹ si iṣẹ naa, ọna kariaye jẹ kanna.

  6.   sgmart wi

    Nkan, Emi yoo gbiyanju ni ọjọ iwaju.

    Ni ọna, ṣe ẹnikẹni mọ bi o ṣe le mu awọn asẹnti ati awọn ohun kikọ ti kii ṣe ascii ṣiṣẹ ni ohun elo django kan?

    Mo ti wo ibi gbogbo, ko si ọkan ninu awọn ọna wọnyi ti o ṣiṣẹ fun mi:
    sys.setdefaultencoding ('utf-8') # ni sites.py

    # - * - ifaminsi: utf-8 - * - # ni gbogbo faili Python

    Ṣiṣatunṣe site.py, ati fifi utf-8 dipo ti ascii ni o yẹ lati ṣiṣẹ, ṣugbọn awọn faili faili $.py sọ fun mi pe faili mi tun jẹ aṣan.

    Eyikeyi Awọn aba?

    1.    sgmart wi

      O ṣiṣẹ !!!!

  7.   Anime230 wi

    Tutorial ti o dara pupọ ṣugbọn o le ṣe ọkan ninu bii o ṣe le gbe ohun elo mi sori ẹrọ lori olupin wẹẹbu tẹlẹ ninu iṣelọpọ
    gracias