Django pe producție

Înainte de tine, un ghid pentru configurarea mediului de producție pentru Django. Pașii necesari pentru configurarea Django, uWSGI și nginx vor fi descriși aici. Manualul acoperă toate cele trei componente - un teanc complet de software de server pentru aplicații web.







Se presupune că folosiți un sistem de operare similar cu Unix și un manager de pachete echivalent cu aptitude. Găsiți echivalentul de aptitudini pentru aproape orice sistem de operare, inclusiv Mac OS X, pentru dvs. este ușor.

Manualul este scris pentru versiunile Django 1.4 sau mai noi. Dacă utilizați o versiune anterioară, va trebui să găsiți singur modulul wsgi. De asemenea, veți observa că structura fișierului proiectului va fi ușor diferită de cea prezentată aici.

Ideea generală


Serverul web poate, la cerere, să ofere utilizatorilor fișiere din sistemul său de fișiere, dar nu poate funcționa direct cu aplicațiile Django. Serverul web are nevoie de o interfață care va lansa aplicația Django, va trimite o cerere de la utilizator și va returna un răspuns.

Pentru a îndeplini aceste sarcini, a fost dezvoltată interfața Gateway Web Server, WSGI, standardul pentru interfața programelor Python și a serverelor web.

uWSGI este una dintre implementările WSGI. În acest tutorial, vom instala și configura uWSGI pentru a crea un soclu Unix și a interacționa cu serverul web folosind protocolul WSGI.

Stiva completă a componentelor va arăta astfel:

Înainte de a instala uWSGI

virtualenv


Creați și activați un mediu virtual pentru software, de care vom avea nevoie (mai jos vă voi spune cum să instalați uwsgi la nivel global):


Instalăm Django în mediul nostru virtual

Creați un nou proiect și accesați directorul rădăcină:

Domeniu și port

Pentru a primi solicitări de la utilizatori, vom folosi portul 8000. Puteți utiliza orice alt port. Am ales exact 8000, deoarece utilizarea sa nu va duce la conflicte cu alte sarcini efectuate de server.

Instalarea și configurarea de bază a uWSGI

Setarea uWSGI la mediul virtual


Una dintre modalitățile bune de a instala uWSGI:

Vom avea nevoie de pachete de dezvoltare Python. Dacă utilizați Debian sau sistemul de operare principal pe Debian (de exemplu, Ubuntu sau Mint), trebuie să instalați pachetul pythonX.Y-dev, unde X.Y este versiunea Python de care aveți nevoie.


Creați fișierul test.py:

Testarea aplicației Django


Acum, face uWSGI să lucreze cu aplicația Django, nu cu fișierul test.py.

Rulați noul proiect mysite creat:

Porniți uWSGI după cum urmează:


Nu este bine ca computerul utilizatorului să se refere direct la uWSGI. Trebuie să existe un server web între utilizator și uWSGI.

Configurați și configurați nginx de bază

Instalarea și funcționarea nginx

Dacă sunteți ocupat cu portul optsprezecea, modificați configurația nginx astfel încât să utilizeze un alt port (în acest manual, nginx va folosi portul 8000).

Configurația nginx pentru a lucra cu Django


Avem nevoie de un fișier uwsgi_params, care poate fi luat aici: github.com/nginx/nginx/blob/master/conf/uwsgi_params.
Descărcați-l în directorul rădăcină al proiectului nostru.

Creați fișierul mysite_nginx.conf:

Acest fișier de configurare indică nginx că ar trebui să dea fișierele media și statice utilizatorilor din sistemul de fișiere și să redirecționeze toate celelalte cereri către aplicația Django. În cazul proiectelor mari, este mai bine să se utilizeze două servere: una pentru service statică și fișiere media, iar cealaltă pentru aplicația Django. Cu un mic și chiar mai mult cu proiectele de instruire, un server va face față.

În directorul / etc / nginx / sites-enabled, creați un link către fișierul mysite_nginx.conf. așa că nginx o vede:







Statică într-un singur loc


Înainte de a rula nginx, am pus toate staticele în directorul static. Pentru aceasta, adăugați următoarea linie în fișierul mysite / settings.py:

Și executați comanda:

Verificarea amăgirii staticei și a suporturilor media

Am pus un fișier cu un nume, de exemplu media.png, în directorul / path / to / your / project / project / media.

nginx + uWSGI + test.py


Configurați interacțiunea dintre nginx și test.py prin uSWGI.

Aproape același lucru pe care nu l-am făcut, cu excepția unei singure opțiuni:

  • soclu: 8001. utilizați protocolul uWSGI, port 8001


După cum vă amintiți, am configurat nginx (fișierul mysite_nginx.conf) pentru a lucra cu uWSGI prin portul 8001.

Prize Unix în loc de porturi web


Înainte de aceasta, am folosit un soclu legat la un port TCP (l-am numit un port web), pentru că a fost mai ușor, dar în practică este recomandat să folosiți un soclu Unix din cauza avantajului de performanță.

Editați mysite_nginx.conf după cum urmează:

Și reporniți nginx

Dacă nu funcționează


Verificați jurnalul de erori nginx, cel mai probabil este în var / log / nginx / error.log

Dacă găsiți ceva similar cu acesta

există o problemă cu drepturile de acces la fișierul mysite.sock. Este necesar să vă asigurați că nginx are permisiunea de a utiliza acest fișier.

Încercați să rulați uWSGI astfel:

Sau așa:
uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket = 664 # mai rezonabil

Pentru a preveni problemele de acces în viitor, adăugați-vă utilizatorul la grupul de date www.

Informațiile pe care uWSGI le furnizează terminalului sunt utile în căutarea și corectarea posibilelor erori sau defecțiuni.

nginx + uWSGI + Django

Am adunat întregul lanț, dar configurația nu a fost terminată încă, mergem mai departe.

Configurarea UWSGI prin fișier ini


Foarte convenabil toate opțiunile cu care lansăm uWSGI, specificați în fișierul ini și la început transferați numai calea către acest fișier.

Creați un fișier mysite_uwsgi.ini:

Verificați. Functioneaza? Mai departe.

Instalați uWSGI la nivel global


Până acum, uWSGI a fost instalat într-un mediu virtual. Pentru a putea porni automat uWSGI la începutul sistemului de operare, îl vom instala la nivel global.

Dezactivați mediul virtual:

Pagina wiki a uWSGI descrie mai multe opțiuni de instalare. Înainte de a instala uWSGI la nivel global, nu veți fi descurajat de alegerea versiunii și a metodei de instalare.

Puteți porni uWSGI cu aceeași comandă ca înainte:

Modul împăratului


Dacă serverul servește mai multe proiecte, fiecare folosind uWSGI, atunci trebuie să utilizați modul Emperor. În acest mod, uWSGI scanează directorul cu fișierele de configurare și execută un proces separat (vasal) pentru fiecare fișier.

Dacă unul dintre fișierele de configurare este modificat, uWSGI va reporni vasalul corespunzător.

Creați un dosar pentru fișierele de configurare:

Creați un link către el în mysite_uwsgi.ini:

Rulați uWSGI în modul Emperor:

UWSGI pornește automat după încărcarea sistemului de operare


În fișierul /etc/rc.local. înainte de linia "exit 0" adăugați:

Django pe producție

Lista de verificare pentru optimizarea VPS în PHP / Mysql / Nginx
Cum se furnizează un server VPS de performanță mai mare, care rulează pe Nginx + PHP + Mysql? Acest articol oferă o listă de verificare a setărilor principale care vor optimiza foarte mult serverul. Configurația va dura nu mai mult de 10 minute și nu necesită altceva decât editarea fișierelor de configurare.

Django pe producție

Instalarea modulului pagespeed pentru Nginx pe Debian 6
De mai mulți ani, Google a lansat un modul pentru serverele Web Apache și Nginx, care reprezintă un set de filtre și vă permite să îmbunătățiți în mod semnificativ performanța site-ului. În acest post, nu este vorba despre tehnologia și descrierea modulului, ci despre instalarea și configurarea de bază. Instalarea va fi descrisă numai pentru Nginx. instalare

Transferarea unui site care rulează WordPress pe un server de acasă cu Ubuntu 13.10 +.
Sarcina a fost următoarea: mutați-vă blogul, realizat pe WordPress pe serverul de acasă. Toate în scopul experimentării. Instalarea Nginx, PHP (nu uitați să instalați php5-fpm), MySQL nu va descrie - este simplu, cu instalarea implicită totul ar trebui să funcționeze. De asemenea, avem nevoie de copii de siguranță ale site-ului și ale bazelor sale de date. Ele pot fi obținute pe o gazdă, unde

Django pe producție

Django pe producție

Multi-hosting aplicații django folosind nginx + uwsgi + virtualenv
Sarcina: implementați mai multe proiecte django utilizând diferite versiuni ale django și diferite versiuni ale python-ului pe un singur server. Instrucțiunea este dată pentru OS Ubuntu 12.04. Pregătirea În primul rând, am pus versiunile Python de care suntem interesați. Pachete necesare pentru compilare: sudo apt-get install zlib1g zlib1g-dev zlibc.







Articole similare

Trimiteți-le prietenilor: