Django rakenduse juurutamine:

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 😉

GUnicorn dokumentatsioon

Juhendaja dokumentatsioon


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   f3niX DIJO

    Saan aru, et Django rakendust ei tohiks panna veebiserveri kausta juure (/ var / www)? Ohutuse tagamiseks ei tea ma, kas ma eksin.

    Tervitused.

    1.    urKh DIJO

      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

  2.   Rodrigo Bravo (goidor) DIJO

    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!

  3.   Serveeri Fenriz DIJO

    hahaha ctm ma eile dokumenteerisin Djangot ja te olete juba läbi galaktika 999999 Tervitused mehed xD

  4.   daniel2ac DIJO

    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 =)

  5.   ozkar DIJO

    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.

  6.   sg-tark DIJO

    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?

    1.    sg-tark DIJO

      See töötas !!!!

  7.   anime 230 DIJO

    väga hea õpetus, kuid kas saaksite teha ühe viisi, kuidas minu rakendus juba toodetud veebiserverisse üles laadida
    tänan