Django

Vytvorenie aplikácie Django na serveri Ubuntu

Vytvorenie aplikácie Django na serveri Ubuntu
Django je spoločná platforma pre vývoj webových stránok, webových aplikácií a webových rozhraní API. Existuje veľa výhod použitia rámca Django pre váš projekt ako nástroja a ak si nie ste istí, že je to správne riešenie, stačí sa pozrieť na mnoho známych značiek, ktoré používajú Django v zásobníku.

Prvé nasadenie Djanga do produkčného prostredia môže byť skutočnou výzvou. Vývojári často spustia inštanciu systému Linux v cloude pre svoje produkčné prostredie.

V tomto tutoriáli vám ukážeme, ako spustiť Django v produkcii pomocou novej inštancie Ubuntu.

Budeme predpokladať, že všetky vaše úpravy sa vykonávajú na serveri a že príkazy spúšťate ako root.

Pre tento tutoriál používame Ubuntu 18.04.2 LTS

Vytvorenie používateľa pre projekt

Vytvoríme nového používateľa, django, pre chod našej aplikácie. To poskytuje miernu bezpečnostnú výhodu.

Vytvorenie nového používateľa:

useradd -m django

The -m vlajka vytvorí nový domovský adresár: / home / django.

Nastavenie prostredia Python

Najdôležitejšie veci: aktualizujte zoznamy balíkov pomocou aktualizácia apt-get

Ubuntu 18.04 sa dodáva s Pythonom 3.6, ale nedodáva sa s pipom, ktorý si budete musieť nainštalovať vo svojich závislostiach.

apt-get nainštalovať python3-pip

Teraz, keď máme pip, vytvorme virtuálne prostredie. Virtuálne prostredia pomáhajú predchádzať konfliktom s balíkmi Pythonu používanými systémom Linux.

pip3 nainštalovať virtualenv
cd / home / django
virtualenv env

Teraz ste vytvorili virtuálny Python 3.6 prostredia v / home / django / env priečinok, ktorý sa dá aktivovať nasledujúcim príkazom: Teraz, keď máme pip, vytvorme si virtuálne prostredie. Virtuálne prostredia pomáhajú predchádzať konfliktom s balíkmi Pythonu používanými systémom Linux.

zdroj / domov / django / env / bin / aktivovať

Pripravuje sa projekt Django

Pre tento tutoriál vytvoríme dočasný projekt Django. Ak nasadzujete svoj vlastný kód, budete ho musieť namiesto toho nahrať na server. Budeme pracovať v domovskom adresári / home / django.Pripravuje sa projekt Django

Vytvorme projekt Django:

cd / home / django
zdroj env / bin / aktivovať
pip nainštaluj django
tutoriál django-admin startproject

Overte, či veci fungujú, a to spustením:

cd návod
spravovať python.py runserver 0.0.0.0:80

Naša inštancia Ubuntu beží na čísle 178.128.229.34, takže sa pripojíme k adrese http: // 178.128.229.34.Overte, či veci fungujú, a to spustením:

Pravdepodobne uvidíte niečo také:

Tento problém opravíme / home / django / tutorial / tutorial / settings.py. Nájsť ALLOWED_HOSTS = [] a nastavte ju na:

ALLOWED_HOSTS = [
„178.128.229.34 '# nahraďte to IP adresou vášho servera
alebo názov domény, ktorú používate na pripojenie
]

Teraz sa vráťme na http: // 178.128.229.34:

Skvelé! Sme online!

Nastavenie databázy PostgreSQL

Django štandardne používa databázu SQLite3. Bohužiaľ, SQLite3 neumožňuje súbežné zápisy. Ak má váš web niekedy iba jedného používateľa, ktorý upravuje údaje, a ostatní návštevníci práve čítajú stránky, potom by to mohlo byť vhodné. Ak ale máte viac ľudí, ktorí upravujú údaje súčasne, pravdepodobne budete chcieť použiť iný backend.

Bežné možnosti sú PostgreSQL a Mysql. Pre tento tutoriál pôjdeme s PostgreSQL.

Začnite inštaláciou PostgreSQL:

apt-get nainštalovať postgresql

Potom spustite psql, databázový shell. V predvolenom nastavení sa k databáze môže pripojiť iba používateľ postgres, takže sa najskôr budeme musieť autentifikovať ako tento používateľ:

su - postgres
psql

Ďalej potrebujeme databázu a používateľa na prístup k tejto databáze:

vytvoriť databázový tutoriál;
vytvoriť používateľa tutorial_user so zašifrovaným heslom 'tutorial_password';
udeliť všetky oprávnenia k databázovému tutoriálu tutorial_user;

Teraz zadajte príkaz exit alebo dvakrát stlačte Ctrl-D: raz ukončite psql a raz sa odhláste z shellu postgresusera.

Skvelé! Teraz máme nastavenú našu databázu a používateľov. Overme si, či sa môžeme prihlásiť do našej databázy.

Pokúsime sa otvoriť databázový shell, tentokrát sa prihlásime do databázy, ktorú sme vytvorili s používateľom, ktorého sme vytvorili:

psql -utorial_user -dtutorial -h127.0.0.1-Z

Po výzve zadajte heslo, ktoré sme vytvorili: tutorial_password.

Ak vidíte databázový shell, boli ste úspešní. Ak uvidíte nejaké chyby, budete sa musieť vrátiť späť a zistiť, čo je zlé.

Pripojenie Django k databáze

Aby sme pripojili Django k databáze, najskôr si musíme nainštalovať adaptér Python PostgreSQL:

pip nainštalujte psycopg2-binary

Potom sa otvorme / home / django / tutorial / tutorial / settings.pya nakonfigurujte pripojenie.

Nájdite svoje aktuálne pripojenie k databáze; ak ste ho neupravili, mohlo by to vyzerať asi takto:

DATABÁZY =
'default':
'ENGINE': 'django.db.backendov.sqlite3 ',
„NÁZOV“: os.cesta.pripojiť sa (BASE_DIR, 'db.sqlite3 '),

Ak sa chcete pripojiť k PostgreSQL, nahradíme ho nasledujúcim:

DATABÁZY =
'default':
'ENGINE': 'django.db.backendov.postgresql_psycopg2 ',
„NAME“: „návod“,
'USER': 'tutorial_user',
„PASSWORD“: „tutorial_password“,
„HOST“: „127.0.0.1 ',
„PORT“: „5432“,

Vyskúšajme pripojenie:

cd / home / django / návod
spravovať python.py runserver 0.0.0.0:80

Mali by ste opäť byť schopní navštíviť svoju webovú stránku (pre nás na adrese http: // 178.128.229.34 /, ale nahraďte to svojou IP alebo hostname).

Ak bude všetko v poriadku, môžeme pokračovať.

Nastavuje sa webový server nginx

Keď bežíte spravovať python.py runserver, používate vývojový server Django. To je skvelé pre miestny vývoj, ale rovnako ako v prípade SQLite3 nie je naozaj vhodný na výrobu.

Bežné možnosti pre produkčné webové servery sú nginx a Apache. Pre tento tutoriál použijeme nginx.

Nginx nainštalujte pomocou nasledujúceho:

apt-get nainštalovať nginx

Teraz, ak všetko funguje dobre, by mal byť nginx spustený na porte 80. Pokračujte a skontrolujte svoju webovú stránku. mali by ste vidieť:

Super, takže nginx je funkčný! Ďalej ho budeme musieť nakonfigurovať na komunikáciu s Djangom. Otvorte konfiguračný súbor nginx, ktorý sa nachádza na / etc / nginx / sites-available / default. Nahraďme súbor nasledujúcim:

upstream django
server 127.0.0.1: 8000;

server
počúvať 80;
miesto /
try_files $ uri @send_to_django;

umiestnenie @send_to_django
proxy_set_header Hostiteľ $ http_host;
proxy_redirect vypnuté;
proxy_pass http: // django;

Otestujte konfiguračný súbor spustením nginx -t. Ak je všetko v poriadku, môžeme znovu načítať spustením nginx -s reload.

Teraz, ak navštívite svoju stránku, uvidíte nasledujúce:

Kedykoľvek to uvidíte, znamená to, že nginx nedokázal odovzdať požiadavku procesu smerom nahor. Momentálne je to preto, lebo sa snaží postúpiť žiadosť na 127.0.0.1: 8000, ale na tejto adrese nie je žiadny proces načúvajúci.

Spustíme vývojový server Django a skúsime to znova:

cd / home / django / návod
spravovať python.py runserver 127.0.0.1: 8000

a znova navštívte svoj web. Mali by ste vidieť svoju aplikáciu Django.

Mounting Django on Gunicorn

Pamätajte, že nechceme používať náš vývojový server Django pri výrobe. Namiesto toho na spustenie Django použijeme server Web Server Gateway Interface (WSGI). Nginx odošle požiadavku na server WSGI, na ktorom je spustený Django.

Bežné možnosti servera WSGI sú Gunicorn a uWSGI. Pre tento tutoriál použijeme Gunicorn.

Nainštalujeme Gunicorn:

pip nainštaluj gunicorn

Ďalej môžeme začať gunicorn nasledovne:

cd / home / django / návod
gunicorn návod.wsgi

Teraz by ste mali byť schopní navštíviť svoju webovú stránku a vidieť správne fungovanie vašej aplikácie.

Spustenie Gunicorn ako služby

Existuje niekoľko problémov so spustením gunicorn, ako je tento:

  1. Ak ukončíme reláciu SSH, proces gunicorn sa zastaví.
  2. Ak sa server reštartuje, proces gunicorn sa nespustí.
  3. Proces beží ako root. Ak hackeri nájdu zneužitie v kóde našej aplikácie, budú môcť spúšťať príkazy ako root. Toto nechceme; ale preto sme vytvorili djangouser!

Na vyriešenie týchto problémov spustíme Gunicorn ako systémovú službu.

cd / home / django
mkdir bin
cd / home / django / bin
dotknite sa štart-server.š

Na serveri start.sh:

cd / home / django
zdroj env / bin / aktivovať
cd návod
gunicorn návod.wsgi

Teraz môžete otestovať skript:

cd / home / django / bin
bash start-server.š
# navštívte svoj web, mal by byť spustený

Teraz vytvárame systémovú službu pre Gunicorn. Vytvorte / etc / systemd / system / gunicorn.nasleduje služby:

[Jednotka]
Popis = Gunicorn
Po = sieť.cieľ
[Služba]
Typ = jednoduchý
Užívateľ = django
ExecStart = / home / django / bin / start-server.š
Reštart = zlyhanie
[Inštalácia]
WantedBy = viac používateľov.cieľ

Teraz povolíme službu a spustíme ju

systemctl povolit gunicorn
systemctl start gunicorn

Váš web by sa mal zobraziť v tejto chvíli.

Gunicorn môžeme vypnúť nasledovne:

systemctl stop gunicorn

A mali by ste vidieť 502 Bad Gateway.

Nakoniec skontrolujeme bootovací cyklus:

systemctl start gunicorn
reštartuj teraz

Keď sa vaše zariadenie vráti online, mali by ste vidieť, že je váš web funkčný.

Statické súbory

Ak navštívite administrátorský panel Django na svojom webe na adrese / admin / (pre nás je to http: // 178.128.229.34 / admin /), všimnete si, že statické súbory sa nenačítavajú správne.

Budeme musieť vytvoriť nový priečinok pre statické súbory:

cd / home / django
mkdir statický

Potom povieme Djangu, že by to malo umiestniť statické súbory úpravou / home / django / tutorial / tutorial / settings.py a pridanie:

STATIC_ROOT = '/ home / django / static /'

Teraz môžeme zhromaždiť statické súbory:

cd / home / django
zdroj env / bin / aktivovať
cd návod
spravovať python.py collectstatic

Nakoniec musíme povedať, aby nginx slúžil týmto statickým súborom.

Poďme otvoriť / etc / nginx / sites-available / default a pridať nasledujúce priamo nad vaše umiestnenie / blok:

umiestnenie / statické /
koreň / domov / django;
try_files $ uri = 404;

Celý súbor by mal teraz vyzerať takto:

upstream django
server 127.0.0.1: 8000;

server
počúvať 80;
umiestnenie / statické /
koreň / domov / django;
try_files $ uri = 404;

miesto /
try_files $ uri @send_to_django;

umiestnenie @send_to_django
proxy_set_header Hostiteľ $ http_host;
proxy_redirect vypnuté;
proxy_pass http: // django;

Súbor môžeme načítať znova pomocou načítania nginx -s

A voila! Vaše statické súbory budú teraz fungovať naplno.

Záver

V tomto okamihu vaša aplikácia Django funguje správne. Ak máte nejaké špeciálne požiadavky, možno budete musieť nastaviť cache ako Redis alebo front správ ako Rabbit MQ. Možno budete tiež chcieť nastaviť nepretržité nasadenie, pretože postup nasadenia môže chvíľu trvať.

Ďalším dôležitým krokom je podniknúť príslušné kroky na zabezpečenie vášho zariadenia Ubuntu. V opačnom prípade by sa mohlo stať, že váš server nebude fungovať správne!

Veľa štastia!

Ako zmeniť ľavé a pravé tlačidlo myši na počítači so systémom Windows 10
Je úplnou normou, že všetky zariadenia počítačových myší sú ergonomicky navrhnuté pre pravákov. Existujú však dostupné myšacie zariadenia, ktoré sú šp...
Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...
Pridajte gestá myši do systému Windows 10 pomocou týchto bezplatných nástrojov
V posledných rokoch sa počítače a operačné systémy veľmi vyvinuli. Boli časy, keď používatelia museli prechádzať správcami súborov pomocou príkazov. R...