Servirea aplicațiilor django cu apache și mod_wsgi în ubuntu

Plasarea serverelor în centre de date fiabile din Europa. Deschideți serverul VPS / VDS bazat pe cloud pe SSD-uri rapide în 1 minut!

Cel mai bun Gazduire:
- protejează datele de accesul nedorit într-un centru de date european protejat
- va accepta plata cel puțin în taxe.
- vă va permite să vă distribuiți distribuția

- protecția împotriva atacurilor DDos
- copie de rezervă gratuită
- Uptime 99.9999%
- Centrul de date - TIER III
- furnizor - TIER I

Sprijinim în limba rusă 24/7/365 Lucrăm cu persoane juridice și persoane fizice. Acum aveți nevoie de 24 nuclee și 72 GB de memorie RAM. Vă rog!

Tarifele noastre avantajoase vor dovedi că nu ați știut încă ieftinul de găzduire!

Minute: selectați configurația, plătiți și CMS de pe VPS este gata.
Banii înapoi - 30 de zile!

Carduri bancare, e-valută, prin intermediul terminalelor Qiwi, Webmoney, PayPal, Novoplat etc.

Puneți o întrebare la sprijinul 24/7/365

Găsiți răspunsuri în baza noastră de date și cunoașteți recomandările

Django este un cadru web productiv pentru dezvoltarea de aplicații sau site-uri în Python.

Django oferă, de asemenea, un server de dezvoltare simplu pentru testarea codului local. Din păcate, pentru producție, trebuie să căutați un server web mai sigur și mai puternic, deoarece acest server este complet inadecvat.

Acest ghid va ajuta să instalați și să configurați Django într-un mediu virtual de Python, și configurați Apache pentru a sprijini aplicarea și prelucrarea cererilor clienților (folosind modulul Apache numit mod_wsgi, care interacționează cu Django prin interfata WSGI).

cerinţe

Pentru a finaliza acest tutorial, trebuie mai întâi să configurați serverul Ubuntu 16.04 și să creați un utilizator non-root cu acces la sudo. Instrucțiuni detaliate privind configurarea inițială a serverului și crearea de utilizatori pot fi găsite aici.

Cadrul Django din acest tutorial va fi instalat în mediul virtual Python, care vă va permite să utilizați un set individual de pachete pentru această aplicație.

După rularea aplicației, trebuie să configurați interacțiunea serverului web Apache cu aplicația Django. Pentru a face acest lucru, utilizați modulul mod_wsgi, care convertește cererile HTTP într-un format prietenos Django în conformitate cu specificația WSGI.

Instalarea pachetelor din repozitoriul Ubuntu

În primul rând, trebuie să instalați din depozitul Ubuntu toate pachetele necesare: serverul web Apache, modulul mod_wsgi și pip (managerul de pachete Python).

Actualizați indexul de pachete și instalați programele.

Dacă utilizați Python 2, tastați:

sudo apt-get update
sudo apt-get instala python-pip apache2 libapache2-mod-wsgi

În Python 3, se utilizează un alt pachet de pip:

sudo apt-get update
sudo apt-get instala python3-pip apache2 libapache2-mod-wsgi-py3

Configurarea mediului virtual

După pregătirea serverului, puteți începe să lucrați la aplicația Django. Mai întâi, creați un mediu virtual Python pentru stocarea instrumentelor de proiect.

Pentru aceasta, folosiți comanda virtualenv. Pentru a instala acest utilitar, tastați:

Python 2:
sudo pip instalare virtualenv
Python 3:
sudo pip3 instala virtualenv

Acum, utilitarul virtualenv este instalat și îl puteți folosi pentru a crea un mediu. Creați un director unde va fi localizat mediul virtual și mergeți la el:

În acest director, creați un mediu virtual Python:

Această comandă va crea un mediu virtual numit myprojectenv în directorul myproject și va instala o versiune locală Python și pip pe care o puteți utiliza pentru a crea un mediu de dezvoltare izolat pentru proiect.

Înainte de a începe să instalați dependențe de aplicații, trebuie să activați mediul virtual.

sursa myprojectenv / bin / activate

După aceasta, linia de comandă se va schimba, indicând faptul că mediul actual este mediul virtual Python:

După ce ați activat mediul virtual, instalați Django:

pip install django

Notă. Indiferent de versiunea Python, mediul virtual activ utilizează comanda pip, nu pip3.

Crearea și configurarea unei aplicații Django

După ce ați instalat Django într-un mediu virtual, puteți începe să creați fișiere de proiect Django.

Crearea unui proiect Django

Instalați fișierele Django în directorul creat anterior. Aceasta va crea directoare de nivel secundar care stochează cod și scripturi. Notă: comanda trebuie să se încheie cu un caracter de perioadă.

django-admin.py startproject myproject.

Configurarea Proiectului Django

Manualul utilizează baza de date standard SQLite, astfel încât configurarea nu durează prea mult.

Notă. Pentru a sprijini aplicațiile de mari dimensiuni, se recomandă configurarea unui DBMS mai fiabil.

Accentul va fi pus pe configurarea directorului fișierelor statice Django.

La sfârșitul fișierului, adăugați directiva STATIC_ROOT, care instruiește cadrul Django să găsească fișiere statice.


STATIC_URL = '/ static /'
STATIC_ROOT = os.path.join (BASE_DIR, "static /")

Salvați și închideți fișierul.

După aceasta, puteți deschide schema bazei de date originale folosind scriptul de control:

/ proiectul meu
./manage.py makemigrations
./manage.py migrați

Apoi, trebuie să compilați conținutul static într-un singur director:

După confirmare, toate fișierele statice vor fi plasate în directorul static din directorul de proiect.

Acum trebuie să deblocați portul de dezvoltare al serverului Django, 8000. În prezent, acesta este închis de paravanul de protecție UFW (dacă ați configurat serverul în conformitate cu acest manual).

Pentru a debloca serverul de dezvoltare, tastați:

sudo ufw permite 8000

Testați proiectul rulând serverul de dezvoltare Django:

/manage.py runserver 0.0.0.0:8000

Deschideți browserul și vizitați numele de domeniu sau serverul IP pe portul 8000:

Pagina de întâmpinare Django ar trebui să apară pe ecran:

A funcționat!
Felicitări pentru prima dvs. pagină Django.

Pentru a opri serverul de dezvoltare, apăsați CTRL-C.

Pentru a dezactiva mediul virtual, tastați:

Configurarea Apache

Deci, proiectul Django este gata, și puteți începe configurarea Apache pe front. Toate conexiunile client primite de Apache vor fi convertite în formatul WSGI cerut de Django, folosind modulul mod_wsgi (care ar fi trebuit să fie activat automat după instalare).

Pentru a configura WSGI, editați gazda virtuală implicită.

sudo nano /etc/apache2/sites-available/000-default.conf

Toate directivele din dosar pot fi lăsate. Adăugați doar câteva opțiuni noi.

Mai întâi, configurați fișiere statice; După aceasta, Apache va transmite toate cererile începând cu / static în directorul static, care este localizat în directorul proiectului. Pentru a face acest lucru, trebuie să definiți Alias ​​și să oferiți acces la directorul dorit.


.
Alias ​​/ static / home / 8host / myproject / static

Solicitați toate acordate

Apoi trebuie să configurați drepturile de acces la fișierul wsgi.py (al doilea nivel al directoarelor de proiect) în care este stocat codul proiectului. Pentru a face acest lucru, utilizați secțiunea Director.


.
Alias ​​/ static / home / 8host / myproject / static

Solicitați toate acordate



Solicitați toate acordate


Acum puteți accesa setările care procesează WSGI. Pentru a porni procesele WSGI, utilizați modul daemon; în acest scop este utilizată directiva WSGIDaemonProcess. Această directivă are un nume arbitrar pentru proces. Manualul folosește numele meuproiect.

Apoi trebuie să specificați calea spre Python, unde serverul Apache poate găsi toate componentele necesare. Deoarece mediul virtual este utilizat în configurație, trebuie să specificați calea către directorul de medii virtuale și apoi calea Python la directorul de bază al proiectului Django.

După aceasta, trebuie să specificați un grup de proces; această valoare trebuie să se potrivească cu valoarea directivei WSGIDaemonProcess (în acest caz este proiectul meu). În cele din urmă, trebuie să setați aliasul de script, astfel încât serverul Apache să trimită cererile pentru domeniul rădăcină în fișierul wsgi.py:


.
Alias ​​/ static / home / 8host / myproject / static

Solicitați toate acordate



Solicitați toate acordate


WSGIDaemonProcess myproject python-home = / home / 8host / myproject / myprojectenv Python-path = / home / 8host / myproject
WSGIProcessGroup myproject
WSGIScriptAlias ​​/ /home/8host/myproject/myproject/wsgi.py

Salvați și închideți fișierul.

Drepturi de acces

Folosind baza de date SQLite (care este standard), nu uitați să acordați serverului web Apache acces la acesta.

Pentru a face acest lucru, trebuie să acordați grupului de proprietari drepturile de a scrie și de a citi. În mod implicit, fișierul bazei de date se numește db.sqlite3 și ar trebui să fie în directorul proiectului:

Permiteți permisiunile fișierului grupului în care este inclus Apache; acest grup este www-date.

sudo chown: www-date

Pentru a putea scrie într-un fișier, grupul trebuie să fie proprietarul directorului părinte al fișierului.

sudo chown: www-date

Acum trebuie să modificați din nou setările pentru paravanul de protecție. Închideți portul 8000 și adăugați o excepție pentru traficul Apache:

sudo ufw delete permite 8000
sudo ufw permite 'Apache Full'

Verificați sintaxa fișierelor Apache:

sudo apache2ctl configtest

Dacă nu există erori în fișiere, comanda va reveni:

Reporniți serviciul Apache pentru a actualiza setările.

sudo systemctl reporni apache2

Notă. Nu este necesar să specificați numărul portului.

Pașii următori

Acum, aplicația Django rulează într-un mediu virtual individual, iar modulul mod_wsgi ajută Apache să convertească cererile într-un format Django ușor de înțeles.

După ce vă asigurați că aplicația funcționează, puteți continua configurarea de securitate. Dacă aplicația are un nume de domeniu, puteți obține un certificat SSL gratuit de la Let's Encrypt.

Bine ai venit!
Ai scris:

Django este un cadru web productiv pentru dezvoltarea de aplicații sau site-uri în Python. Django oferă, de asemenea, un server de dezvoltare simplu pentru testarea codului local. Din păcate, pentru producție, trebuie să căutați un server web mai sigur și mai puternic, deoarece acest server este complet inadecvat.

Și de ce nu se potrivește? De ce Django nu se potrivește în ceea ce privește puterea și securitatea?
Îți pun întrebarea, tk. Nu prea înțeleg.
Vă mulțumim anticipat!

Nu este în cadrul Django, ci în serverul său de dezvoltare încorporat.

Serverul de dezvoltare Django este un server web simplu și ușor, care vă permite să testați site-ul în stadiul de dezvoltare. Un astfel de server web nu poate face față traficului ridicat în stadiul de producție: este necesar doar pentru ca în timpul dezvoltării să nu trebuiți să cheltuiți resurse și timp pentru a configura un server web complet, cum ar fi Apache sau Nginx.

Vă mulțumesc foarte mult pentru răspunsul! Te-am înțeles

Articole similare