Hacer un deploy con Django y Apache en un VPS



Bienvenidos al blog, en este hilo vamos a explicar como lanzar un servidor Django desde 0 en tu VPS con apache y virtual hosts.
Django es un framework web diseñado para realizar aplicaciones de cualquier complejidad en unos tiempos muy razonables.
Esta escrito en Python y tiene una comunidad muy amplia.

Ventajas de utilizar Django

· Es muy rápido: Se puede construir una aplicación muy buena en poco tiempo, ya que te viene por defecto un panel administrador donde puedes gestionar todos los datos.
· Viene bien cargado: Tiene muchas cosas ya implementadas.
· Escalable: Podemos pasar de una aplicación pequeña a grande muy fácilmente.

VAMOS A EMPEZAR

Lo primero que vamos ha hacer es instalar las dependencias, en nuestro caso sera python, python-pip y con el comando pip instalaremos virtualenv.

Instalamos python:

- sudo apt-get install python3.6

Instalamos pip.

- sudo apt-get install python-pip

Para ver la versión que utilizamos se hace con el -V

- python -V

- pip -V

Realizada las siguientes instalaciones vamos a instalar con pip el virtualenv.

- pip install virtualenv

Nos vamos a la carpeta que deseemos iniciar el virtualenv en mi caso /var/www

- cd /var/www

- virtualenv /var/www/<VUSTRO_NOMBRE> (/var/www/dani_django)

Ahora que ya tenemos el entorno creado vamos a instalar DJango.

- pip install django

Y seguidamente crearemos el proyecto

- django-admin.py startproject <VUSTRO_NOMBRE> (daniproj)

Entramos en el proyecto que acabamos de crear

- cd /var/www/daniproj

Y hacemos un migrate de las tablas que vienen por defecto en Django. Seguidamente iniciamos el servidor

- python manage.py migrate
- python manage.py runserver

Ahora después de realizar todos estos pasos vamos crear un virtual hosts para ver si funciona correctamente. Hacemos una copia del default y lo editamos

- sudo cp /etc/apache2/sites-available/000-defualt.conf /etc/apache2/sites-available/<VUSTRO_NOMBRE> (/etc/apache2/sites-available/holup.tk.conf)

- sudo nano /etc/apache2/sites-available/<VUSTRO_NOMBRE> (/etc/apache2/sites-available/holup.tk.conf)

El fichero siguiendo los nombres que he seleccionado se quedara tal que así:

Listen 8000
<VirtualHost *:8000>
<Directory /var/www/daniproj/project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIDaemonProcess myproject python-home=/var/www/dani_django python-path=/var/www/daniproj
WSGIProcessGroup myproject
WSGIScriptAlias / /var/www/daniproj/project/wsgi.py
</VirtualHost>


Ahora instalamos los siguientes paquetes

- sudo apt-get install libapache2-mod-wsgi

Activamos el modulo descargado y el nuevo site

- sudo a2enmod wsgi

- sudo a2ensite daniortiz.ml.conf

Reiniciamos apache

- sudo systemctl restart apache2

Para poder acceder desde el nombre de dominio vamos a habilitar en el settings.py de nuestro proyecto el allowed hosts a todos y el debug a false

- sudo nano /var/www/daniproj/project/settings.py

DEBUG = False
ALLOWED_HOSTS = ['*']

Si vamos a nuestro nombre de dominio con :8000/admin ya tendría que estar funcionando django

Podéis ver mas información de los virtual hosts, y mas sobre contratar un nombre de dominio.

Información conseguida de este blog avato92blog.

Esta es la URL
Django VPS

No funciona ya que da error en el wsgi.py, al hacer un import de django no encuentra la búsqueda. Podemos ver este error en los logs de Apache2. Después de buscar el error, hacer el proceso de varias maneras siempre se ha quedado en el mismo punto. Comparándolo con otros compañeros que les funcionaba no tenia nada diferente.