Kā izvietot Django lietojumprogrammu:

Kā būtu ar sveicieniem visiem, šis ir mans pirmais raksts vietnē <» FromLinux (no vairākiem, kas man ir manos melnrakstos xD), ceru, ka tas jums noder 

Nu, manā jaunajā un pašreizējā darbā šobrīd tiek veikta vairāku sistēmu migrācija uz Django (cik dīvaini eh ?? xD), un viens no maniem uzdevumiem, izņemot attīstību, ir šo ieviešana ražošanā, lai cik labi māceklis, jo es pirmo reizi ievietoju lietojumprogrammu ražošanā reālā serverī: $ es sāku lasīt oficiālo dokumentu par katru nepieciešamo kaudzes paketi (galvenokārt Gunicorn un Supervisord) un redzot, ka Spāņu valodā tie man dažos aspektos nebija ļoti skaidri, es nolēmu izveidot mini ceļvedi ar soļiem, kurus sekoju, lai lietojumprogrammu ieviestu ražošanā, pamatojoties uz Django, Gunicorn, Supervisord, Nginx un Postgresql kaudzīti.

Gadījumā, kad es strādāju, serveri joprojām darbojas ar Debian Squeeze, taču ceļvedim jābūt pilnībā derīgam citiem izplatījumiem ... tāpēc sāksim tieši pie lietas un sāksim:

Es strādāšu kā super lietotājs. Pirmkārt, ir nepieciešamas šādas paketes:

PIP -> Rīks Python pakotņu instalēšanai un pārvaldīšanai
aptitude install python-pip

Nginx -> Tīmekļa serveris (mēs to izmantosim kā apgriezto starpniekserveri un statisko failu “img, js, css” kešatmiņā) Mēs to instalējam ar:
aptitude install nginx

Uzraudzības iestāde -> Lietojumprogramma, lai pārvaldītu un uzraudzītu mūsu lietojumprogrammu, lai gan to izmanto daudz vairāk. Mēs to instalējam ar:
aptitude install supervisor

virtualenv -> Tas palīdz mums izveidot pielāgotu virtuālās izpildes vidi mūsu lietojumprogrammai. Mēs to instalējam ar:
aptitude install python-virtualenv

Gunicorn -> Web serveris Python (mēs to vēl neinstalēsim)

Es pieņemu, ka viņiem jau vajadzētu būt instalētiem un konfigurētiem postgresql

psycopg2 -> PostgreSQL savienotājs Python (mēs to arī vēl neinstalēsim)

Izveidojiet virtuālo vidi ar virtualenv:

Vispirms mēs pārejam uz darba direktoriju, kuru izmantosim, lai ieviestu ražošanā:
cd /var/www/

Tad šajā direktorijā mēs izveidosim virtuālo vidi:
virtualenv ENV-nombreApp

Mēs pārietam uz direktoriju, kuru tikko izveidoju virtualenv
cd ENV-nombreAPP

Mēs kopējam lietojumprogrammu šajā direktorijā un tagad aktivizējam vidi ar:
source bin/activate

Tagad uzvednei vajadzētu izskatīties (ENV)usuario@host:

Tas nodrošinās, ka viss, ko mēs darām, tagad tiek saglabāts direktorijā /var/www/ENV-appname/, neietekmējot sistēmas pakotnes.

Tagad mēs pārietam uz lietojumprogrammu direktoriju:
cd nombreApp

Mēs turpinām instalēt lietojumprogrammu atkarību sarakstu (ja nepieciešams), kurā tie ir norādīti failā prasības.txt:
pip install -r requirements.txt

Mēs varam instalēt paketes arī atsevišķi, piemēram, lai instalētu postgresql:
pip install psycopg2

GUnicorn instalēšana un konfigurēšana:

Lai to instalētu, mēs to darām tāpat:
pip install gunicorn

Tagad konfigurēsim to. Lai to izdarītu, mūsu lietojumprogrammas saknē izveidosim failu ar nosaukumu gunicorn-deploy.py (lai gan nosaukums var būt jebkāds) ar šādu saturu:

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

Supervizora konfigurācija:

Tagad konfigurēsim supervisord ; šim nolūkam mēs ģenerēsim konfigurācijas failu ar

echo_supervisord_conf > /etc/supervisord.conf

Tagad mēs rediģējam konfigurācijas failu:
vim /etc/supervisord.conf

Un mēs atceļam nākamās rindas, noņemot; (semikols):

[unix_http_server] fails = / tmp / supervisor.sock [supervord] logfile = / var / log / supervord.log logfile_maxbytes = 50 MB logfile_backups = 10 loglevel = atkļūdošanas pidfile = / var / run / supervord.pid nodaemon = false minfds = 1024 minprocs = 200 [rpcinterface: supervizors] supervizors.rpcinterface_factory = uzraugs.rpcinterface: make_main_rpcinterface [supervorctl] serverurl = unix: [programma: lietotnes nosaukums] komanda = / var / www / ENV-lietotnes nosaukums / bin / django_unicorn -c / var / www / ENV -Appname / appname / gunicorn-deploy.py directory = / var / www / ENV-appname / appname / autostart = true autorestart = true user = Lietotājvārds redirect_stderr = true stdout_logfile = / var / www / logs / lietotnes nosaukums / supervord.log

Tagad mēs izveidosim skriptu supervord, lai sāktu ar sistēmu, un tāpēc mēs izveidosim failu:
vim /etc/init.d/supervisord

Mēs pievienojam šādu saturu:

 # Supervisord auto-start # # description: Automātiski sāk supervordoru # procesa nosaukums: supervord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervord SUPERVISORCTL = / usr / local / bin / supervorctl gadījums $ 1 sākumā) echo -n "Sākuma vadītājs:" $ SUPERVISORD atbalss ;; stop) echo -n "Apstāšanās vadītājs:" $ SUPERVISORCTL izslēgšanas atbalss ;; restart) echo -n "Apturošs uzraugs:" $ SUPERVISORCTL shutdown echo echo -n "Sākuma uzraudzītājs:" $ SUPERVISORD echo ;; ka C

Un tagad mēs piešķiram failam izpildes atļaujas, lai to varētu sākt ar sistēmu:
sudo chmod +x /etc/init.d/supervisord

Mēs atjauninām saites, lai sāktu pakalpojumu:
sudo update-rc.d supervisord defaults

Mēs sākam pakalpojumu:
sudo /etc/init.d/supervisord start

Nginx iestatīšana:

Šis solis ir arī diezgan vienkāršs; mēs izveidosim šādu nginx konfigurācijas failu mūsu lietojumprogrammai:

vim /etc/nginx/sites-enabled/nombreApp

Mēs pievienosim jums šādu saturu

serveris {klausīties 9001; # ports, kur viņi vēlas, lai nginx klausītos servera_nosaukums www.domain.com; # vai 192.168.0.100, adrese, kurai piekļūsim access_log /var/log/nginx/Appname.access.log; # kur mums būs lietojumprogrammas žurnāla atrašanās vieta / {# kur nginx zvanīs, piekļūstot vietnei www.dominio.com/ proxy_pass http://127.0.0.1:8001; proxy_set_header resursdators $ http_host; } location / static / {# kur nginx piekļūs, kad mēs ievadīsim www.dominio.com/static/ alias / var / www / ENV-appname / appname / staticfiles /; }}

Un mēs restartējam nginx:
service nginx restart

Django iestatīšana:

Pārveidosim django konfigurācijas failu:
vim nombreApp/settings.py

Mēs meklējam rindu, kurā teikts DEBUG = True , un mainām tās vērtību , atstājot DEBUG = False.

Mēs pievienojam DB parametrus:

DATU BĀZES = {'noklusējums': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # vai mysql vai jebkuru citu, ko viņi lieto 'NAME': 'DBName', 'USER': 'DBUser', 'PASSWORD' : 'password DB', 'HOST': 'localhost', # vai viņiem vajadzīgais 'PORT': '', # vai tas, ko viņi lieto}}

Mēs meklējam rindu ALLOWED_HOSTS=[] un pievienojam domēnu vai adresi, caur kuru mēs tai piekļūsim, iegūstot kaut ko līdzīgu ALLOWED_HOSTS=['www.domain.com']

Mēs konfigurējam direktoriju statiskajiem failiem, mēs meklējam līniju, kas saka STATIC_ROOT = ' ' un mēs mainām vērtību, ievietojot absolūto ceļu tur, kur mēs vēlamies būt mūsu statiskajiem failiem, manā gadījumā es to atstāju apmēram šādi STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

Gandrīz pabeigts, mēs izpildām šādu komandu:
./manage.py collectstatic

Tas izveidos mapi ar nosaukumu " statics" ceļā, ko norādījām failā settings.py , un tur atradīsies visi mūsu statiskie faili.

Visbeidzot, mēs restartējam vadītāju, lai veiktu jaunās izmaiņas:
supervisorctl restart nombreApp

Un tas arī būtu viss, galu galā tas nebija tik liels darījums, vai ne? Man tas šķita vienkārši 

Es ceru, ka tas jums noderēs, sveicieni 

GUnicorn dokumentācija

Uzrauga dokumentācija


Pievienot kā vēlamo avotu pakalpojumā Google