Tervitused kõigile, see on minu esimene artikkel <» DesdeLinux (de varios que tengo en mis borradores xD), espero les sea de utilidad 😀
Noh, minu uues ja praeguses töökohas viiakse praegu läbi mitme süsteemi üleminek Djangole (kui kummaline eh ?? xD) ja üks minu ülesannetest on peale arenduse nende tootmine, hea õpipoisina, kuna olin esimest korda rakendust reaalsesse serverisse tootmisse seadmas: $ hakkasin lugema virna kõigi nõutavate pakettide (ennekõike Gunicorn ja Supervisord) ametlikku dokumenti ja nähes, et õpetused hispaania keeles ei olnud need mulle mõnes aspektis eriti selged, otsustasin luua Django, Gunicorn, Supervisord, Nginx ja Postgresql virna põhjal minijuhendi koos sammudega, mida järgisin rakenduse tootmisse viimiseks.
Juhul kui ma töötan, töötavad serverid endiselt Debian Squeeze'is, kuid juhend peaks kehtima täielikult teiste distributsioonide jaoks ... nii et lähme otse punkti ja alustame:
Töötan superkasutajana. Kõigepealt on vaja järgmisi pakette:
PIP -> Tööriist Pythoni pakettide installimiseks ja haldamiseks
aptitude install python-pip
nginx -> Veebiserver (kasutame seda vastupidise puhverserverina ja staatiliste failide 'img, js, css' vahemällu salvestamiseks) Installime selle koos:
aptitude install nginx
Juhendaja -> Rakendus meie rakenduse haldamiseks ja jälgimiseks, kuigi seda kasutatakse palju rohkem. Installime selle koos:
aptitude install supervisor
virtualenv -> See aitab meil luua oma rakendusele kohandatud virtuaalse teostuskeskkonna. Installime selle koos:
aptitude install python-virtualenv
püsssarvik -> pythoni veebiserver (me ei installi seda veel)
Eeldan, et neil peaks olema postgresql juba installitud ja konfigureeritud
psühhopg2 -> Postgresql-konnektor Pythoni jaoks (me ei installi seda ka veel)
Looge virtuaalne keskkond virtualenv abil:
Kõigepealt liigume töökataloogi, mida kasutame tootmiseks:
cd /var/www/
Siis loome selles kataloogis virtuaalse keskkonna:
virtualenv ENV-nombreApp
Liigume kataloogi, mille ma just loonud virtualenv
cd ENV-nombreAPP
Kopeerime rakenduse sellesse kataloogi ja aktiveerime nüüd keskkonna:
source bin/activate
Viip peaks nüüd välja nägema (ENV)usuario@host:
See muudab nüüd kõik, mida me teeme, kataloogi / var / www / ENV-rakenduse nimi / süsteemipakette mõjutamata
Nüüd liigume rakenduste kataloogi:
cd nombreApp
Jätkame rakenduse sõltuvuste loendi installimist (vajadusel), milles need on failis täpsustatud nõuded.txt:
pip install -r requirements.txt
Pakette saame installida ka ükshaaval, näiteks pistiku installimiseks postgresql:
pip install psycopg2
GUnicorni installimine ja seadistamine:
Selle installimiseks teeme seda samamoodi:
pip install gunicorn
Nüüd seadistame selle, selleks loome faili nimega gunicorn-deploy.py (kuigi nimi võib olla mis tahes) järgmise sisuga:
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
Juhendaja konfiguratsioon:
Nüüd paneme paika juhendaja, selleks genereerime konfiguratsioonifaili
echo_supervisord_conf > /etc/supervisord.conf
Nüüd muudame konfiguratsioonifaili:
vim /etc/supervisord.conf
Järgmised read tühjendame, eemaldades; (semikoolon):
[unix_http_server] fail = / tmp / supervisor.sock [järelvaataja] logifail = / var / log / supervord.log logifail_maxbytes = 50MB logifail_backups = 10 loglevel = silumine pidfile = / var / run / supervord.pid nodaemon = false minfds = 1024 minprocs = 200 [rpcinterface: superviisor] supervizor.rpcinterface_factory = superviisor.rpcinterface: make_main_rpcinterface [supervorctl] serverurl = unix: [programm: rakenduse nimi] käsk = / var / www / ENV-rakenduse nimi / bin / django_unicorn -c / var / www / ENV -Appname / appname / gunicorn-deploy.py directory = / var / www / ENV-appname / appname / autostart = true autorestart = true user = Kasutajanime redirect_stderr = true stdout_logfile = / var / www / logs / rakenduse nimi / supervord.log
Nüüd loome süsteemi alustamiseks skripti supervordordile, selleks loome faili:
vim /etc/init.d/supervisord
Ja lisame järgmise sisu:
# Supervisori automaatne käivitamine # # kirjeldus: Automaatne käivitamine superviisor # protsessi nimi: supervord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / superviisori SUPERVISORCTL = / usr / local / bin / supervorctl case 1 alguses) echo -n "Alustav juhendaja:" $ SUPERVISORD kaja ;; stop) echo -n "Peatuv järelevaataja:" $ SUPERVISORCTL sulgemise kaja ;; taaskäivitamine) echo -n "Stopp-järelevalvaja:" $ SUPERVISORCTL shutdown echo echo -n "Start-superviitor:" $ SUPERVISORD echo ;; et C
Nüüd anname failile käivitamisõigused, et see saaks süsteemiga algust teha:
sudo chmod +x /etc/init.d/supervisord
Teenuse käivitamiseks värskendame linke:
sudo update-rc.d supervisord defaults
Alustame teenust:
sudo /etc/init.d/supervisord start
Nginxi seadistamine:
See samm on ka üsna lihtne, loome järgmise konfiguratsioonifaili nginx meie rakenduse jaoks:
vim /etc/nginx/sites-enabled/nombreApp
Ja lisame teile järgmise sisu
server {kuula 9001; # port, kus nad tahavad, et nginx kuulaks serveri_nimi www.domain.com; # või 192.168.0.100, aadress, millele pääseme juurde aadressile access_log /var/log/nginx/Appname.access.log; # kus meil on rakenduse logi asukoht / {# kuhu nginx helistab, kui külastate veebisaiti www.dominio.com/ proxy_pass http://127.0.0.1:8001; proxy_set_header Host $ http_host; } asukoht / staatiline / {# kuhu nginx juurde pääseb, kui sisestame www.dominio.com/static/ alias / var / www / ENV-rakenduse nimi / rakenduse nimi / staticfiles /; }}
Ja taaskäivitame nginxi:
service nginx restart
Django seadistamine:
Muutkem django konfiguratsioonifaili:
vim nombreApp/settings.py
Otsime joont, mis ütleb DEBUG = tõsi ja me muudame väärtust, järelejäänud DEBUG = vale
Lisame DB parameetrid:
ANDMEBAASID = {'vaikimisi': {'MOOTOR': 'django.db.backends.postgresql_psycopg2', # või mysql või mida iganes nad kasutavad 'NAME': 'DBName', 'USER': 'DBUser', 'PASSWORD' : 'parool DB', 'HOST': 'localhost', # või neile vajalik 'PORT': '', # või kasutatav üks}}
Otsime joont ALLOWED_HOSTS = [] ja lisame domeeni või aadressi, mille kaudu pääseme juurde, jättes midagi sellist ALLOWED_HOSTS = ['www.domeen.com']
Konfigureerime staatiliste failide kataloogi, otsime rida, mis ütleb STATIC_ROOT = ' '
ja me muudame väärtust, asetades absoluutse tee sinna, kuhu tahame, et meie staatilised failid oleksid, minu puhul jätsin selle enam-vähem niimoodi STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'
Peaaegu valmis, täidame järgmise käsu:
./manage.py collectstatic
See loob kausta nimega 'staatika teel, mille me täpsustame settings.py ", siin asuvad kõik meie staatilised failid.
Ja lõpuks taaskäivitame juhendaja uute muudatuste tegemiseks:
supervisorctl restart nombreApp
Ja see oleks ka kõik, lõpuks ei olnud see nii tõsi? see tundus mulle lihtne 😀
Loodan, et see on teile kasulik, tervitused 😉
Saan aru, et Django rakendust ei tohiks panna veebiserveri kausta juure (/ var / www)? Ohutuse tagamiseks ei tea ma, kas ma eksin.
Tervitused.
Hästi !!! See oli midagi, millest ma polnud täiesti teadlik, värskendan kirjet 😛 ja niipea kui esmaspäeval naasen, muudan xD rakendust
tänan
Epale vend hea õpetus. Hiljuti olin ka samas, kuid Debian 7-s, pidin enam-vähem otsima ja lugema. Soovitan teil luua virtuaalse virtuaalse keskkonna virtuaalne keskkond kasutaja kodus peidetud kausta.
Tervitused!
hahaha ctm ma eile dokumenteerisin Djangot ja te olete juba läbi galaktika 999999 Tervitused mehed xD
Väga hea artikkel =) juurutasin just nädal tagasi oma django rakenduse, kuid tegin seda uwsgi ja nginxiga, kas teate, mis kasu on püssirajal? Olen seda palju maininud.
Tore on näha, et django on muutumas väga populaarseks, tõde on parim raamistik, mida olen näinud =)
STATIC_ROOTi jaoks määratlen globaalse muutuja. Midagi sellist:
import os
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')
Kus taustaprogramm on minu loodud rakendus. Seega hoolitsen selle eest, et projekti juurutamise koht oleks globaalne.
Huvitav, proovin ka edaspidi.
Muide, kas keegi teab, kuidas lubada django rakenduses aktsente ja mitte-ascii tähemärke?
Olen kõikjalt vaadanud, ükski järgmistest meetoditest minu jaoks ei toimi:
sys.setdefaultencoding ('utf-8') # saidil.py
# - * - kodeerimine: utf-8 - * - # igas pythoni failis
Saidi saidi redigeerimine ja asfii asemel utf-8 asetamine peaks toimima, kuid $ file models.py teatab mulle, et minu fail on endiselt ascii.
Kas teil on soovitusi?
See töötas !!!!
väga hea õpetus, kuid kas saaksite teha ühe viisi, kuidas minu rakendus juba toodetud veebiserverisse üles laadida
tänan