Django

Stvaranje aplikacije Django na Ubuntu poslužitelju

Stvaranje aplikacije Django na Ubuntu poslužitelju
Django je uobičajena platforma za razvoj web stranica, web aplikacija i web API-ja. Mnogo je prednosti korištenja Django okvira za vaš projekt kao vašeg alata, a ako niste sigurni je li to ispravno uklapanje, trebate samo potražiti brojne velike robne marke koje koriste Django u njihovoj hrpi.

Postavljanje Djanga u proizvodno okruženje po prvi put može biti zastrašujući zadatak. Često će programeri lansirati instancu Linuxa u oblak za svoje proizvodno okruženje.

U ovom uputstvu pokazat ćemo vam kako pokrenuti Django u proizvodnji, koristeći novu instancu Ubuntua.

Pretpostavit ćemo da se sve vaše uređivanje vrši na poslužitelju i da naredbe izvršavate kao root.

Za ovaj vodič koristimo Ubuntu 18.04.2 LTS

Izrada korisnika za projekt

Stvorit ćemo novog korisnika, django, za pokretanje naše aplikacije. To pruža malu sigurnosnu korist.

Da biste stvorili novog korisnika:

useradd -m django

The -m zastava stvara novi kućni direktorij: / home / django.

Postavljanje Python okruženja

Prvo najprije: ažurirajte svoje popise paketa pomoću apt-get ažuriranje

Ubuntu 18.04 isporučuje se s Pythonom 3.6, ali se ne isporučuje s pipom, koji ćete trebati za instalaciju ovisnosti.

apt-get instalirati python3-pip

Sad kad imamo pip, stvorimo virtualno okruženje. Virtualna okruženja pomažu u izbjegavanju sukoba s Python paketima koje koristi Linux.

pip3 instalirati virtualenv
cd / home / django
virtualenv env

Sada ste stvorili virtualni Python 3.6 okoliš u / home / django / env mapa koja se može aktivirati sljedećom naredbom: Sad kad imamo pip, stvorimo virtualno okruženje. Virtualna okruženja pomažu u izbjegavanju sukoba s Python paketima koje koristi Linux.

source / home / django / env / bin / activate

Postavljanje projekta Django

Za ovaj tutorial stvorit ćemo privremeni Django projekt. Ako postavljate vlastiti kôd, morat ćete ga umjesto toga prenijeti na poslužitelj. Radit ćemo u matičnom direktoriju, / home / django.Postavljanje projekta Django

Stvorimo projekt Django:

cd / home / django
izvor env / bin / activate
pip instalirati django
Vodič za django-admin startproject

Provjerite rade li stvari pokretanjem:

CD tutorial
python upravljati.py runserver 0.0.0.0:80

Naša instanca Ubuntua radi na 178.128.229.34, pa ćemo se povezati na http: // 178.128.229.34.Provjerite rade li stvari pokretanjem:

Vjerojatno ćete vidjeti nešto poput ovoga:

Da bismo to popravili, uredit ćemo / home / django / tutorial / tutorial / settings.py. Pronaći ALLOWED_HOSTS = [] i postavite ga na:

ALLOWED_HOSTS = [
'178.128.229.34 '# zamijenite ovo IP adresom vašeg poslužitelja
ili naziv domene koji koristite za povezivanje
]

Sad se vratimo na http: // 178.128.229.34:

Sjajno! Na mreži smo!

Postavljanje baze podataka PostgreSQL

Django prema zadanim postavkama koristi SQLite3 bazu podataka. Nažalost, SQLite3 ne dopušta istodobna pisanja. Ako vaše web mjesto ikad ima samo jednog korisnika koji uređuje podatke, a ostatak posjetitelja samo čita stranice, onda bi to moglo biti prikladno. Ali ako imate više ljudi koji uređuju podatke istodobno, vjerojatno želite koristiti drugu pozadinu.

Uobičajeni izbor su PostgreSQL i Mysql. Ići ćemo uz PostgreSQL za ovaj vodič.

Započnite instaliranjem PostgreSQL:

apt-get instalirati postgresql

Zatim pokrenite psql, ljusku baze podataka. Prema zadanim postavkama samo se postgres korisnik može povezati s bazom podataka, pa ćemo prvo morati provjeriti autentičnost kao taj korisnik:

su - postgres
psql

Dalje, za pristup toj bazi podataka trebaju nam baza podataka i korisnik:

stvoriti tutorial baze podataka;
stvoriti korisnika tutorial_user s šifriranom lozinkom 'tutorial_password';
dodijeliti sve privilegije na tutorialu baze podataka tutorial_user;

Sada upišite exit ili pritisnite Ctrl-D dva puta: jednom za izlazak iz psql-a, a jednom za odjavu iz ljuske postgresusera.

Sjajno! Sada smo postavili bazu podataka i korisnika. Provjerimo možemo li se prijaviti u našu bazu podataka.

Pokušat ćemo otvoriti ljusku baze podataka, ovoga puta prijavljujući se u bazu podataka koju smo stvorili s korisnikom kojeg smo stvorili:

psql -Ututorial_user -dtutorial -h127.0.0.1 -W

Na upit unesite lozinku koju smo stvorili: tutorial_password.

Ako vidite ljusku baze podataka, uspjeli ste. Ako primijetite pogreške, morat ćete se vratiti i shvatiti što nije u redu.

Povezivanje Djanga s bazom podataka

Da bismo Django povezali s bazom podataka, prvo moramo instalirati Python PostgreSQL adapter:

pip instalirati psycopg2-binarni

Onda, otvorimo / home / django / tutorial / tutorial / settings.pyi konfigurirajte vezu.

Pronađite vašu trenutnu vezu s bazom podataka; ako ga niste izmijenili, mogao bi izgledati otprilike ovako:

BAZE BAZA =
'zadano':
'MOTOR': 'django.db.backends.sqlite3 ',
'IME': os.staza.pridruži se (BASE_DIR, 'db.sqlite3 '),

Da bismo se povezali s PostgreSQL-om, zamijenit ćemo ga sljedećim:

BAZE BAZA =
'zadano':
'MOTOR': 'django.db.backends.postgresql_psycopg2 ',
'NAME': 'vodič',
'USER': 'tutorial_user',
'PASSWORD': 'tutorial_password',
'DOMAĆIN': '127.0.0.1 ',
'LUKA': '5432',

Isprobajmo vezu:

cd / home / django / tutorial
python upravljati.py runserver 0.0.0.0:80

Ponovno biste trebali moći posjetiti vaše web mjesto (za nas na http: // 178.128.229.34 /, ali zamijenite to svojim IP-om ili imenom hosta).

Ako je sve u redu, možemo nastaviti.

Postavljanje nginxa, web poslužitelja

Kad trčite python upravljati.py runserver, koristite Djangov razvojni poslužitelj. Ovo je izvrsno za lokalni razvoj, ali kao i kod SQLite3, zapravo nije pogodno za proizvodnju.

Uobičajeni izbor za proizvodne web poslužitelje su nginx i Apache. Za ovaj ćemo vodič koristiti nginx.

Instalirajte nginx koristeći sljedeće:

apt-get instalirati nginx

Ako je sve dobro funkcioniralo, nginx bi trebao biti pokrenut na portu 80. Samo naprijed provjerite svoju web stranicu; trebali biste vidjeti:

Izvrsno, dakle, nginx je pokrenut i pokrenut! Dalje ćemo ga morati konfigurirati za komunikaciju s Djangom. Otvorite konfiguracijsku datoteku nginx koja se nalazi na / etc / nginx / sites-available / default. Zamijenimo datoteku sljedećim:

uzvodno django
poslužitelj 127.0.0.1: 8000;

poslužitelj
slušati 80;
lokacija /
try_files $ uri @send_to_django;

lokacija @send_to_django
proxy_set_header Host $ http_host;
isključeno preusmjeravanje_proxyja;
proxy_pass http: // django;

Testirajte konfiguracijsku datoteku pokretanjem nginx -t. Ako je sve u redu, možemo se ponovno pokrenuti izvođenjem nginx -s reload.

Ako posjetite svoju stranicu, vidjet ćete sljedeće:

Kad god to vidite, znači da nginx nije uspio proslijediti zahtjev uzlaznom procesu. Trenutno je to zato što pokušava proslijediti zahtjev na 127.0.0.1: 8000, ali na toj adresi nema postupka preslušavanja.

Pokrenimo razvojni poslužitelj Django i pokušajte ponovo:

cd / home / django / tutorial
python upravljati.py runserver 127.0.0.1: 8000

i ponovno posjetite vaše web mjesto. Trebali biste vidjeti svoju aplikaciju Django.

Montiranje Djanga na Gunicorn

Zapamtite, ne želimo koristiti naš razvojni poslužitelj Django u proizvodnji. Umjesto toga, za pokretanje Djanga koristit ćemo poslužitelj sučelja web poslužitelja (WSGI). Nginx će proslijediti zahtjev WSGI poslužitelju koji ima Django.

Uobičajeni odabir za WSGI poslužitelj su Gunicorn i uWSGI. Za ovaj tutorial koristit ćemo Gunicorn.

Instalirajmo Gunicorn:

pip instalirati gunicorn

Dalje, gunicorn možemo započeti na sljedeći način:

cd / home / django / tutorial
tutorijal za gunicorn.wsgi

Sada biste trebali moći posjetiti svoje web mjesto i vidjeti kako vaša aplikacija pravilno radi.

Pokretanje Gunicorna kao usluge

Postoji nekoliko problema s ovakvim trčanjem oružja:

  1. Ako zatvorimo sesiju SSH, postupak s oružjem će se zaustaviti.
  2. Ako se poslužitelj ponovno pokrene, postupak gunicorn neće započeti.
  3. Proces se izvodi kao root. Ako hakeri pronađu exploit u kodu naše aplikacije, moći će pokretati naredbe kao root. Mi ovo ne želimo; ali zato smo stvorili djangouser!

Da bismo riješili ove probleme, pokrenut ćemo Gunicorn kao sistemsku uslugu.

cd / home / django
mkdir bin
cd / home / django / bin
dodirnite start-server.sh

U start-poslužitelju.sh:

cd / home / django
izvor env / bin / activate
CD tutorial
tutorijal za gunicorn.wsgi

Sada možete testirati skriptu:

cd / home / django / bin
bash start-poslužitelj.sh
# posjetite svoju web stranicu, trebala bi biti aktivna

Sada kreiramo systemd uslugu za Gunicorn. Izradite / etc / systemd / system / gunicorn.usluga slijedi:

[Jedinica]
Opis = Gunicorn
Nakon = mreža.cilj
[Servis]
Tip = jednostavno
Korisnik = django
ExecStart = / home / django / bin / start-server.sh
Restart = nakon neuspjeha
[Instalirati]
WantedBy = višekorisnički.cilj

Ajmo sada omogućiti uslugu i pokrenuti je

systemctl omogućiti gunicorn
systemctl start gunicorn

Trenutačno biste trebali moći vidjeti svoju web stranicu.

Guicorn možemo isključiti na sljedeći način:

systemctl zaustaviti gunicorn

I trebali biste vidjeti 502 Bad Gateway.

Na kraju, provjerimo ciklus pokretanja:

systemctl start gunicorn
ponovno pokreni sada

Kad se vaš uređaj vrati na mrežu, trebali biste vidjeti da je vaše web mjesto pokrenuto.

Statičke datoteke

Ako posjetite administratorsku ploču Django na svom web mjestu na / admin / (za nas je to http: // 178.128.229.34 / admin /), primijetit ćete da se statičke datoteke ne učitavaju pravilno.

Trebat ćemo stvoriti novu mapu za statičke datoteke:

cd / home / django
mkdir statičan

Zatim kažemo Djangu da bi tu trebao staviti statičke datoteke uređivanjem / home / django / tutorial / tutorial / settings.py i dodajući:

STATIC_ROOT = '/ home / django / static /'

Sada možemo prikupiti statičke datoteke:

cd / home / django
izvor env / bin / activate
CD tutorial
python upravljati.py collestatic

Na kraju, moramo reći nginxu da poslužuje te statičke datoteke.

Otvorimo / etc / nginx / sites-available / default i dodajte sljedeće izravno iznad vašeg mjesta / bloka:

location / static /
root / home / django;
try_files $ uri = 404;

Čitava datoteka sada bi trebala izgledati ovako:

uzvodno django
poslužitelj 127.0.0.1: 8000;

poslužitelj
slušati 80;
location / static /
root / home / django;
try_files $ uri = 404;

lokacija /
try_files $ uri @send_to_django;

lokacija @send_to_django
proxy_set_header Host $ http_host;
isključeno preusmjeravanje_proxyja;
proxy_pass http: // django;

Datoteku možemo ponovo učitati pomoću ponovnog učitavanja nginx -s

I voila! Vaše statične datoteke sada će raditi u potpunosti.

Zaključak

U ovom trenutku vaša aplikacija Django ispravno radi. Ako imate neke posebne zahtjeve, možda ćete trebati postaviti predmemoriju poput Redisa ili red poruka poput Rabbit MQ. Možda ćete htjeti postaviti kontinuiranu implementaciju jer postupak postavljanja može potrajati.

Sljedeći važan korak je poduzeti odgovarajuće korake kako biste osigurali svoj Ubuntu stroj. Inače, vaš će se poslužitelj možda loše ponašati!

Sretno!

Kako instalirati League Of Legends na Ubuntu 14.04
Ako ste ljubitelj League of Legends, ovo je prilika za vas da testirate League of Legends. Imajte na umu da je LOL podržan na PlayOnLinux ako ste kori...
Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...
Instalirajte najnoviji Dolphin Emulator za Gamecube i Wii na Linux
Dolphin Emulator omogućuje vam igranje odabranih Gamecube i Wii igara na Linux osobnim računalima (PC). Dolphin Emulator je slobodno dostupan i emula...