Django

Django alkalmazás létrehozása az Ubuntu Server-en

Django alkalmazás létrehozása az Ubuntu Server-en
A Django egy közös platform webhelyek, webalkalmazások és webes API-k fejlesztésére. Számos előnye van annak, ha a Django keretrendszert projektjéhez használja eszközként, és ha nem biztos benne, hogy megfelelő-e, akkor csak a Django-t használó sok nagynevű márkára kell figyelnie.

A Django első telepítése termelési környezetbe ijesztő feladat lehet. Gyakran a fejlesztők elindítanak egy Linux-példányt a felhőben a termelési környezetükhöz.

Ebben az oktatóanyagban megmutatjuk, hogyan lehet elindítani a Django-t a termelésben egy friss Ubuntu-példány használatával.

Feltételezzük, hogy az összes szerkesztés a szerveren történik, és hogy a parancsokat rootként futtatja.

Ehhez az oktatóanyaghoz az Ubuntu 18-at használjuk.04.2 LTS

Felhasználó létrehozása a projekthez

Létrehozunk egy új felhasználót, a django alkalmazást. Ez enyhe biztonsági előnyt jelent.

Az új felhasználó létrehozása:

useradd -m django

A -m zászló létrehoz egy új otthoni könyvtárat: / home / django.

A Python környezet beállítása

Először is: frissítse a csomaglistákat a következővel: apt-get frissítés

Ubuntu 18.04 hajó Python 3-mal.6, de nem szállít pip-el, amelyre szükséged lesz a függőségek telepítéséhez.

apt-get install python3-pip

Most, hogy megvan a pip, hozzunk létre egy virtuális környezetet. A virtuális környezetek segítenek elkerülni a konfliktusokat a Linux által használt Python csomagokkal.

pip3 telepítse a virtualenv-t
cd / home / django
virtualenv env

Most létrehozott egy virtuális Python 3-at.6 környezet a / home / django / env mappa, amelyet a következő paranccsal lehet aktiválni: Most, hogy megvan a pip, hozzunk létre egy virtuális környezetet. A virtuális környezetek segítenek elkerülni a konfliktusokat a Linux által használt Python csomagokkal.

forrás / home / django / env / bin / activ

A Django projekt felállítása

Ehhez az oktatóanyaghoz létrehozunk egy ideiglenes Django projektet. Ha saját kódot telepít, akkor azt inkább a szerverre kell feltöltenie. A saját könyvtárban fogunk működni, / home / django.A Django projekt felállítása

Hozzuk létre a Django projektet:

cd / home / django
forrás env / bin / activ
pip install django
django-admin startproject oktatóanyag

Futtatással ellenőrizze, hogy működnek-e a dolgok:

cd bemutató
python kezelése.py runerver 0.0.0.0:80

Ubuntu példányunk 178-on fut.128.229.34, így csatlakozunk a http: // 178-hoz.128.229.34.Futtatással ellenőrizze, hogy működnek-e a dolgok:

Valószínűleg valami ilyesmit fog látni:

Ennek kijavításához szerkesztjük / home / django / tutorial / tutorial / settings.py. megtalálja ALLOWED_HOSTS = [] és állítsa be:

ALLOWED_HOSTS = [
„178.128.229.34 '# cserélje ki a szerver IP-címére
vagy a csatlakozáshoz használt domainnév
]

Most térjünk vissza a http: // 178 oldalra.128.229.34:

Nagy! Online vagyunk!

A PostgreSQL, az adatbázis beállítása

Alapértelmezés szerint a Django SQLite3 adatbázist használ. Sajnos az SQLite3 nem engedélyezi az egyidejű írást. Ha webhelyén csak egy felhasználó szerkeszti az adatokat, és a többi látogató csak oldalakat olvas, akkor ez megfelelő lehet. De ha egyszerre több ember is szerkeszti az adatokat, akkor valószínűleg más háttérprogramot szeretne használni.

Gyakori választás a PostgreSQL és a Mysql. A PostgreSQL-lel megyünk ehhez az oktatóanyaghoz.

Kezdje a PostgreSQL telepítésével:

apt-get install postgresql

Ezután indítsa el a psql nevű adatbázishéjat. Alapértelmezés szerint csak a postgres felhasználó tud csatlakozni az adatbázishoz, így először hitelesítenünk kell ezt a felhasználót:

su - postgres
psql

Ezután szükségünk van egy adatbázisra és egy felhasználóra az adatbázis eléréséhez:

adatbázis-oktatóanyag készítése;
hozzon létre felhasználói tutorial_user titkosított jelszóval 'tutorial_password';
adjon meg minden jogosultságot az adatbázis bemutatójában a tutorial_user részére;

Írja be az exit parancsot, vagy nyomja meg kétszer a Ctrl-D billentyűt: egyszer kilép a psql-ből, egyszer pedig kijelentkezik a postgresuser parancsértelmezőjéből.

Nagy! Most beállítottuk az adatbázisunkat és a felhasználóinkat. Ellenőrizzük, hogy bejelentkezhetünk-e az adatbázisunkba.

Megpróbálunk megnyitni egy adatbázishéjat, ezúttal bejelentkezve az általunk létrehozott felhasználóval létrehozott adatbázisba:

psql -Ututorial_user -dtutorial -h127.0.0.1 -W

A parancssorba írja be az általunk létrehozott jelszót: tutorial_password.

Ha lát egy adatbázis-héjat, akkor sikeres volt. Ha hibát lát, vissza kell térnie, és meg kell találnia, mi a baj.

Django összekapcsolása az adatbázissal

Ahhoz, hogy a Django csatlakozzon az adatbázishoz, először telepítenünk kell a Python PostgreSQL adaptert:

pip telepítse a psycopg2-bináris fájlt

Akkor nyissunk / home / django / tutorial / tutorial / settings.pyés konfigurálja a kapcsolatot.

Keresse meg az aktuális adatbázis-kapcsolatot; ha nem módosította, akkor valami ilyesmi lehet:

ADATBÁZISOK =
'alapértelmezett':
„MOTOR”: „django.db.backendek.sqlite3 ',
'NAME': os.pálya.csatlakozás (BASE_DIR, 'db.sqlite3 '),

A PostgreSQL-hez való csatlakozáshoz a következőket cseréljük ki:

ADATBÁZISOK =
'alapértelmezett':
„MOTOR”: „django.db.backendek.postgresql_psycopg2 ',
'NAME': 'tutorial',
'USER': 'tutorial_user',
'PASSWORD': 'tutorial_password',
'HOST': '127.0.0.1 ',
„PORT”: „5432”,

Teszteljük a kapcsolatot:

cd / home / django / tutorial
python kezelése.py runerver 0.0.0.0:80

Ismét meg kell látogatnia a webhelyét (számunkra a http: // 178 címen.128.229.34 /, de cserélje ki IP-jére vagy hosztnevére).

Ha minden rendben van, folytathatjuk.

Az nginx, a webszerver beállítása

Amikor futsz python kezelése.py runerver, a Django fejlesztői kiszolgálóját használja. Ez nagyszerű a helyi fejlesztésekhez, de az SQLite3-hoz hasonlóan ez sem igazán alkalmas a gyártásra.

A termelési webszerverek gyakori választási lehetőségei az nginx és az Apache. Ehhez az oktatóanyaghoz az nginx-et fogjuk használni.

Telepítse az nginx-et a következők segítségével:

apt-get install nginx

Most, ha minden jól működött, az nginx-nek a 80-as porton kell futnia. Menj előre, és nézd meg a webhelyedet; látnod kéne:

Nagyszerű, így a nginx működik! Ezután be kell állítanunk, hogy kommunikáljon Djangóval. Nyissa meg az / etc / nginx / sites-available / default címen található nginx konfigurációs fájlt. Cseréljük ki a fájlt a következővel:

upstream django
szerver 127.0.0.1: 8000;

szerver
hallgat 80;
hely /
try_files $ uri @send_to_django;

hely @send_to_django
proxy_set_header Host $ http_host;
proxy_redirect off;
proxy_pass http: // django;

Tesztelje a konfigurációs fájlt az nginx -t futtatásával. Ha minden rendben van, akkor az nginx -s reload futtatásával újratölthetjük.

Most, ha meglátogatja webhelyét, a következőket fogja látni:

Amikor ezt látja, ez azt jelenti, hogy az nginx nem tudta továbbítani a kérést az upstream folyamatnak. Jelenleg azért, mert megpróbálja továbbítani a kérést a 127-nek.0.0.1: 8000, de ezen a címen nincs folyamathallgatás.

Indítsuk el a Django fejlesztőkiszolgálót, és próbálkozzunk újra:

cd / home / django / tutorial
python kezelése.py runerver 127.0.0.1: 8000

és ismét látogasson el a webhelyére. Látnia kell a Django alkalmazását.

Django felhelyezése a Gunicornra

Ne feledje, hogy nem a Django fejlesztői kiszolgálónkat akarjuk használni a gyártásban. Ehelyett egy Web Server Gateway Interface (WSGI) szervert fogunk használni a Django futtatásához. Az Nginx továbbítja a kérést a WSGI szervernek, amely a Djangót futtatja.

A WSGI-kiszolgáló gyakori választási lehetőségei a Gunicorn és az uWSGI. Ehhez a bemutatóhoz a Gunicorn-t fogjuk használni.

Telepítsük a Gunicorn-t:

pip telepítsen fegyvert

Ezután a következőképpen kezdhetjük a fegyvert:

cd / home / django / tutorial
fegyveres szar oktatóanyag.wsgi

Most már képesnek kell lennie arra, hogy ellátogasson a webhelyére, és láthassa az alkalmazás megfelelő működését.

A Gunicorn működtetése szolgáltatásként

Az ilyen fegyverfuttatással kapcsolatban van néhány probléma:

  1. Ha lezárjuk az SSH-munkamenetet, a fegyverkorong-folyamat leáll.
  2. Ha a szerver újraindul, a fegyverkorong-folyamat nem indul el.
  3. A folyamat rootként fut. Ha a hackerek kihasználást találnak alkalmazásunk kódjában, akkor rootként futtathatják a parancsokat. Nem ezt akarjuk; de ezért hoztuk létre a djangousert!

E problémák megoldása érdekében a Gunicorn-t rendszer-szolgáltatásként fogjuk futtatni.

cd / home / django
mkdir bin
cd / home / django / bin
érintse meg a start-szervert.SH

A start-serverben.SH:

cd / home / django
forrás env / bin / activ
cd bemutató
fegyveres szar oktatóanyag.wsgi

Most tesztelheti a szkriptet:

cd / home / django / bin
bash start-server.SH
# látogasson el a webhelyére, annak futnia kell

Most létrehozzuk a systemd szolgáltatást a Gunicorn számára. Hozza létre az / etc / systemd / system / gunicorn fájlt.serviceas következik:

[Mértékegység]
Leírás = Gunicorn
Után = hálózat.cél
[Szolgáltatás]
Típus = egyszerű
Felhasználó = django
ExecStart = / home / django / bin / start-server.SH
Újraindítás = meghibásodás
[Telepítés]
WantedBy = többfelhasználós.cél

Engedélyezzük a szolgáltatást, és indítsuk el

systemctl engedélyezi a fegyvert
systemctl indul fegyvertorn

Jelenleg látnia kell a webhelyét.

A fegyvertartót a következőképpen kapcsolhatjuk ki:

systemctl stop fegyveres

És látnia kell egy 502-es Bad Gateway-t.

Végül ellenőrizzük az indítási ciklust:

systemctl indul fegyvertorn
indítsa újra most

Amikor a gép újra online lesz, látnia kell, hogy a webhelye fel van készítve.

Statikus fájlok

Ha meglátogatja a webhelyén található Django adminisztrációs panelt az / admin / címen (számunkra ez a http: // 178.128.229.34 / admin /), észre fogja venni, hogy a statikus fájlok nem töltődnek be megfelelően.

Létre kell hoznunk egy új mappát a statikus fájlok számára:

cd / home / django
mkdir statikus

Aztán elmondjuk a Django-nak, hogy hová kell a statikus fájlokat elhelyeznie a / home / django / tutorial / tutorial / settings szerkesztéssel.py, és hozzáteszi:

STATIC_ROOT = '/ home / django / static /'

Most összegyűjthetjük a statikus fájlokat:

cd / home / django
forrás env / bin / activ
cd bemutató
python kezelése.py kollektatikus

Végül meg kell mondanunk az nginx-nek, hogy szolgálja ezeket a statikus fájlokat.

Nyissuk meg az / etc / nginx / sites-available / default fájlt, és egészítsük ki közvetlenül a tartózkodási helyed / blokk fölött:

hely / statikus /
gyökér / home / django;
try_files $ uri = 404;

Az egész fájlnak így kell kinéznie:

upstream django
szerver 127.0.0.1: 8000;

szerver
hallgat 80;
hely / statikus /
gyökér / home / django;
try_files $ uri = 404;

hely /
try_files $ uri @send_to_django;

hely @send_to_django
proxy_set_header Host $ http_host;
proxy_redirect off;
proxy_pass http: // django;

Újra betölthetjük a fájlt az nginx -s újratöltéssel

És voila! A statikus fájlok most már teljes mértékben működni fognak.

Következtetés

Ezen a ponton a Django alkalmazás megfelelően működik. Ha van néhány speciális követelménye, akkor szükség lehet egy gyorsítótár (például Redis) vagy egy üzenetsor (például Rabbit MQ) beállítására. Érdemes beállítani a folyamatos telepítést is, mivel a telepítési eljárás eltarthat egy ideig.

Egy másik fontos lépés a megfelelő lépések megtétele az Ubuntu-gép biztonsága érdekében. Ellenkező esetben előfordulhat, hogy a szervere nem megfelelően viselkedik!

Sok szerencsét!

A legjobb Linux-disztribútorok játékhoz 2021-ben
A Linux operációs rendszer hosszú utat tett meg eredeti, egyszerű, szerver alapú kinézetétől. Ez az operációs rendszer rendkívül javult az elmúlt évek...
Hogyan lehet rögzíteni és streamelni a játékmenetét Linuxon
Korábban a játékokat csak hobbinak tekintették, de az idő múlásával a játékipar hatalmas növekedést ért el a technológia és a játékosok száma szempont...
A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...