Kako postaviti Django aplikaciju:

Šta kažete na pozdrav svima, ovo je moj prvi članak u <» FromLinux (od nekoliko koje imam u nacrtima xD), nadam se da će vam biti od koristi 

Pa, na mom novom i trenutnom poslu, trenutno se vrši migracija nekoliko sistema na Django (koliko je čudno, a? XD) i jedan od mojih zadataka, osim razvoja, je stavljanje u proizvodnju tih, zatim kao dobar pripravnik, budući da sam prvi put pustio aplikaciju u produkciju na pravom serveru: $ Počeo sam čitati službeni dokument svakog od potrebnih paketa steka (Gunicorn i Supervisord ponajviše), i vidjevši da tutorijali Na španskom nisu mi bili previše jasni u nekim aspektima, odlučio sam stvoriti mini vodič sa koracima koje sam slijedio za puštanje aplikacije u proizvodnju, zasnovan na Django, Gunicorn, Supervisord, Nginx i Postgresql stogu.

U slučaju kada radim, poslužitelji i dalje rade na Debian Squeezeu, ali vodič bi trebao biti potpuno valjan za druge distribucije ... pa krenimo odmah na stvar i krenimo:

Radit ću kao super korisnik. Prije svega, potrebni su sljedeći paketi:

PIP -> Alat za instaliranje i upravljanje paketima za Python
aptitude install python-pip

Nginx -> Web server (koristit ćemo ga kao obrnuti proxy i za predmemoriranje statičkih datoteka 'img, js, css') Instaliramo ga sa:
aptitude install nginx

Supervizor -> Aplikacija za upravljanje i nadgledanje naše aplikacije, iako se koristi za mnogo više. Instaliramo ga sa:
aptitude install supervisor

virtualenv -> Pomaže nam u stvaranju prilagođenog virtualnog okruženja za izvršavanje naše aplikacije. Instaliramo ga sa:
aptitude install python-virtualenv

gunicorn -> web server za python (ovo još nećemo instalirati)

Pretpostavljam da bi već trebali instalirati i konfigurirati postgresql

psychopg2 -> Postgresql konektor za python (nećemo ga još ni instalirati)

Stvorite virtualno okruženje s virtualenv:

Prvo ćemo prijeći na radni direktorij koji ćemo koristiti za puštanje u proizvodnju:
cd /var/www/

Tada ćemo u ovom direktoriju stvoriti virtualno okruženje:
virtualenv ENV-nombreApp

Prelazimo na direktorij koji sam upravo kreirao virtualenv
cd ENV-nombreAPP

Kopiramo aplikaciju u ovaj direktorij i sada nastavljamo s aktiviranjem okoline pomoću:
source bin/activate

Upit bi sada trebao izgledati (ENV)usuario@host:

Ovo će sada učiniti da sve što radimo bude pohranjeno u direktoriju / var / www / ENV-appname / bez utjecaja na sistemske pakete

Sada prelazimo na direktorij aplikacija:
cd nombreApp

Nastavljamo s instaliranjem liste zavisnosti aplikacija (ako je potrebno), u kojoj su one navedene u datoteci Zahtevi.txt:
pip install -r requirements.txt

Takođe možemo instalirati pakete pojedinačno, na primjer, za instaliranje konektora postgresql:
pip install psycopg2

Instalacija i konfiguracija GUnicorn:

Da bismo ga instalirali, radimo to na isti način:
pip install gunicorn

Sada ćemo ga konfigurirati, za to ćemo stvoriti datoteku koja se zove gunicorn-deploy.py u korijenu naše aplikacije, (iako ime može biti bilo koje) sa sljedećim sadržajem:

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

Konfiguracija supervisorda:

Sada postavimo supervizor, za to generiramo konfiguracijsku datoteku s

echo_supervisord_conf > /etc/supervisord.conf

Sada uređujemo konfiguracijsku datoteku:
vim /etc/supervisord.conf

I mi komentiramo sljedeće redove uklanjanjem; (zarez):

[unix_http_server] datoteka = / tmp / supervisor.sock [supervisord] logfile = / var / log / supervisord.log logfile_maxbytes = 50 MB logfile_backups = 10 loglevel = debug pidfile = / var / run / supervisord.pid nodaemon = false minfds = 1024 minprocs = 200 [rpcinterface: supervizor] supervisor.rpcinterface_factory = supervisor.rpcinterface: make_main_rpcinterface [supervisorctl] serverurl = unix: [program: appname] command = / var / www / ENV-appname / bin / django_unicorn -c / var / www / ENV -appname / appname / gunicorn-deploy.py direktorij = / var / www / ENV-appname / appname / autostart = true autorestart = true user = username redirect_stderr = true stdout_logfile = / var / www / logs / appname / supervisord.log

Sada ćemo stvoriti skriptu za nadzor da započne sa sistemom, za to ćemo stvoriti datoteku:
vim /etc/init.d/supervisord

I dodajemo sljedeći sadržaj:

 # Automatsko pokretanje supervisorda # opis: Automatsko pokretanje supervisorda # naziv procesa: supervisord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervisord SUPERVISORCTL = / usr / local / bin / supervisorctl case $ 1 u startu) echo -n "Pokretanje nadzora:" $ SUPERVISORD echo ;; stop) echo -n "Zaustavljanje nadzora:" $ SUPERVISORCTL isključivanje eha ;; restart) echo -n "Zaustavljanje nadzora:" $ SUPERVISORCTL isključivanje echo -n "Pokretanje nadzora:" $ SUPERVISORD echo ;; da je C

I sada dajemo dozvolu za izvršavanje datoteke kako bi mogla započeti sa sistemom:
sudo chmod +x /etc/init.d/supervisord

Ažuriramo veze za pokretanje usluge:
sudo update-rc.d supervisord defaults

Uslugu započinjemo:
sudo /etc/init.d/supervisord start

Postavljanje nginxa:

Ovaj je korak također prilično jednostavan, stvorit ćemo sljedeću konfiguracijsku datoteku od nginx za našu aplikaciju:

vim /etc/nginx/sites-enabled/nombreApp

A mi ćemo vam dodati sljedeći sadržaj

server {slušati 9001; # port na kojem žele da nginx preslušava ime_domain.com; # ili 192.168.0.100, adresa kojoj ćemo pristupiti access_log /var/log/nginx/Appname.access.log; # gdje ćemo imati lokaciju evidencije aplikacija / {# gdje će nginx pozvati kada pristupi www.dominio.com/proxy_pass http://127.0.0.1:8001; proxy_set_header Host $ http_host; } location / static / {# gdje će nginx pristupiti kada uđemo na www.dominio.com/static/ alias / var / www / ENV-appname / appname / staticfiles /; }}

I ponovo pokrećemo nginx:
service nginx restart

Postavljanje Djanga:

Izmijenimo konfiguracijsku datoteku django:
vim nombreApp/settings.py

Tražimo liniju koja kaže DEBUG = Tačno i mijenjamo vrijednost, preostalo DEBUG = Netačno

Dodamo DB parametre:

DATABASE = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # ili mysql, ili što već koriste 'NAME': 'DBName', 'USER': 'DBUser', 'PASSWORD' : 'DB password', 'HOST': 'localhost', # ili onaj koji im treba 'PORT': '', # ili onaj koji koriste}}

Tražimo liniju ALLOWED_HOSTS = [] i dodamo domenu ili adresu preko koje ćemo pristupiti, ostavljajući nešto slično ALLOWED_HOSTS = ['www.domena.com']

Konfiguriramo direktorij za statičke datoteke, tražimo red koji kaže STATIC_ROOT = ' ' i mijenjamo vrijednost, postavljajući apsolutni put tamo gdje želimo da budu naše statičke datoteke, u mom slučaju sam je ostavio više-manje ovako STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

Gotovo gotovi, izvršavamo sljedeću naredbu:
./manage.py collectstatic

Ovo će stvoriti mapu s imenom 'statika na putu koji smo naveli u settings.py ', tu će biti sve naše statičke datoteke.

I na kraju ponovo pokrećemo nadzornika kako bi preuzeo nove promjene:
supervisorctl restart nombreApp

I to bi bilo to, na kraju nije bila tako velika stvar, zar ne? Činilo mi se jednostavno 

Nadam se da će vam biti od koristi, pozdrav 

GUnicorn dokumentacija

Dokumentacija supervizora


Dodaj kao preferirani izvor na Googleu