Implementar una aplicación basada en Django

con Amazon Lightsail

Amazon Lightsail es la forma más fácil de comenzar a utilizar AWS. Ofrece servidores virtuales, almacenamiento, bases de datos y redes, además de un plan mensual rentable.

En este tutorial, implementará una aplicación basada en Django de ejemplo en Lightsail. Comenzará con la creación de la instancia e implementación de la aplicación. Luego, se asegurará de que la aplicación se ejecute correctamente mediante el servidor web incorporado de Django. Finalmente, configurará Apache para alojar la aplicación.

Comience a utilizar Lightsail de forma gratuita.

Requisitos previos

Este es un tutorial de nivel intermedio, para el cual debe contar con:

  • La comprensión básica de la línea de comandos de Linux (cp, cat, etc.)
  • La capacidad de usar un editor de texto de Linux (vi, nano, etc.)
  • La comprensión básica de Django y Python
  • Una cuenta gratuita de Amazon Web Services
Acerca de este tutorial
Duración 30 minutos                                     
Costo Se pueden aplicar costos
Caso de uso Informática
Productos Amazon Lightsail
Público Desarrollador
Nivel Intermedio 
Última actualización 23 de marzo de 2020

¿Ya tiene una cuenta? Iniciar sesión

1. Crear una instancia de Lightsail

a. Inicie sesión en su cuenta de AWS y vaya a la página de inicio de Lightsail.


b. Haga clic en Crear instancia.

django1

c. Elija la región de AWS adecuada.

add django
django2

d. Elija una zona de disponibilidad.

django3
django4

e. En Seleccionar un modelo, elija Django.

 

django5

f. Puede dejar las otras configuraciones en sus valores predeterminados. Desplácese hasta la parte inferior de la pantalla y haga clic en Crear instancia.

 

2. Implementar un proyecto de Django

En esta sección, implementará una sencilla aplicación de “Hello, World”. Utilizará la línea de comandos de Django para crear un nuevo proyecto y una nueva aplicación antes de agregar el código de la aplicación real en la siguiente sección.

Si ya tiene una aplicación de Django escrita, no dude en usarla para este tutorial. Sin embargo, tome nota de la estructura de directorios utilizada en la aplicación de “Hello, World”, ya que será importante cuando configure su propia aplicación.

El proyecto de Django estará en el siguiente directorio

/opt/bitnami/apps/django/django_projects/tutorial

El proyecto se almacenará en el siguiente directorio

/opt/bitnami/apps/django/django_projects/tutorial/tutorial

La aplicación se creará en el siguiente directorio

/opt/bitnami/apps/django/django_projects/tutorial/tutorial/hello_world


a. En la página de inicio de Lightsail, haga clic en el icono del cliente SSH basado en el navegador para la instancia de Django. Esto iniciará una sesión SSH en la instancia. Todos los siguientes comandos deben ejecutarse en esa sesión.

django6

b. Ingrese los siguientes comandos para cambiar al directorio django_projects y cree un nuevo proyecto de tutorial.
cd /opt/bitnami/apps/django/django_projects && \
django-admin.py startproject tutorial

c. Ingrese el siguiente comando para cambiar al directorio del proyecto del tutorial y cree una nueva aplicación de hello_world.

cd tutorial && python3 manage.py startapp hello_world

3. Agregar el código de aplicación

Ahora que tiene el andamiaje para su aplicación, es hora de agregar código. La aplicación simplemente mostrará “Hello, World” cuando se cargue la página web.

Aún debe ejecutar estos comandos en la ventana del cliente SSH basado en el navegador de Lightsail.


a. Ingrese el siguiente comando para abrir el archivo views.py mediante el editor de texto Vim:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/hello_world/views.py

b. Presione I para editar el archivo y reemplace el código existente con lo siguiente:

from django.http import HttpResponse

def index(request):
     return HttpResponse("Hello, world")

c. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


d. Ingrese el siguiente comando para crear un archivo urls.py para su aplicación en el mismo directorio que el archivo views.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/hello_world/urls.py

e. Presione I para editar el archivo y agregue el siguiente código:

from django.urls import path
from . import views

urlpatterns = [
     path('', views.index, name='index'),
]

f. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


g. Ingrese el siguiente comando para abrir el archivo urls.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/urls.py

h. Presione I para editar el archivo y reemplace el código existente con lo siguiente:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('hello_world.urls')),
    path('admin/', admin.site.urls),
]

i. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


4. Probar la aplicación

A continuación, utilizará el servidor web integrado de Django para verificar que todo funcione como se esperaba. De forma predeterminada, Apache utiliza el puerto 80 en la instancia de Lightsail, por lo que ejecutará el servidor web de Django en el puerto 8000. Para poder acceder al sitio web, deberá abrir el puerto 8000 en el firewall de Lightsail.


a. Regrese a la página de inicio de Lightsail y haga clic en el nombre de su instancia de Django.


b. En el menú horizontal, haga clic en Redes.

django7

c. En Firewall, haga clic en Agregar otro.

django8

d. En Rango de puertos, ingrese 8000 y haga clic en Guardar.

django9

e. Regrese a la página de inicio de Lightsail y anote la dirección IP de la instancia.

django10

f. Regrese a la sesión de terminal e ingrese el siguiente comando para abrir el archivo settings.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/settings.py

g. Presione I y cambie la línea ALLOWED_HOSTS para incluir la dirección IP de su instancia de Lightsail como se muestra en el siguiente ejemplo.

Nota: Cuando edite el archivo settings.py, asegúrese de reemplazar 192.0.2.143 con la dirección IP pública de su instancia.

ALLOWED_HOSTS = ['192.0.2.143']

h. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


i. Ingrese el siguiente comando para iniciar el servidor web de Django en el puerto 8000:

cd /opt/bitnami/apps/django/django_projects/tutorial/ && python3 manage.py runserver 0.0.0.0:8000

j. Apunte su navegador web al puerto 8000 de la dirección IP de las instancias (p. ej., http:// 192.0.2.143:8000).

Debería ver “Hello, world”, que confirma que su aplicación se está ejecutando.

5. Alojar la aplicación con Apache

No se recomienda ejecutar aplicaciones de producción mediante el servidor integrado de Django. Así que, en esta sección final, configurará Apache para que sirva a su aplicación.

Lo hará mediante la configuración de la aplicación para usar la interfaz de gateway de servicios web (WSGI) y luego creará un host virtual de Apache (vHost).

Aún debe ejecutar estos comandos en la ventana del cliente SSH basado en el navegador de Lightsail.


a. Escriba el siguiente comando para editar el archivo wsgi.py:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py

b. Escriba :1,$d y presione Enter para seleccionar todo y elimine el contenido existente del archivo wsgi.py..


c. Presione I para editar y agregue el siguiente código al archivo wsgi.py:

import os
import sys
sys.path.append('/opt/bitnami/apps/django/django_projects/tutorial')
os.environ.setdefault("PYTHON_EGG_CACHE", "/opt/bitnami/apps/django/django_projects/tutorial/egg_cache")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tutorial.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

d. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


e. Ingrese el siguiente comando para crear un directorio conf para su aplicación

mkdir /opt/bitnami/apps/django/django_projects/tutorial/conf

f. Ingrese el siguiente comando para crear un archivo httpd-app.conf en el directorio conf que acaba de crear:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf

g. Presione I para editar y agregue el siguiente código:

<IfDefine !IS_DJANGOSTACK_LOADED>
      Define IS_DJANGOSTACK_LOADED
      WSGIDaemonProcess wsgi-djangostack   processes=2 threads=15    display-name=%{GROUP}
</IfDefine>

<Directory "/opt/bitnami/apps/django/django_projects/tutorial/tutorial">
    Options +MultiViews
    AllowOverride All
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>

    WSGIProcessGroup wsgi-djangostack

    WSGIApplicationGroup %{GLOBAL}
</Directory>

Alias /tutorial/static "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/contrib/admin/static"
WSGIScriptAlias /tutorial '/opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py'

h. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


i. Ingrese el siguiente comando para crear un archivo httpd-prefix.conf en el directorio conf para su aplicación:

sudo vim /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf

j. Presione I para editar y agregue el siguiente código:

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf"

k. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


l. Ingrese el siguiente comando para abrir el archivo bitnami-apps-prefix.conf:

sudo vim /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf

m. Presione I para editar y agregue la siguiente línea al final del archivo:

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf"

n. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


o. Ingrese el siguiente comando para abrir el archivo bitnami.conf :

sudo vim /opt/bitnami/apache2/conf/bitnami/bitnami.conf

p. Escriba :1,$dy presione Enter en Vim para seleccionar todo y elimine el contenido del archivo bitnami.conf


q. Presione I para editar y agregue el siguiente código al archivo:

<VirtualHost _default_:80>
    WSGIScriptAlias / /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py

    <Directory /opt/bitnami/apps/django/django_projects/tutorial>
    AllowOverride all
        Require all granted
        Options FollowSymlinks
    </Directory>

    DocumentRoot /opt/bitnami/apps/django/django_projects/tutorial
</VirtualHost>

r. Presione Esc, escriba :wq! y presione Enter para guardar y salir de Vim.


s. Ingrese el siguiente comando para reiniciar Apache:

sudo /opt/bitnami/ctlscript.sh restart apache

t. Apunte su navegador web a la dirección IP de su instancia (p. ej., http:// 192.0.2.143).

Debería ver “Hello, world”, que confirma que su aplicación se está ejecutando.

Felicitaciones

Felicitaciones, completó el tutorial. Ha implementado con éxito una aplicación basada en Django en Lightsail.

Amazon Lightsail es una excelente opción para desarrollar, crear e implementar una variedad de aplicaciones como WordPress, sitios web y plataformas de blogs. 

¿Le resultó útil este tutorial?

Gracias
Indíquenos lo que le gustó.
Cerrar
Lamentamos haberlo decepcionado
¿Hay información desactualizada, confusa o inexacta? Ayúdenos a mejorar este tutorial con sus comentarios.
Cerrar