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