Django esmakordne tootmiskeskkonda viimine võib olla heidutav ülesanne. Sageli käivitavad arendajad oma tootmiskeskkonna jaoks pilves Linuxi eksemplari.
Selles õpetuses näitame teile, kuidas käivitada Django tootmises, kasutades värsket Ubuntu eksemplari.
Eeldame, et kõik teie redigeerimised on tehtud serveris ja käske käivitate juurkäsuna.
Selle õpetuse jaoks kasutame Ubuntu 18.04.2 LTS
Projekti jaoks kasutaja loomine
Loome oma rakenduse käitamiseks uue kasutaja django. See annab väikese julgeolekueelise.
Uue kasutaja loomiseks tehke järgmist
useradd -m djangoThe -m lipp
loob uue kodukataloogi: / home / django.
Pythoni keskkonna seadistamine
Esimesed asjad kõigepealt: värskendage oma pakettide loendeid apt-get värskendus
Ubuntu 18.04 laeva Python 3-ga.6, kuid seda ei tarnita pipiga, mille peate oma sõltuvused installima.
apt-get install python3-pipNüüd, kui meil on pip, loome virtuaalse keskkonna. Virtuaalsed keskkonnad aitavad vältida konflikte Linuxi kasutatavate Pythoni pakettidega.
pip3 installige virtualenvcd / home / django
virtualenv env
Nüüd olete loonud virtuaalse Python 3.6 keskkond / home / django / etv
kaust, mida saab aktiveerida järgmise käsuga: Nüüd, kui meil on pip, loome virtuaalse keskkonna. Virtuaalsed keskkonnad aitavad vältida konflikte Linuxi kasutatavate Pythoni pakettidega.
Django projekti püstitamine
Selle õpetuse jaoks loome ajutise Django projekti. Kui kasutate oma koodi, peate selle hoopis serverisse üles laadima. Tegutseme kodukataloogis / home / django.Django projekti püstitamine
Loome Django projekti:
cd / home / djangoallikas env / bin / activate
pip install django
django-admin startprojecti õpetus
Kontrollige, kas asjad töötavad, käivitades:
cd õpetuspython hallata.py töötaberver 0.0.0.0:80
Meie Ubuntu eksemplar töötab 178-ga.128.229.34, seega loome ühenduse saidiga http: // 178.128.229.34.Kontrollige, kas asjad töötavad, käivitades:
Tõenäoliselt näete midagi sellist:
Selle parandamiseks muudame / home / django / tutorial / tutorial / settings.py
. Leidke ALLOWED_HOSTS = []
ja määrake sellele:
"178.128.229.34 '# asenda see oma serveri IP-aadressiga
või domeeni nimi, mida kasutate ühenduse loomiseks
]
Naaseme nüüd lehele http: // 178.128.229.34:
Suurepärane! Oleme võrgus!
PostgreSQL-i, andmebaasi seadistamine
Vaikimisi kasutab Django SQLite3 andmebaasi. Kahjuks ei luba SQLite3 samaaegseid kirjutusi. Kui teie veebisaidil on andmeid redigeerimas ainult üks kasutaja ja ülejäänud külastajad lihtsalt loevad lehti, siis võib see olla asjakohane. Kuid kui teil on korraga mitu inimest andmeid redigeerimas, soovite tõenäoliselt kasutada erinevat taustaprogrammi.
Levinud valikud on PostgreSQL ja Mysql. Selle õpetuse jaoks läheme koos PostgreSQL-iga.
Alustage PostgreSQL-i installimisega:
apt-get install postgresqlSeejärel käivitage andmebaasi kest psql. Vaikimisi saab andmebaasiga ühenduse luua ainult postgresi kasutaja, nii et kõigepealt peame selle kasutajana autentima:
su - postgrespsql
Järgmiseks vajame sellele andmebaasile juurdepääsu saamiseks andmebaasi ja kasutajat:
luua andmebaasi õpetus;loo krüptitud parooliga kasutaja juhendaja_kasutaja 'juhendaja_parool';
andke kõik õigused andmebaasi õpetuses kasutajale tutorial_user;
Nüüd tippige exit või vajutage kaks korda klahvikombinatsiooni Ctrl-D: üks kord psql-st väljumiseks ja üks kord postgresuseri kestast välja logimiseks.
Suurepärane! Nüüd oleme oma andmebaasi ja kasutaja seadistanud. Kontrollime, kas saame oma andmebaasi sisse logida.
Püüame avada andmebaasi kesta, logides seekord sisse oma loodud kasutajaga andmebaasi:
psql -Uututorial_user -juhend -h127.0.0.1 -WSisestage viipale meie loodud parool: juhendaja_parool.
Kui näete andmebaasi kesta, olete olnud edukas. Kui näete vigu, peate tagasi minema ja välja selgitama, mis viga on.
Django ühendamine andmebaasiga
Django andmebaasiga ühendamiseks peame kõigepealt installima Pythoni PostgreSQL-i adapteri:
pip install psycopg2-binaarneSiis avame end / home / django / tutorial / tutorial / settings.py
ja konfigureerige ühendus.
Leidke oma praegune andmebaasiühendus; kui te seda ei muutnud, võib see välja näha umbes selline:
ANDMEBAASID ='vaikimisi':
'MOOTOR': 'django.db.taustaprogrammid.sqlite3 ',
'NIMI': os.tee.liitu (BASE_DIR, 'db.sqlite3 '),
PostgreSQL-iga ühenduse loomiseks asendame selle järgmisega:
ANDMEBAASID ='vaikimisi':
'MOOTOR': 'django.db.taustaprogrammid.postgresql_psycopg2 ',
'NAME': 'õpetus',
'USER': 'juhendaja_kasutaja',
'PASSWORD': 'juhendaja_parool',
'HOST': '127.0.0.1 ',
'PORT': '5432',
Testime ühendust:
cd / home / django / juhendajapython hallata.py töötaberver 0.0.0.0:80
Teil peaks taas olema võimalus oma veebisaiti külastada (meie jaoks aadressil http: // 178.128.229.34 /, kuid asendage see oma IP või hostinimega).
Kui kõik on korras, saame jätkata.
Nginxi, veebiserveri seadistamine
Kui jooksed python hallata.py töötaberver
, kasutate Django arendusserverit. See sobib suurepäraselt kohaliku arengu jaoks, kuid nagu ka SQLite3 puhul, ei sobi see tegelikult tootmiseks.
Tootmisveebiserverite levinumad valikud on nginx ja Apache. Selle õpetuse jaoks kasutame nginxi.
Installige nginx järgmiselt:
apt-get install nginxKui kõik on hästi toiminud, peaks nginx töötama pordis 80. Minge edasi ja vaadake oma veebisaiti; peaksite nägema:
Suurepärane, nii et nginx töötab ja töötab! Järgmisena peame selle konfigureerima Djangoga suhtlemiseks. Avage nginxi konfiguratsioonifail, mis asub aadressil / etc / nginx / sites-available / default. Asendame faili järgmisega:
ülesvoolu djangoserver 127.0.0.1: 8000;
server
kuulata 80;
asukoht /
try_files $ uri @send_to_django;
asukoht @send_to_django
proxy_set_header Host $ http_host;
puhverserver_siirata välja;
puhverserveri_pääs http: // django;
Testige konfiguratsioonifaili, käivitades nginx -t. Kui kõik on korras, saame uuesti laadida, käivitades nginx -s uuesti laadimise.
Nüüd, kui külastate oma saiti, näete järgmist:
Alati, kui seda näete, tähendab see, et nginx ei suutnud päringut edastada eelmises protsessis. Praegu on see sellepärast, et sellega üritatakse taotlust edastada 127-le.0.0.1: 8000, kuid sellel aadressil ei toimu protsessi kuulamist.
Käivitame Django arendusserveri ja proovime uuesti:
cd / home / django / juhendajapython hallata.py jooksuserver 127.0.0.1: 8000
ja külastage uuesti oma veebisaiti. Peaksite nägema oma Django rakendust.
Django paigaldamine Gunicornile
Pidage meeles, et me ei soovi oma Django arendusserverit tootmises kasutada. Selle asemel kasutame Django käitamiseks veebiserveri lüüsiliidese (WSGI) serverit. Nginx edastab päringu WSGI-serverile, kus töötab Django.
WSGI-serveri levinumad valikud on Gunicorn ja uWSGI. Selle õpetuse jaoks kasutame Gunicorni.
Paigaldame Gunicorni:
pip paigaldage püssJärgmisena võime alustada relvaga järgmiselt:
cd / home / django / juhendajapüssisarviku õpetus.wsgi
Nüüd peaksite saama külastada oma veebisaiti ja näha, kuidas teie rakendus töötab korralikult.
Gunicorni käitamine teenusena
Sellise püssisarve käitamisel on mõned probleemid:
- Kui SSH seansi sulgeme, peatub püssirohuprotsess.
- Kui server taaskäivitub, ei alustata püssirohuprotsessi.
- Protsess töötab root. Kui häkkerid leiavad meie rakenduse koodist ärakasutamise, saavad nad käske käivitada juurkasutajana. Me ei taha seda; aga sellepärast lõime djangouseri!
Nende probleemide lahendamiseks käivitame Gunicorni süsteemiteenusena.
cd / home / djangomkdir bin
cd / home / django / bin
puudutage start-serverit.sh
Start-serveris.sh:
cd / home / djangoallikas env / bin / activate
cd õpetus
püssisarve õpetus.wsgi
Nüüd saate skripti testida:
cd / home / django / binbash algusserver.sh
# külastage oma veebisaiti, see peaks töötama
Nüüd loome Gunicornile teenuse systemd. Looge / etc / systemd / system / gunicorn.teenused järgnevad:
[Üksus]Kirjeldus = Gunicorn
Pärast = võrk.sihtmärk
[Teenus]
Tüüp = lihtne
Kasutaja = django
ExecStart = / home / django / bin / start-server.sh
Taaskäivitamine = ebaõnnestunud
[Install]
WantedBy = mitme kasutajaga.sihtmärk
Nüüd lubame teenuse ja käivitame selle
systemctl lubage püssirukksystemctl start relv
Praegu peaksite nägema oma veebisaiti.
Saame püssirohu välja lülitada järgmiselt:
systemctl peatus relvJa peaksite nägema 502 Bad Gateway.
Lõpuks kontrollime alglaadimistsüklit:
systemctl start relvTaaskäivita nüüd
Kui teie masin võrku jõuab, peaksite nägema, et teie veebisait on üleval.
Staatilised failid
Kui külastate oma veebisaidil Django administraatori paneeli aadressil / admin / (meie jaoks on see http: // 178.128.229.34 / admin /) märkate, et staatilisi faile ei laadita õigesti.
Peame staatiliste failide jaoks looma uue kausta:
cd / home / djangomkdir staatiline
Seejärel ütleme Djangole, kuhu ta peaks staatilised failid panema redigeerides / home / django / tutorial / tutorial / settings.py ja lisades:
STATIC_ROOT = '/ kodu / django / staatiline /'Nüüd saame staatilised failid kokku koguda:
cd / home / djangoallikas env / bin / activate
cd õpetus
python hallata.py kollektiivne
Lõpuks peame käskima nginxil neid staatilisi faile teenindada.
Avame faili / etc / nginx / sites-available / default ja lisame järgmise otse oma asukoha / ploki kohale:
asukoht / staatiline /juur / kodu / django;
proovifailid $ uri = 404;
Kogu fail peaks nüüd välja nägema selline:
ülesvoolu djangoserver 127.0.0.1: 8000;
server
kuulata 80;
asukoht / staatiline /
juur / kodu / django;
proovifailid $ uri = 404;
asukoht /
try_files $ uri @send_to_django;
asukoht @send_to_django
proxy_set_header Host $ http_host;
puhverserver_siirata välja;
puhverserveri_pääs http: // django;
Saame faili uuesti laadida, kasutades nginx -s uuesti laadimist
Ja voila! Teie staatilised failid töötavad nüüd täielikult.
Järeldus
Sel hetkel töötab teie Django rakendus korralikult. Kui teil on mingeid erinõudeid, peate võib-olla seadistama vahemälu nagu Redis või sõnumijärjekorra nagu Rabbit MQ. Samuti võiksite seadistada pideva juurutamise, kuna juurutamisprotseduur võib võtta aega.
Teine oluline samm on teha sobivad sammud oma Ubuntu masina turvamiseks. Vastasel juhul võib teie server käituda valesti!
Edu!