Instaliranje i konfiguriranje Django Web Frameworka s virtualnim okruženjima u CentOS/Debianu - 1. dio


“Ovaj članak je revidiran i ažuriran najnovijom verzijom Djanga – maj 2016.”

Prije nekih 20 godina, kada je World Wide Web još bio u povojima, imati ličnu ili poslovnu web stranicu bio je gotovo rijedak luksuz. Uz kasniji razvoj nekoliko web tehnologija i uvođenje dinamičkog sadržaja koji se obezbjeđuje kombinacijom serverskih programa i baza podataka, kompanije više nisu mogle biti zadovoljne statičkim web stranicama.

Tako su web aplikacije postale stvarnost – programi u punom smislu riječi koji rade na vrhu web servera i dostupni su preko web pretraživača.

Kako bi razvoj bio lakši i učinkovitiji, web okviri su dizajnirani da pomognu programerima u njihovim naporima da kreiraju aplikacije. Ukratko, web okvir se brine o zajedničkim osnovnim funkcionalnostima u procesu razvoja kao što su upravljanje korisničkim sesijama, interakcija s bazama podataka i dobra praksa držanja poslovne logike odvojeno od logike prikaza, da navedemo nekoliko primjera.

U ovoj Django seriji od 3 članka, upoznat ćemo vas sa Djangom, popularnim web okvirom baziranim na Pythonu. Iz tog razloga se predlaže barem malo upoznavanja s ovim programskim jezikom, ali ako imate malo ili nimalo iskustva s njim, također ćemo vas provesti kroz osnove.

Instaliranje Djanga na CentOS i Debian servere

Iako možete instalirati Django i sa Debiana (v1.7.7: proširena podrška će biti ukinuta prosinca 2015) i Fedora EPEL ( >v1.6.11: proširena podrška je ukinuta u repozitorijumima aprila 2015., dostupna verzija nije najnovija stabilna LTS (Dugoročna podrška) izdanje (v1.8.13), od maja 2016.).

U ovom vodiču ćemo vam pokazati kako da instalirate Django v1.8.13 jer je njegova produžena podrška zagarantovana najmanje do aprila 2018.

Preporučena metoda za instaliranje Djanga je putem pip, popularnog alata za upravljanje Python paketima. Takođe, da bi se kreirala izolovana Python okruženja i izbegli sukobi između projekata koji mogu zahtevati različite verzije softverskih zavisnosti, upotreba virtuelnih okruženja se veoma preporučuje.

Alati koji se koriste za kreiranje i upravljanje virtuelnim Python okruženjima se nazivaju virtualenv.

Slijedite ove korake da izvršite instalaciju:

1. Za Fedora-bazirane distribucije (osim u samoj Fedori), prvo omogućite EPEL spremište:

yum update && yum install epel-release

2. Instalirajte pip i virtualenv:

Distribucije zasnovane na Fedori:

yum install python-pip python-virtualenv
OR 
dnf install python-pip python-virtualenv
Debian i derivati:
aptitude update && aptitude install python-pip virtualenv

3. Kreirajte direktorij za pohranu vašeg početnog projekta.

mkdir ~/myfirstdjangoenv
cd ~/myfirstdjangoenv

4. Kreirajte i aktivirajte virtuelno okruženje:

virtualenv myfirstdjangoenv

Gornja naredba kreira gomilu datoteka i poddirektorija u ~/myfirstdjangoenv i u osnovi instalira lokalnu kopiju Python i pip unutar trenutnog radnog direktorija . Zatim moramo aktivirati virtualno okruženje koje smo upravo kreirali:

source myfirstdjangoenv/bin/activate

5. Obratite pažnju kako se komandna linija mijenja nakon posljednje komande. Sada je vrijeme da instalirate Django:

Imajte na umu da je snimak ekrana ispod napravljen tokom prethodne verzije ovog uputstva, ali očekivani rezultat je isti kada se instalira Django 1.8.13 ):


pip install Django==1.8.13

Verziju Djanga možete provjeriti pokretanjem Python shell iz vašeg trenutnog radnog direktorija:

python
>>> import django
>>> print(django.get_version())

(Opet, gornja komanda bi trebala vratiti 1.8.13 prilikom provjere trenutne verzije Djanga).

Da izađete iz Python prompta, otkucajte:

>>> exit() 

i pritisnite Enter. Zatim isključite virtuelno okruženje:

deactivate

Imajte na umu da dok virtuelno okruženje ostaje deaktivirano, Django nije dostupan:

Kako napraviti prvi projekat u Djangu

Za kreiranje projekta unutar virtualnog okruženja koje smo ranije kreirali, potrebno ga je aktivirati:

source myfirstdjangoenv/bin/activate

Zatim će okvir kreirati cijelu strukturu direktorija za pohranu vašeg projekta. Da biste to učinili, morat ćete trčati.

django-admin startproject myfirstdjangoproject

Gornja komanda će kreirati direktorij pod nazivom myfirstdjangoproject unutar vašeg trenutnog radnog direktorija.

gdje ćete pronaći datoteku pod nazivom manage.py (uslužni program koji će vam kasnije pomoći da upravljate projektom) i drugi poddirektorij (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject). Ovaj posljednji poddirektorij će služiti kao kontejner za datoteke projekta.

Dok će ostatak datoteka imati pravog smisla nakon što smo pregledali neki Python kako bismo počeli pisati pravu web aplikaciju, vrijedno je i dobro uzeti u obzir ključne datoteke koje će se naći unutar direktorija kontejnera projekta:

  1. myfirstdjangoproject/__init__.py: Ova prazna datoteka govori Pythonu da se ovaj direktorij treba smatrati Python paketom.
  2. myfirstdjangoproject/settings.py: Specifične postavke za ovaj Django projekat.
  3. myfirstdjangoproject/urls.py: TOC (Table Of Contents) vaše Django stranice.
  4. myfirstdjangoproject/wsgi.py: Ulazna tačka za WSGI kompatibilne web servere koji služe vašem projektu.
ls 
ls -l myfirstdjangoproject
ls -l myfirstdjangoproject/myfirstdjangoproject

Osim toga, Django ima lagani ugrađeni web server (napisan u Pythonu sličan Python SimpleHTTP, šta još?) koji se može koristiti za testiranje vaših aplikacija tokom razvoja tokom razvoja. proces bez potrebe da se bavite zadatkom postavljanja web servera u ovoj fazi.

Međutim, morate znati da ovo nije prikladno za proizvodno okruženje – samo za razvoj. Da pokrenete svoj novokreirani projekat, promijenite svoj trenutni radni direktorij u direktorij kontejnera za svoj projekat (~/myfirstdjangoenv/myfirstdjangoproject) i pokrenite:

python manage.py runserver 0.0.0.0:8000

Ako naiđete na sljedeću grešku:

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

Uradi šta piše:

python manage.py migrate

a zatim ponovo pokrenite server:

python manage.py runserver 0.0.0.0:8000

Pojam migracija ćemo pokriti u sljedećim člancima ove serije, tako da za sada možete zanemariti poruku o grešci.

U svakom slučaju, možete promijeniti zadani port na kojem će ugrađeni web server slušati. Korišćenjem 0.0.0.0 kao mrežnog interfejsa za slušanje, dozvoljavamo drugim računarima u istoj mreži da pristupe korisničkom interfejsu projekta (ako umesto toga koristite 127.0.0.1, moći ćete pristupiti korisničkom sučelju samo s lokalnog hosta).

Također možete promijeniti port na drugi po svom izboru, ali ćete također morati osigurati da je promet kroz takav port dozvoljen kroz vaš firewall:

firewall-cmd --add-port=8000/tcp
firewall-cmd --permanent --add-port=8000/tcp

Naravno, podrazumeva se da ćete morati da ažurirate dozvoljeni port ako odlučite da koristite drugi dok pokrećete lagani veb server.

Trebali biste vidjeti sljedeći izlaz u vašem terminalu:

python manage.py runserver 0.0.0.0:8000

U ovom trenutku, možete otvoriti svoj omiljeni web pretraživač i navigirati do IP adrese mašine na kojoj ste instalirali Django, nakon čega slijedi broj porta. U mom slučaju, to je Debian Jessie box sa IP 192.168.0.25 i slušanjem na portu 8000:

http://192.168.0.25:8000

Iako je sjajna stvar što smo uspjeli dovršiti početno postavljanje projekta, ostalo je još mnogo posla, kao što je navedeno u gornjoj poruci.

Sažetak

U ovom vodiču smo objasnili kako da instalirate i konfigurišete virtuelno okruženje za Django, svestrani web okvir otvorenog koda baziran na Python-u.

Bez obzira na to jeste li programer aplikacija ili administrator sistema, htjet ćete označiti ovaj članak i ostatak ove serije jer su šanse da ćete u jednom ili drugom trenutku morati razmotriti potrebu za takvim alatom za svoje svakodnevne zadatke.

U sljedećim člancima ove serije raspravljat ćemo o tome kako nadograđivati ono što smo već postigli da kreiramo jednostavnu, ali funkcionalnu web aplikaciju koristeći Django i Python.

Kao i uvijek, ne ustručavajte se poslati nam poruku ako imate pitanja o ovom članku ili prijedloge za poboljšanje. Radujemo se Vašem odgovoru!