Installation og konfiguration af Django Web Framework med virtuelle miljøer i CentOS/Debian - Del 1


For omkring 20 år siden, da World Wide Web stadig var i sin barndom, var det næsten en sjælden luksus at have en personlig eller forretningsmæssig webside. Med den efterfølgende udvikling af flere webteknologier og introduktionen af dynamisk indhold leveret af kombinationen af serversider og programmer og databaser kunne virksomheder ikke længere være tilfredse med at have et statisk websted.

Webapplikationer blev således en realitet - programmer i den fulde forstand af ordet, der kører oven på en webserver og er tilgængelige via en webbrowser.

For at gøre udviklingen lettere og mere effektiv blev webrammer designet til at hjælpe programmører i deres bestræbelser på at oprette applikationer. Kort sagt tager en webramme sig af fælles kernefunktionaliteter i udviklingsprocessen, såsom håndtering af styring af brugersessioner, interaktion med databaser og god praksis med at holde forretningslogik adskilt fra displaylogik for at nævne nogle få eksempler.

I denne 3-artikels Django-serie introducerer vi dig til Django, en populær webramme baseret på Python. Af den grund foreslås i det mindste en smule fortrolighed med dette programmeringssprog, men hvis du har ringe eller ingen erfaring med det, vil vi også lede dig gennem det grundlæggende.

Installation af Django i CentOS- og Debian-servere

Selvom du kan installere Django fra både Debian (v1.7.7: udvidet support vil blive afbrudt i december 2015) og Fedora EPEL (v1.6.11: udvidet support blev afbrudt i april 2015) repositories, er den tilgængelige version ikke den seneste stabile LTS (Long Term Support) frigivelse (v1.8.13, fra maj 2016).

I denne vejledning viser vi dig, hvordan du installerer Django v1.8.13, da den udvidede support er garanteret indtil mindst april 2018.

Den anbefalede metode til installation af Django er via pip, et populært værktøj til styring af Python-pakker. For at skabe isolerede Python-miljøer og undgå konflikter mellem projekter, der muligvis kræver forskellige versioner af softwareafhængigheder, anbefales det stærkt at bruge virtuelle miljøer.

De værktøjer, der bruges til at oprette og administrere virtuelle Python-miljøer kaldes virtualenv.

Følg disse trin for at udføre installationen:

1. For Fedora-baserede distributioner (undtagen i Fedora selv) skal du først aktivere EPEL-arkivet:

# yum update && yum install epel-release

2. Installer pip og virtualenv:

# yum install python-pip python-virtualenv
OR 
# dnf install python-pip python-virtualenv
# aptitude update && aptitude install python-pip virtualenv

3. Opret en mappe til at gemme dit oprindelige projekt.

# mkdir ~/myfirstdjangoenv
# cd ~/myfirstdjangoenv

4. Opret og aktiver et virtuelt miljø:

# virtualenv myfirstdjangoenv

Ovenstående kommando opretter en masse filer og underkataloger i ~/myfirstdjangoenv og installerer grundlæggende en lokal kopi af Python og pip i den aktuelle arbejdsmappe. Dernæst skal vi aktivere det virtuelle miljø, vi lige har oprettet:

# source myfirstdjangoenv/bin/activate

5. Læg mærke til, hvordan kommandoprompten ændres efter den sidste kommando. Det er nu tid til at installere Django:

Bemærk, at nedenstående skærmbillede blev taget under en tidligere version af denne tutorial, men den forventede output er den samme, når du installerer Django 1.8.13):

# pip install Django==1.8.13

Du kan kontrollere Django-versionen ved at starte en Python-skal fra din nuværende arbejdsmappe:

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

(Igen skal ovenstående kommando returnere 1.8.13, når den nuværende Django-version kontrolleres).

For at afslutte Python-prompten skal du skrive:

>>> exit() 

og tryk på Enter. Sluk derefter det virtuelle miljø:

# deactivate

Bemærk, at mens det virtuelle miljø forbliver deaktiveret, er Django ikke tilgængeligt:

Sådan oprettes et første projekt i Django

For at oprette et projekt inden for det virtuelle miljø, vi oprettede tidligere, skal det aktiveres:

# source myfirstdjangoenv/bin/activate

Derefter opretter rammen hele katalogstrukturen til at gemme dit projekt. For at gøre dette skal du køre.

# django-admin startproject myfirstdjangoproject

Ovenstående kommando opretter et bibliotek med navnet myfirstdjangoproject inde i din nuværende arbejdsmappe.

hvor du finder en fil med navnet manage.py (et hjælpeprogram, der hjælper dig med at administrere dit projekt senere) og en anden underkatalog (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject). Denne sidste underkatalog fungerer som container til projektfilerne.

Mens resten af filerne giver mening, når vi har gennemgået nogle Python for at begynde at skrive en rigtig webapplikation, er det værd og godt at tage de nøglefiler til efterretning, der findes i en projektcontainermappe:

  1. myfirstdjangoproject/__ init__.py: Denne tomme fil fortæller Python, at denne mappe skal betragtes som en Python-pakke.
  2. myfirstdjangoproject/settings.py: Specifikke indstillinger for dette Django-projekt.
  3. myfirstdjangoproject/urls.py: en indholdsfortegnelse (indholdsfortegnelse) på dit Django-drevne websted.
  4. myfirstdjangoproject/wsgi.py: Et indgangspunkt for WSGI-kompatible webservere til at betjene dit projekt.

# ls 
# ls -l myfirstdjangoproject
# ls -l myfirstdjangoproject/myfirstdjangoproject

Derudover har Django en letvægtsindbygget webserver (skrevet i Python svarende til Python SimpleHTTP, hvad mere?), Der kan bruges til at teste dine applikationer under udviklingsprocessen uden at skulle håndtere opgaven med at indstille en webserver på netop denne fase.

Du skal dog vide, at dette ikke er egnet til et produktionsmiljø - bare til udvikling. For at starte dit nyoprettede projekt skal du ændre din nuværende arbejdsmappe til containermappen til dit projekt (~/myfirstdjangoenv/myfirstdjangoproject) og køre:

# python manage.py runserver 0.0.0.0:8000

Hvis du støder på følgende fejl:

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

Gør hvad der står:

# python manage.py migrate

og start derefter serveren igen:

# python manage.py runserver 0.0.0.0:8000

Vi vil dække begrebet migrationer i de næste artikler i denne serie, så du kan ignorere fejlmeddelelsen indtil videre.

Under alle omstændigheder kan du ændre standardporten, hvor den indbyggede webserver skal lytte. Ved at bruge 0.0.0.0 som netværksgrænsefladen til at lytte på giver vi andre computere i det samme netværk adgang til projektets brugergrænseflade (hvis du i stedet bruger 127.0.0.1, vil du kun kunne få adgang til brugergrænsefladen fra localhost).

Du kan også ændre porten til en anden efter eget valg, men du skal også sørge for, at trafik gennem en sådan port er tilladt gennem din firewall:

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

Det siger sig selvfølgelig, at du bliver nødt til at opdatere den tilladte port, hvis du vælger at bruge en anden, mens du starter den lette webserver.

Du skal se følgende output i din terminal:

# python manage.py runserver 0.0.0.0:8000

På dette tidspunkt kan du åbne din yndlingswebbrowser og navigere til IP-adressen på den maskine, hvor du installerede Django efterfulgt af portnummeret. I mit tilfælde er det en Debian Jessie-boks med IP 192.168.0.25 og lytter på port 8000:

http://192.168.0.25:8000

Selvom det er en god ting, at vi var i stand til at gennemføre den oprindelige opsætning af et projekt, er der stadig meget arbejde tilbage at gøre, som angivet i meddelelsen ovenfor.

Resumé

I denne vejledning har vi forklaret, hvordan man installerer og konfigurerer et virtuelt miljø til Django, en alsidig open source-webramme baseret på Python.

Uanset om du er en applikationsudvikler eller en systemadministrator, vil du bogmærke denne artikel og resten af denne serie, fordi chancerne er, at du på et eller andet tidspunkt bliver nødt til at overveje behovet for et sådant værktøj til dine daglige opgaver.

I de følgende artikler i denne serie vil vi diskutere, hvordan vi kan bygge videre på, hvad vi allerede har opnået for at skabe en enkel, men alligevel funktionel, webapplikation ved hjælp af Django og Python.

Tøv ikke med at sende os en note, hvis du har spørgsmål om denne artikel eller forslag til forbedring. Vi ser frem til at høre fra dig!