Instal·lació i configuració de Django Web Framework amb entorns virtuals a CentOS/Debian - Part 1


Fa uns 20 anys, quan la World Wide Web encara estava en els seus inicis, tenir un lloc web personal o empresarial era gairebé un luxe rar. Amb el desenvolupament posterior de diverses tecnologies web i la introducció de contingut dinàmic proporcionat per la combinació de programes del costat del servidor i bases de dades, les empreses ja no podien estar satisfetes amb tenir un lloc web estàtic.

Així, les aplicacions web es van convertir en una realitat: programes en el sentit complet de la paraula que s'executen sobre un servidor web i accessibles mitjançant un navegador web.

Per fer el desenvolupament més fàcil i eficaç, es van dissenyar marcs web per ajudar els programadors en els seus esforços per crear aplicacions. En resum, un marc web s'ocupa de les funcionalitats bàsiques comunes en el procés de desenvolupament, com ara la gestió de sessions d'usuari, la interacció amb bases de dades i la bona pràctica de mantenir la lògica empresarial separada de la lògica de visualització, per citar alguns exemples.

En aquesta sèrie de 3 articles de Django, us presentarem Django, un marc web popular basat en Python. Per aquest motiu, es suggereix almenys una mica de familiaritat amb aquest llenguatge de programació, però si teniu poca o cap experiència amb ell, també us explicarem els conceptes bàsics.

Instal·lació de Django als servidors CentOS i Debian

Tot i que podeu instal·lar Django tant des dels repositoris Debian (v1.7.7: el suport estès s'interromprà el desembre de 2015) com de Fedora EPEL (v1.6.11: el suport estès es va suspendre l'abril de 2015), la versió disponible no és l'última LTS estable. Versió (Suport a llarg termini) (v1.8.13, a partir de maig de 2016).

En aquest tutorial us mostrarem com instal·lar Django v1.8.13, ja que el seu suport ampliat està garantit com a mínim fins a l'abril de 2018.

El mètode recomanat per instal·lar Django és a través de pip, una eina popular per gestionar paquets Python. A més, per tal de crear entorns Python aïllats i evitar conflictes entre projectes que poden requerir diferents versions de dependències de programari, es recomana molt l'ús d'entorns virtuals.

Les eines que s'utilitzen per crear i gestionar entorns virtuals de Python s'anomenen virtualenv.

Seguiu aquests passos per dur a terme la instal·lació:

1. Per a les distribucions basades en Fedora (excepte a Fedora mateix), activeu primer el repositori EPEL:

# yum update && yum install epel-release

2. Instal·leu pip i virtualenv:

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

3. Creeu un directori per emmagatzemar el vostre projecte inicial.

# mkdir ~/myfirstdjangoenv
# cd ~/myfirstdjangoenv

4. Creeu i activeu un entorn virtual:

# virtualenv myfirstdjangoenv

L'ordre anterior crea un munt de fitxers i subdirectoris a ~/myfirstdjangoenv i bàsicament instal·la una còpia local de Python i pip dins del directori de treball actual. A continuació, hem d'activar l'entorn virtual que acabem de crear:

# source myfirstdjangoenv/bin/activate

5. Observeu com canvia l'indicador d'ordres després de l'última ordre. Ara és el moment d'instal·lar Django:

Tingueu en compte que la captura de pantalla següent es va fer durant una versió anterior d'aquest tutorial, però la sortida esperada és la mateixa quan instal·leu Django 1.8.13):

# pip install Django==1.8.13

Podeu comprovar la versió de Django llançant un shell de Python des del vostre directori de treball actual:

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

(De nou, l'ordre anterior hauria de tornar 1.8.13 quan comproveu la versió actual de Django).

Per sortir de l'indicador de Python, escriviu:

>>> exit() 

i premeu Intro. A continuació, desactiveu l'entorn virtual:

# deactivate

Tingueu en compte que mentre l'entorn virtual roman desactivat, Django no està disponible:

Com crear un primer projecte a Django

Per crear un projecte dins de l'entorn virtual que hem creat anteriorment, cal que estigui activat:

# source myfirstdjangoenv/bin/activate

A continuació, el marc crearà tota l'estructura de directoris per emmagatzemar el vostre projecte. Per fer-ho, hauràs de córrer.

# django-admin startproject myfirstdjangoproject

L'ordre anterior crearà un directori anomenat myfirstdjangoproject dins del vostre directori de treball actual.

on trobareu un fitxer anomenat manage.py (una utilitat que us ajudarà a gestionar el vostre projecte més endavant) i un altre subdirectori (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject). Aquest darrer subdirectori servirà com a contenidor per als fitxers del projecte.

Tot i que la resta dels fitxers tindran sentit després d'haver revisat alguns Python per començar a escriure una aplicació web real, val la pena prendre nota dels fitxers clau que es trobaran dins del directori del contenidor del projecte:

  1. myfirstdjangoproject/__init__.py: aquest fitxer buit indica a Python que aquest directori s'ha de considerar un paquet de Python.
  2. myfirstdjangoproject/settings.py: configuracions específiques per a aquest projecte Django.
  3. myfirstdjangoproject/urls.py: un TOC (taula de continguts) del vostre lloc basat en Django.
  4. myfirstdjangoproject/wsgi.py: un punt d'entrada per als servidors web compatibles amb WSGI per servir el vostre projecte.

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

A més, Django té un servidor web incorporat lleuger (escrit en Python semblant a Python SimpleHTTP, què més?) que es pot utilitzar per provar les vostres aplicacions durant el procés de desenvolupament sense haver de fer front a la tasca de configurar un servidor web a aquesta etapa concreta.

Tanmateix, heu de saber que això no és adequat per a un entorn de producció, només per al desenvolupament. Per llançar el vostre projecte acabat de crear, canvieu el vostre directori de treball actual al directori de contenidors del vostre projecte (~/myfirstdjangoenv/myfirstdjangoproject) i executeu:

# python manage.py runserver 0.0.0.0:8000

Si trobeu el següent error:

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

Fes el que diu:

# python manage.py migrate

i després torneu a iniciar el servidor:

# python manage.py runserver 0.0.0.0:8000

Cobrirem el concepte de migració en els propers articles d'aquesta sèrie, de manera que de moment no tingueu en compte el missatge d'error.

En qualsevol cas, podeu canviar el port predeterminat on escoltarà el servidor web integrat. En utilitzar 0.0.0.0 com a interfície de xarxa per escoltar, permetem que altres ordinadors de la mateixa xarxa accedeixin a la interfície d'usuari del projecte (si utilitzeu 127.0.0.1, només podreu accedir a la interfície d'usuari des de localhost).

També podeu canviar el port per un altre que trieu, però també haureu d'assegurar-vos que el trànsit a través d'aquest port es permet a través del vostre tallafoc:

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

Per descomptat, no cal dir que haureu d'actualitzar el port permès si decidiu utilitzar-ne un de diferent mentre inicieu el servidor web lleuger.

Hauríeu de veure la següent sortida al vostre terminal:

# python manage.py runserver 0.0.0.0:8000

En aquest punt, podeu obrir el vostre navegador web preferit i navegar fins a l'adreça IP de la màquina on heu instal·lat Django seguida del número de port. En el meu cas, és una caixa de Debian Jessie amb IP 192.168.0.25 i escoltant al port 8000:

http://192.168.0.25:8000

Tot i que és una gran cosa que hem pogut completar la configuració inicial d'un projecte, encara queda molta feina per fer, tal com s'indica al missatge anterior.

Resum

En aquesta guia hem explicat com instal·lar i configurar un entorn virtual per a Django, un marc web versàtil de codi obert basat en Python.

Independentment de si sou un desenvolupador d'aplicacions o un administrador de sistemes, voldreu marcar aquest article i la resta d'aquesta sèrie perquè és probable que en algun moment o altre haureu de considerar la necessitat d'aquesta eina per a les vostres tasques diàries.

En els articles següents d'aquesta sèrie parlarem de com construir el que ja hem aconseguit per crear una aplicació web senzilla però funcional amb Django i Python.

Com sempre, no dubteu a enviar-nos una nota si teniu preguntes sobre aquest article o suggeriments per millorar. Esperem amb interès tenir notícies teves!