Django

Vytvoření aplikace Django na serveru Ubuntu

Vytvoření aplikace Django na serveru Ubuntu
Django je běžná platforma pro vývoj webových stránek, webových aplikací a webových API. Existuje mnoho výhod použití rámce Django pro váš projekt jako nástroje a pokud si nejste jisti, že je to správné řešení, stačí se podívat na mnoho značek velkých jmen, které používají Django v jejich zásobníku.

První nasazení Django do produkčního prostředí může být skličující úkol. Vývojáři často spustí instanci systému Linux v cloudu pro své produkční prostředí.

V tomto kurzu vám ukážeme, jak spustit Django v produkci pomocí nové instance Ubuntu.

Předpokládáme, že všechny vaše úpravy se provádějí na serveru a že tyto příkazy spouštíte jako root.

V tomto výukovém programu používáme Ubuntu 18.04.2 LTS

Vytvoření uživatele pro projekt

Pro spuštění naší aplikace vytvoříme nového uživatele, django. To poskytuje mírnou bezpečnostní výhodu.

Vytvoření nového uživatele:

useradd -m django

The -m vlajka vytvoří nový domovský adresář: / home / django.

Nastavení prostředí Pythonu

Nejdříve nejdříve: aktualizujte své seznamy balíků pomocí aktualizace apt-get

Ubuntu 18.04 se dodává s Pythonem 3.6, ale nedodává se s pipem, který budete potřebovat k instalaci svých závislostí.

apt-get nainstalovat python3-pip

Teď, když máme pipa, vytvořme virtuální prostředí. Virtuální prostředí pomáhají vyhnout se konfliktům s balíčky Pythonu používanými Linuxem.

pip3 install virtualenv
cd / home / django
virtualenv env

Nyní jste vytvořili virtuální Python 3.6 prostředí v / home / django / env složku, kterou lze aktivovat pomocí následujícího příkazu: Nyní, když máme pip, vytvořme virtuální prostředí. Virtuální prostředí pomáhají vyhnout se konfliktům s balíčky Pythonu používanými Linuxem.

source / home / django / env / bin / Activate

Nastavení projektu Django

V tomto kurzu vytvoříme dočasný projekt Django. Pokud nasazujete svůj vlastní kód, budete jej muset místo toho nahrát na server. Budeme pracovat v domovském adresáři / home / django.Nastavení projektu Django

Vytvořme projekt Django:

cd / home / django
zdroj env / bin / aktivovat
pip nainstalujte django
výukový program django-admin startproject

Ověřte, že věci fungují spuštěním:

cd návod
Správa pythonu.py runserver 0.0.0.0:80

Naše instance Ubuntu běží na 178.128.229.34, takže se připojíme k http: // 178.128.229.34.Ověřte, že věci fungují spuštěním:

Pravděpodobně uvidíte něco takového:

Abychom to napravili, upravíme to / home / django / tutorial / tutorial / nastavení.py. Nalézt ALLOWED_HOSTS = [] a nastavte jej na:

ALLOWED_HOSTS = [
„178.128.229.34 '# nahraďte to IP adresou vašeho serveru
nebo název domény, kterou používáte pro připojení
]

Vraťme se nyní na http: // 178.128.229.34:

Skvělý! Jsme online!

Nastavení databáze PostgreSQL

Ve výchozím nastavení používá Django databázi SQLite3. Bohužel SQLite3 neumožňuje souběžné zápisy. Pokud má váš web někdy pouze jednoho uživatele, který upravuje data, a zbytek návštěvníků právě čte stránky, pak by to mohlo být vhodné. Ale pokud máte více lidí, kteří upravují data současně, pravděpodobně budete chtít použít jiný backend.

Běžné možnosti jsou PostgreSQL a Mysql. Pro tento tutoriál půjdeme s PostgreSQL.

Začněte instalací PostgreSQL:

apt-get nainstalovat postgresql

Poté spusťte psql, databázový shell. Ve výchozím nastavení se k databázi může připojit pouze uživatel postgres, takže se nejprve budeme muset jako uživatel autentizovat:

su - postgres
psql

Dále potřebujeme databázi a uživatele pro přístup k této databázi:

vytvořit výukový program databáze;
vytvořit uživatele tutorial_user se zašifrovaným heslem 'tutorial_password';
udělit všechna oprávnění k databázovému tutoriálu tutorial_user;

Nyní zadejte exit nebo dvakrát stiskněte Ctrl-D: jednou ukončete psql a jednou se odhlaste ze shellu postgresusera.

Skvělý! Nyní máme nastavenu naši databázi a uživatele. Pojďme ověřit, že se můžeme přihlásit do naší databáze.

Pokusíme se otevřít databázový shell, tentokrát se přihlásíme k databázi, kterou jsme vytvořili s uživatelem, kterého jsme vytvořili:

psql -Uživatelský_uživatel -dtutorial -h127.0.0.1-Z

Na výzvu zadejte heslo, které jsme vytvořili: tutorial_password.

Pokud vidíte databázový shell, byli jste úspěšní. Pokud uvidíte nějaké chyby, budete se muset vrátit a zjistit, co se děje.

Připojení Djanga k databázi

Abychom Django připojili k databázi, musíme si nejprve nainstalovat adaptér Python PostgreSQL:

pip nainstalujte psycopg2-binary

Pak se pojďme otevřít / home / django / tutorial / tutorial / nastavení.pya nakonfigurujte připojení.

Najděte své aktuální připojení k databázi; pokud jste to nezměnili, mohlo by to vypadat nějak takto:

DATABÁZY =
'default':
'ENGINE': 'django.db.backendy.sqlite3 ',
„JMÉNO“: os.cesta.připojit (BASE_DIR, 'db.sqlite3 '),

Pro připojení k PostgreSQL jej nahradíme následujícím:

DATABÁZY =
'default':
'ENGINE': 'django.db.backendy.postgresql_psycopg2 ',
'NAME': 'tutorial',
'USER': 'tutorial_user',
'PASSWORD': 'tutorial_password',
'HOST': '127.0.0.1 ',
'PORT': '5432',

Otestujme připojení:

cd / home / django / výukový program
Správa pythonu.py runserver 0.0.0.0:80

Měli byste mít opět možnost navštívit své webové stránky (pro nás na adrese http: // 178.128.229.34 /, ale nahraďte jej svou IP nebo názvem hostitele).

Pokud bude vše v pořádku, můžeme pokračovat.

Nastavení webového serveru nginx

Když běžíš Správa pythonu.py runserver, používáte vývojový server Django. To je skvělé pro místní vývoj, ale stejně jako u SQLite3 se to opravdu nehodí pro produkci.

Běžné možnosti pro produkční webové servery jsou nginx a Apache. V tomto kurzu použijeme nginx.

Nginx nainstalujte pomocí následujícího:

apt-get install nginx

Nyní, pokud vše funguje dobře, by měl být nginx spuštěn na portu 80. Jděte do toho a podívejte se na svůj web; měl bys vidět:

Skvělé, takže nginx je funkční! Dále ji budeme muset nakonfigurovat pro komunikaci s Django. Otevřete konfigurační soubor nginx umístěný na / etc / nginx / sites-available / default. Nahraďme soubor následujícím:

upstream django
server 127.0.0.1: 8000;

server
poslouchat 80;
místo /
try_files $ uri @send_to_django;

umístění @send_to_django
proxy_set_header Host $ http_host;
proxy_redirect vypnuto;
proxy_pass http: // django;

Otestujte konfigurační soubor spuštěním nginx -t. Pokud je vše v pořádku, můžeme znovu načíst spuštěním nginx -s reload.

Nyní, pokud navštívíte svůj web, uvidíte následující:

Kdykoli to uvidíte, znamená to, že nginx nemohl předat požadavek upstream procesu. V tuto chvíli je to proto, že se pokouší předat požadavek na 127.0.0.1: 8000, ale na této adrese není žádný proces naslouchání.

Začněme vývojovým serverem Django a zkusíme to znovu:

cd / home / django / výukový program
Správa pythonu.py runserver 127.0.0.1: 8000

a znovu navštivte svůj web. Měla by se zobrazit vaše aplikace Django.

Mounting Django on Gunicorn

Nezapomeňte, že nechceme používat náš vývojový server Django ve výrobě. Místo toho ke spuštění Django použijeme server rozhraní Web Server Gateway Interface (WSGI). Nginx předá požadavek serveru WSGI, na kterém běží Django.

Běžné možnosti pro server WSGI jsou Gunicorn a uWSGI. Pro tento tutoriál použijeme Gunicorn.

Nainstalujeme Gunicorn:

pip nainstalujte gunicorn

Dále můžeme spustit gunicorn následovně:

cd / home / django / výukový program
gunicorn výukový program.wsgi

Nyní byste měli být schopni navštívit svůj web a zkontrolovat, zda aplikace běží správně.

Spuštění Gunicorn jako služby

Existuje několik problémů se spuštěním gunicorn, jako je tento:

  1. Pokud ukončíme relaci SSH, proces gunicorn se zastaví.
  2. Pokud se server restartuje, proces gunicorn se nespustí.
  3. Proces běží jako root. Pokud hackeři naleznou zneužití v kódu naší aplikace, budou moci spouštět příkazy jako root. Nechceme to; ale proto jsme vytvořili djangouser!

Abychom tyto problémy vyřešili, spustíme Gunicorn jako systémovou službu.

cd / home / django
mkdir bin
cd / home / django / bin
stiskněte start-server.sh

Na start-serveru.sh:

cd / home / django
zdroj env / bin / aktivovat
cd návod
gunicorn výukový program.wsgi

Nyní můžete skript otestovat:

cd / home / django / bin
bash start-server.sh
# navštivte svůj web, měl by být spuštěn

Nyní vytvoříme systémovou službu pro Gunicorn. Vytvořte / etc / systemd / system / gunicorn.následuje služba:

[Jednotka]
Popis = Gunicorn
After = síť.cílová
[Servis]
Typ = jednoduchý
Uživatel = django
ExecStart = / home / django / bin / start-server.sh
Restart = při selhání
[Nainstalujte]
WantedBy = více uživatelů.cílová

Nyní povolme službu a spusťte ji

systemctl povolit gunicorn
systemctl start gunicorn

V tuto chvíli byste měli vidět svůj web.

Gunicorn můžeme vypnout následovně:

systemctl stop gunicorn

A měli byste vidět 502 Bad Gateway.

Nakonec zkontrolujeme spouštěcí cyklus:

systemctl start gunicorn
restartujte nyní

Když se váš počítač vrátí online, měli byste vidět, že je váš web funkční.

Statické soubory

Pokud navštívíte administrátorský panel Django na svém webu na adrese / admin / (pro nás je to http: // 178.128.229.34 / admin /), všimnete si, že statické soubory se nenačítají správně.

Budeme muset vytvořit novou složku pro statické soubory:

cd / home / django
mkdir statický

Potom řekneme Djangu, že by to mělo dát statické soubory úpravou / home / django / tutorial / tutorial / settings.py a přidání:

STATIC_ROOT = '/ home / django / static /'

Nyní můžeme shromáždit statické soubory:

cd / home / django
zdroj env / bin / aktivovat
cd návod
Správa pythonu.py collectstatic

Nakonec musíme říct nginx, aby tyto statické soubory obsluhoval.

Pojďme otevřít / etc / nginx / sites-available / default a přidat následující přímo nad vaše umístění / blok:

umístění / statické /
root / home / django;
try_files $ uri = 404;

Celý soubor by nyní měl vypadat takto:

upstream django
server 127.0.0.1: 8000;

server
poslouchat 80;
umístění / statické /
root / home / django;
try_files $ uri = 404;

místo /
try_files $ uri @send_to_django;

umístění @send_to_django
proxy_set_header Host $ http_host;
proxy_redirect vypnuto;
proxy_pass http: // django;

Můžeme znovu načíst soubor pomocí nginx -s reload

A voila! Vaše statické soubory nyní budou plně fungovat.

Závěr

V tomto okamžiku vaše aplikace Django funguje správně. Pokud máte nějaké speciální požadavky, možná budete muset nastavit mezipaměť jako Redis nebo frontu zpráv jako Rabbit MQ. Můžete také chtít nastavit nepřetržité nasazení, protože postup nasazení může chvíli trvat.

Dalším důležitým krokem je podniknout příslušné kroky k zabezpečení vašeho zařízení Ubuntu. Jinak se může stát, že se váš server chová špatně!

Hodně štěstí!

Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...
Hry Užitečné nástroje pro hráče Linuxu
Užitečné nástroje pro hráče Linuxu
Pokud rádi hrajete hry na Linuxu, je pravděpodobné, že jste ke zlepšení herního zážitku použili aplikace a nástroje jako Wine, Lutris a OBS Studio. Kr...
Hry HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
Mnoho vývojářů a vydavatelů her přichází s HD remasterem starých her, aby prodloužili životnost franšízy, prosím fanoušky, kteří požadují kompatibilit...