Tervitused kõigile, see on minu esimene artikkel <» FromLinuxis (mitmest, mis mul mustandites on xD), loodan, et see on teile kasulik
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 olekski kõik, lõpuks polnud see nii suur asi, eks? See tundus mulle lihtne
Loodan, et see on teile kasulik, tervitused