Instalación y configuración de Django Web Framework con entornos virtuales en CentOS/Debian - Parte 1


Hace unos 20 años, cuando la World Wide Web aún estaba en su infancia, tener un sitio web personal o comercial era casi un lujo poco común. Con el desarrollo posterior de varias tecnologías web y la introducción de contenido dinámico proporcionado por la combinación de programas y bases de datos del lado del servidor, las empresas ya no podían estar satisfechas con tener un sitio web estático.

Por lo tanto, las aplicaciones web se convirtieron en una realidad: programas en el sentido completo de la palabra que se ejecutan en la parte superior de un servidor web y son accesibles a través de un navegador web.

Para que el desarrollo sea más fácil y eficaz, se diseñaron marcos web para ayudar a los programadores en sus esfuerzos por crear aplicaciones. En resumen, un marco web se ocupa de las funcionalidades básicas comunes en el proceso de desarrollo, como la gestión de sesiones de usuario, la interacción con bases de datos y la buena práctica de mantener la lógica empresarial separada de la lógica de visualización, por nombrar algunos ejemplos.

En esta serie de Django de 3 artículos, le presentaremos Django, un popular framework web basado en Python. Por esa razón, se sugiere al menos un poco de familiaridad con este lenguaje de programación, pero si tiene poca o ninguna experiencia con él, también lo guiaremos a través de los conceptos básicos.

Instalación de Django en servidores CentOS y Debian

Aunque puede instalar Django desde los repositorios Debian (v1.7.7: el soporte extendido se descontinuará en diciembre de 2015) y Fedora EPEL (v1.6.11: el soporte extendido se descontinuó en abril de 2015), la versión disponible no es la última versión estable de LTS. (Soporte a largo plazo) (v1.8.13, a partir de mayo de 2016).

En este tutorial te mostraremos cómo instalar Django v1.8.13 ya que su soporte extendido está garantizado hasta al menos abril de 2018.

El método recomendado para instalar Django es a través de pip, una herramienta popular para administrar paquetes de Python. Además, para crear entornos Python aislados y evitar conflictos entre proyectos que pueden requerir diferentes versiones de dependencias de software, se recomienda encarecidamente el uso de entornos virtuales.

Las herramientas que se utilizan para crear y administrar entornos virtuales de Python se denominan virtualenv.

Siga estos pasos para realizar la instalación:

1. Para distribuciones basadas en Fedora (excepto en el propio Fedora), habilite primero el repositorio EPEL:

# yum update && yum install epel-release

2. Instale pip y virtualenv:

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

3. Cree un directorio para almacenar su proyecto inicial.

# mkdir ~/myfirstdjangoenv
# cd ~/myfirstdjangoenv

4. Cree y active un entorno virtual:

# virtualenv myfirstdjangoenv

El comando anterior crea un montón de archivos y subdirectorios en ~/myfirstdjangoenv y básicamente instala una copia local de Python y pip dentro del directorio de trabajo actual. A continuación, necesitamos activar el entorno virtual que acabamos de crear:

# source myfirstdjangoenv/bin/activate

5. Observe cómo cambia el símbolo del sistema después del último comando. Ahora es el momento de instalar Django:

Tenga en cuenta que la siguiente captura de pantalla se tomó durante una versión anterior de este tutorial, pero el resultado esperado es el mismo al instalar Django 1.8.13):

# pip install Django==1.8.13

Puede verificar la versión de Django iniciando un shell de Python desde su directorio de trabajo actual:

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

(Nuevamente, el comando anterior debería devolver 1.8.13 al verificar la versión actual de Django).

Para salir del indicador de Python, escriba:

>>> exit() 

y presione Entrar. A continuación, apague el entorno virtual:

# deactivate

Tenga en cuenta que mientras el entorno virtual permanece desactivado, Django no está disponible:

Cómo crear un primer proyecto en Django

Para crear un proyecto dentro del entorno virtual que creamos anteriormente, debe activarse:

# source myfirstdjangoenv/bin/activate

A continuación, el marco creará la estructura de directorios completa para almacenar su proyecto. Para hacer esto, necesitará ejecutar.

# django-admin startproject myfirstdjangoproject

El comando anterior creará un directorio llamado myfirstdjangoproject dentro de su directorio de trabajo actual.

donde encontrará un archivo llamado manage.py (una utilidad que lo ayudará a administrar su proyecto más adelante) y otro subdirectorio (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject). Este último subdirectorio servirá como contenedor para los archivos del proyecto.

Si bien el resto de los archivos tendrán sentido después de que hayamos revisado algunos Python para comenzar a escribir una aplicación web real, vale la pena tomar nota de los archivos clave que se encontrarán dentro de un directorio contenedor del proyecto:

  1. myfirstdjangoproject/__ init__.py: este archivo vacío le dice a Python que este directorio debe considerarse un paquete de Python.
  2. myfirstdjangoproject/settings.py: configuración específica para este proyecto de Django.
  3. myfirstdjangoproject/urls.py: una tabla de contenido (TOC) de su sitio con tecnología Django.
  4. myfirstdjangoproject/wsgi.py: un punto de entrada para servidores web compatibles con WSGI para servir su proyecto.

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

Además, Django tiene un servidor web incorporado liviano (escrito en Python similar a Python SimpleHTTP, ¿qué más?) Que se puede usar para probar sus aplicaciones durante el proceso de desarrollo sin tener que lidiar con la tarea de configurar un servidor web en esta etapa en particular.

Sin embargo, debe saber que esto no es adecuado para un entorno de producción, solo para el desarrollo. Para iniciar su proyecto recién creado, cambie su directorio de trabajo actual al directorio contenedor para su proyecto (~/myfirstdjangoenv/myfirstdjangoproject) y ejecute:

# python manage.py runserver 0.0.0.0:8000

Si se encuentra con el siguiente error:

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

Haz lo que dice:

# python manage.py migrate

y luego inicie el servidor nuevamente:

# python manage.py runserver 0.0.0.0:8000

Cubriremos el concepto de migraciones en los próximos artículos de esta serie, por lo que puede ignorar el mensaje de error por el momento.

En cualquier caso, puede cambiar el puerto predeterminado donde escuchará el servidor web integrado. Al usar 0.0.0.0 como interfaz de red para escuchar, permitimos que otras computadoras en la misma red accedan a la interfaz de usuario del proyecto (si usa 127.0.0.1 en su lugar, solo podrá acceder a la interfaz de usuario desde localhost).

También puede cambiar el puerto a otro de su elección, pero también deberá asegurarse de que el tráfico a través de dicho puerto esté permitido a través de su firewall:

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

Por supuesto, no hace falta decir que deberá actualizar el puerto permitido si elige usar uno diferente al iniciar el servidor web ligero.

Debería ver la siguiente salida en su terminal:

# python manage.py runserver 0.0.0.0:8000

En este punto, puede abrir su navegador web favorito y navegar a la dirección IP de la máquina donde instaló Django seguida del número de puerto. En mi caso, es una caja Debian Jessie con IP 192.168.0.25 y escuchando en el puerto 8000:

http://192.168.0.25:8000

Si bien es genial haber podido completar la configuración inicial de un proyecto, todavía queda mucho trabajo por hacer, como se indica en el mensaje anterior.

Resumen

En esta guía hemos explicado cómo instalar y configurar un entorno virtual para Django, un marco web versátil de código abierto basado en Python.

Independientemente de si es un desarrollador de aplicaciones o un administrador de sistemas, querrá marcar este artículo y el resto de esta serie porque es probable que en algún momento u otro deba considerar la necesidad de dicha herramienta para sus tareas diarias.

En los siguientes artículos de esta serie, discutiremos cómo basarnos en lo que ya hemos logrado para crear una aplicación web simple pero funcional usando Django y Python.

Como siempre, no dude en enviarnos una nota si tiene preguntas sobre este artículo o sugerencias para mejorar. ¡Esperamos con interés escuchar de usted!