Ungasifaka kanjani isicelo se-Django:

Kuthiwani mayelana nokubingelela wonke umuntu, lesi isihloko sami sokuqala ku-<» DesdeLinux (kokumbalwa enginakho kokusalungiswa kwami ​​xD), ngithemba ukuthi kuwusizo kuwena 😀

Yebo, emsebenzini wami omusha nowamanje, okwamanje ukuthuthela kwezinhlelo eziningana eDjango kuyenziwa (kumangaza kanjani i-eh? XD) futhi omunye wemisebenzi yami, ngaphandle kwentuthuko, ukufaka lokhu ekukhiqizeni, ngakho-ke kuhle kangakanani ukufundela umsebenzi, ngoba bekungokokuqala ngqa ukufaka uhlelo lokusebenza ekukhiqizeni kuseva yangempela: $ Ngaqala ukufunda idokhumende elisemthethweni ngalinye lamaphakeji adingekayo esitaki (iGunicorn neSupervisord ngaphezu kwakho konke), futhi ngibona ukuthi okokufundisa ku NgeSpanish bebengangicaceli kahle kwezinye izici, nginqume ukudala umhlahlandlela omncane ngezinyathelo engizilandele ukufaka uhlelo ekukhiqizeni, ngokususelwa ku-Django, Gunicorn, Supervisord, Nginx nasePostgresql.

Endabeni lapho ngisebenza khona, amaseva asasebenza i-Debian Squeeze, kepha umhlahlandlela kufanele uvumeleke ngokuphelele kokunye ukwabiwa ... ngakho-ke ake siqonde ngqo ephuzwini bese siqala:

Ngizosebenza njengomsebenzisi omkhulu. Okokuqala, amaphakheji alandelayo ayadingeka:

I-PIP -> Ithuluzi lokufaka nokuphatha amaphakheji wePython
aptitude install python-pip

Nginx -> Iseva yeWebhu (sizoyisebenzisa njengommeleli obuyela emuva futhi silondoloze amafayili we-static 'img, js, css') Siyifaka nge:
aptitude install nginx

I-Supervisord -> Isicelo sokuphatha nokuqapha uhlelo lwethu lokusebenza, noma ngabe sisetshenziselwa okuningi. Siyifaka nge:
aptitude install supervisor

Ubuhle -> Kuyasisiza ukudala indawo enziwe ngokwezifiso yokubulawa kwesicelo sethu. Siyifaka nge:
aptitude install python-virtualenv

IGunicorn -> iseva yewebhu ye-python (ngeke sikufake lokhu okwamanje)

Ngicabanga ukuthi kufanele ngabe sebene-postgresql efakiwe futhi elungiselelwe

ngc2 -> Isixhumi sePostgresql se-python (nathi ngeke sisayifaka)

Dala imvelo ebonakalayo nge-ubuhle:

Okokuqala sizothuthela enkombeni yokusebenza esizoyisebenzisa ukwenza umkhiqizo:
cd /var/www/

Ngemuva kwalokho kulo mkhombandlela sizokwakha indawo ebonakalayo:
virtualenv ENV-nombreApp

Sihambisa umkhombandlela engisanda kuwakha ubuhle
cd ENV-nombreAPP

Sikopisha uhlelo lokusebenza kulolu hlu lwemibhalo futhi manje siqhubeka nokwenza kusebenze imvelo nge:
source bin/activate

I-Prompt manje kufanele ibukeke (ENV)usuario@host:

Lokhu manje kuzokwenza konke esikwenzayo kugcinwe enkombeni / var / www / ENV-appname / ngaphandle kokuthinta amaphakheji wesistimu

Manje sithuthela kumkhombandlela wohlelo lokusebenza:
cd nombreApp

Siqhubeka ukufaka uhlu lokuncika kohlelo lokusebenza (uma kunesidingo), lapho kucaciswe khona kufayela izidingo.txt:
pip install -r requirements.txt

Futhi singafaka amaphakheji ngawodwana, ngokwesibonelo, ukufaka isixhumi se- postgresql:
pip install psycopg2

Ukufakwa nokulungiswa kwe-GUnicorn:

Ukuyifaka sikwenza ngendlela efanayo:
pip install gunicorn

Manje sesizoyilungiselela, ngoba lokhu sizokwakha ifayela elibizwa i-gunicorn-deploy.py empandeni yesicelo sethu, (yize igama lingaba yini) ngokuqukethwe okulandelayo:

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

Ukumiswa kwe-Supervisord:

Manje ake sisethe ifayela le- umphathi, ngalokho sikhiqiza ifayela lokumisa nge

echo_supervisord_conf > /etc/supervisord.conf

Manje sihlela ifayela lokumisa:
vim /etc/supervisord.conf

Futhi asinqamuli imigqa elandelayo ngokususa; (isemikholoni):

[unix_http_server] file = / tmp / supervisor.sock [supervisord] logfile = / var / log / supervisord.log logfile_maxbytes = 50MB logfile_backups = 10 loglevel = debug pidfile = / var / run / supervisord.pid nodaemon = amanga minfds = 1024 min = 200 [rpcinterface: supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface: make_main_rpcinterface [supervisorctl] serverurl = unix: [program: appname] command = / var / www / ENV-appname / bin / django_unicorn -c / var / www / ENV -Appname / appname / gunicorn-deploy.py directory = / var / www / ENV-appname / appname / autostart = i-autorestart yangempela = umsebenzisi weqiniso = Igama lomsebenzisi redirect_stderr = true stdout_logfile = / var / www / logs / appname / supervisord.log

Manje sizokwenzela iskripthi sokuthi umphathi aqale ngohlelo, ngalokho sizokwakha ifayili:
vim /etc/init.d/supervisord

Futhi sengeza okuqukethwe okulandelayo:

 # Supervisord auto-start # # incazelo: Auto-starts supervisord # processname: supervisord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervisord SUPERVISORCTL = / usr / local / bin / supervisorctl case $ 1 ekuqaleni) echo -n "Umphathi oqala:" $ SUPERVISORD echo ;; misa) echo -n "Ukumisa umphathi:" $ SUPERVISORCTL shutdown echo ;; qala kabusha) echo -n "Ukumisa umphathi:" $ SUPERVISORCTL shutdown echo echo -n "Ukuqala umphathi:" $ SUPERVISORD echo ;; ukuthi uC

Futhi manje sinikeza ukwenza izimvume kufayela ukuze liqale ngohlelo:
sudo chmod +x /etc/init.d/supervisord

Sibuyekeza izixhumanisi ukuqala insiza:
sudo update-rc.d supervisord defaults

Siqala isevisi:
sudo /etc/init.d/supervisord start

Ukusetha i-nginx:

Lesi sinyathelo futhi silula, sizokwakha ifayili lokumisa elilandelayo le- nginx sitshelwa:

vim /etc/nginx/sites-enabled/nombreApp

Futhi sizokwengeza okuqukethwe okulandelayo kuwe

iseva {lalela 9001; # port lapho befuna i-nginx ukulalela i-server_name www.domain.com; # noma 192.168.0.100, ikheli esizofinyelela kulo ukufinyelela_log /var/log/nginx/Appname.access.log; # lapho sizoba nendawo yokungena yohlelo lokusebenza / {# lapho i-nginx izoshayela lapho ifinyelela ku-www.dominio.com/ proxy_pass http: // 127.0.0.1: 8001; ummeleli we-proxy_set_header $ http_host; } indawo / i-static / {# lapho i-nginx izongena khona lapho singena ku-www.dominio.com/static/ alias / var / www / ENV-appname / appname / staticfiles /; }}

Futhi siqala kabusha i-nginx:
service nginx restart

Ukusetha i-Django:

Masiguqule ifayela lokumiswa le-django:
vim nombreApp/settings.py

Sifuna umugqa othi I-DEBUG = Iqiniso futhi sishintsha inani, esele ISILUNGISELELO = Amanga

Sifaka amapharamitha we-DB:

I-DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # noma i-mysql, noma yini abayisebenzisayo 'IGAMA': 'DBName', 'USER': 'DBUser', 'PASSWORD' : 'password DB', 'HOST': 'localhost', # noma leyo abayidingayo 'PORT': '', # noma leyo abayisebenzisayo}}

Sibheke ulayini ALLOWED_HOSTS = [] futhi sifaka isizinda noma ikheli esizongena kulo, sishiya okufana nalokho I-ALLOWED_HOSTS = ['www.domain.com']

Silungiselela umkhombandlela wamafayela we-static, sibheka umugqa othi STATIC_ROOT = ' ' futhi sishintsha inani, sibeka indlela ephelele lapho sifuna ukuthi amafayili ethu e-static abe khona, kimi ngiwushiye ucishe ube kanjena STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

Cishe usuqedile, senza umyalo olandelayo:
./manage.py collectstatic

Lokhu kuzokwakha ifolda enegama 'izibalo endleleni esiyibalulayo kufayela le- izilungiselelo.py ', kulapho wonke amafayela wethu we-static ezoba khona.

Ekugcineni siqala kabusha umphathi ukuze athathe izinguquko ezintsha:
supervisorctl restart nombreApp

Futhi lokho kuzoba ukuphela, ekugcineni bekungekubi kangako? bekubonakala kulula kimi 😀

Ngiyethemba ilusizo kuwe, imikhonzo 😉

Imibhalo ye-GUnicorn

Imibhalo yeSupervisord


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.

  1.   I-F3niX kusho

    Ngiyaqonda ukuthi uhlelo lokusebenza lwe-Django akufanele lubekwe empandeni yefolda yeseva yewebhu (/ var / www)? Ngokuphepha, angazi noma nginephutha.

    Ukubingelela

    1.    urKh kusho

      Kulungile !!! Kwakuyinto ebengingayazi nhlobo, ngizovuselela okufakiwe futhi lapho nje ngibuya ngoMsombuluko ngizokwenza izinguquko kuhlelo lwe-xD
      Gracias

  2.   URodrigo Bravo (goidor) kusho

    Epale mfowethu isifundo esihle. Muva nje nami benginguye kodwa kuDebian 7, bekufanele ngiseshe futhi ngifunde okuningi noma okuncane. Ngincoma ukuthi udale imvelo ebonakalayo ye-virtualenv ekhaya lomsebenzisi kufolda efihliwe.

    Ukubingelela!

  3.   Khonza uFenriz kusho

    hahaha ctm I izolo ngibhala i-Django futhi usuvele udlula emthaleni 999999 Sanibonani madoda xD

  4.   daniel2ac kusho

    I-athikili enhle = Ngikubone kukhulunywa kakhulu ngakho.
    Kuhle ukubona ukuthi i-django iya ngokuya ithandwa kakhulu, iqiniso uhlaka oluhle kakhulu engilubonile =)

  5.   ozkar kusho

    Okwe-STATIC_ROOT engikwenzayo kuchaza ukuguquguquka komhlaba. Okuthile okufana nalokhu:

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

    Lapho i-backend uhlelo lokusebenza engiludalile. Ngakho-ke ngiyaqiniseka ukuthi lapho ngifaka khona iphrojekthi, indlela yomhlaba iyafana.

  6.   i-sgmart kusho

    Kuyathakazelisa, ngizozama ngokuzayo.

    Ngendlela, ngabe kukhona owaziyo ukuthi ungavumela kanjani ama-accents nezinhlamvu ezingezona eze-ascii kuhlelo lokusebenza lwe-django?

    Ngibheke yonke indawo, azikho kulezi zindlela ezilandelayo ezingisebenzelayo:
    sys.setdefaultencoding ('utf-8') # kumasayithi.py

    # - * - esephepheni: utf-8 - * - # Kuwo wonke amafayela we-python

    Ukuhlela i-site.py, nokubeka i-utf-8 esikhundleni se-ascii kufanele isebenze, kepha $ file models.py ingazisa ukuthi ifayela lami liseyi-ascii.

    Noma iziphi iziphakamiso?

    1.    i-sgmart kusho

      Kusebenzile !!!!

  7.   imvu230 kusho

    isifundo esihle kakhulu kepha ungenza enye yezindlela zokulayisha uhlelo lwami lokusebenza kuseva yewebhu esivele ikhiqizwa
    I-gracias