Python 3 y Django en Ubuntu 18.04 con Vagrant

django server working

Cuando se trata de iniciar un desarrollo de software lo más complicado es tener el entorno de desarrollo listo y en esto se puede perder mucho tiempo. Una solución es utilizar Vagrant. Con esta herramienta puedes tener un entorno listo en cuestión de minutos y aquí te digo como implementar un entorno de desarrollo para Python 3 y Django 2.x en Ubuntu Server 18.04 usando Vagrant.

Python 3 y Django en Ubuntu 18.04 con Vagrant

Daremos por sentado que tienes Virtual Box y Vagrant instalados y funcionando en tu equipo y suponemos que utilizas un cliente Linux que puede ser cualquier distribución como Ubuntu, Linux Mint, Manjaro o Debian.

Lo primero que tenemos que hacer es asignar un directorio para tu proyecto, por ejemplo, yo lo ubiqué dentro de la carpeta personal en la ruta ~/Development/django_basic_app/ y en esta carpeta se necesitan crear dos archivos llamado Vagrant y provision.sh

El archivo Vagrant contiene la configuración de la máquina virtual que servirá como entorno de desarrollo y permitirá operar la aplicación simulando el entorno de producción en el que se supone deberá correr la aplicación. Crea un archivo con este nombre y agrega el siguiente código:

Vagrant.configure("2") do |config|
 config.vm.box = "ubuntu/bionic64"

config.vm.network "forwarded_port", guest: 80, host: 8080
 config.vm.network "forwarded_port", guest: 3306, host: 33306

config.vm.network "private_network", ip: "10.4.4.51"

config.vm.synced_folder "./django" , "/var/www/django", nfs: true, nfs_version: 3, nfs_udp: false

config.vm.provider "virtualbox" do |vb|
 # Display the VirtualBox GUI when booting the machine
 vb.gui = false
 
 # Customize the amount of memory on the VM:
 vb.customize ["modifyvm", :id, "--memory", "1024"]
 vb.customize ["modifyvm", :id, "--cpuexecutioncap", "95"]
 vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
 vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] 
 end

config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"

# install some base packages
 config.vm.provision :shell, :path => "provision.sh"

end

El siguiente archivo es el provision.sh que contiene los comandos para instalar y configurar el software que tendrá el entorno de desarrollo para agilizar su despliegue para uno o más desarrolladores. Crea un archivo con este nombre y agrega el código siguiente:

#!/usr/bin/env bash
export DEBIAN_FRONTEND=noninteractive

# update package list
sudo apt update -q
sudo apt upgrade -y

sudo apt install debconf-utils

sudo apt install python3-pip -y
sudo apt install python3-dev libmysqlclient-dev libpq-dev -y

sudo -H pip3 install virtualenv

mkdir /home/vagrant/.virtualenvs

sudo -H pip3 install virtualenvwrapper
sudo -H pip3 install pipenv

# update profile
sudo cat >> /home/vagrant/.bash_profile <<'EOF'

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.6

# Virtual Env
export WORKON_HOME=~/.virtualenvs
. /usr/local/bin/virtualenvwrapper.sh

# Aliases
alias rundjango="python manage.py runserver 0.0.0.0:8000"

EOF

sudo chown vagrant:vagrant /home/vagrant/.*

Esto archivos también los puedes descargar desde este repositorio en GitHub.

Observa que para arrancar el servidor de Django se tiene que ejecutar con el comando python manage.py runserver 0.0.0.0:8000 pero a mi me parece engorroso y he decidido crear un alias para que este comando se ejcute cuando tecleé «rundjango» por eso he incluido este alias en el archivo provision.sh

# Aliases
alias rundjango="python manage.py runserver 0.0.0.0:8000"

Arrancar el entorno de Desarrollo con Ubuntu Server 18.04 Bionic

Una vez que tengas los archivos configurados puedes arrancar la máquina virtual y acceder a ella con los siguientes comandos:

vagrant up
vagrant ssh

Una vez que ingreses a la máquina virtual necesitas instalar y configurar la base de datos.

sudo apt install mariadb-server mariadb-client
sudo mysql_secure_installation

Al asegurar la instalación debes proveer las respuestas como se muestra en el ejemplo:

Enter current password for root (enter for none): Solo presiona Enter
Set root password? [Y/n]: Y
New password: pass1234
Re-enter new password: pass1234
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

Una vez asegurada la instalación solo ingresa a la terminal de Mysql para crear la base de datos:

sudo mysql

Para crear la base de datos y el usuario con privilegios para usar esta base de datos.

CREATE DATABASE django_db;
CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'pass1234';
GRANT ALL PRIVILEGES ON django_db.* TO 'django_user'@'localhost';
FLUSH PRIVILEGES;

Crear el Entorno Virtual

El siguiente paso es crear un entorno virtual para Python 3 y poder instalar los módulos necesarios

cd /var/www/django/
mkvirtualenv env

Edita el archivo /home/vagrant/.virtualenvs/env/bin/postactivate y agrega al final esta línea de texto:

cd /var/www/django/

Luego sal del entorno virtual con el siguiente comando:

deactivate

Instalar los Módulos de Python

Para crear el proyecto de Django que vas a desarrollar necesitas  tener instalados al menos los módulos de python django y mysqlclient.

workon env
pip3 install django 
pip3 install mysqlclient

Una vez que están instalados los módulos puedes usar el Framework Django y la base de datos mysql con Python mediante este framework. El siguiente paso es instalar el proyecto.

django-admin startproject django_project

Dentro del proyecto debes instalar tu aplicación core

cd django_project/ 
python manage.py startapp core

Prueba que tu el servidor Django arranca, para ejecutarlo usa el comando

rundjango

Recuerda que este es un alias que se ha creado mediante el script provision.sh. Si ves una salida de texto como la siguiente, significa que todo está funcionando correctamente.

Performing system checks... 
 
System check identified no issues (0 silenced). 
 
You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.                                               
Run 'python manage.py migrate' to apply them. 

April 13, 2018 - 17:50:40 
Django version 2.0.4, using settings 'django_project.settings' 
Starting development server at http://0.0.0.0:8000/ 
Quit the server with CONTROL-C.

Presiona Ctrl+C para detener el servidor de Django y aplica la migration de la base de datos para que se creen las tablas y los datos iniciales.

python manage.py migrate

Aprovecha para crear el superuser del sistema, solo crear un nombre de usuario como «admin» o el que tu quieras, indica un email el blanco y una contraseña.

python manage.py createsuperuser

Listo tu Entorno de Desarrollo para tu nuevo proyecto con Django está listo para crear tu nueva aplicación. Solo tienes que ejecutar el servidor

rundjango

y abrir la URL http://10.4.4.51:8000/ y debes ver  una pantalla como la siguiente imagen:

django server working
This entry was posted in Software Libre. Bookmark the permalink.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*