Django es un marco web MVT que se utiliza para crear aplicaciones web. Es robusto, simple y ayuda a los desarrolladores web a escribir código limpio, eficiente y poderoso. En este artículo, aprenderemos cómo implementar un proyecto Django en Heroku en pasos simples. Para esto debe estar listo un proyecto Django, visita el siguiente enlace para preparar uno: https://www.geeksforgeeks.org/django-tutorial/
Requisitos previos :
- Django
- postgres instalado
Archivo de requisitos.txt: cree un archivo de requisitos.txt en el mismo directorio que su manage.py. Ejecute el siguiente comando en la consola con el entorno virtual activado:
(myvenv) $ pip install dj-database-url gunicorn whitenoise
(myvenv) $ pip freeze > requirements.txt
Verifique sus requisitos.txt. Se actualizará con los paquetes actualmente instalados en su proyecto.
Procfile: Cree un archivo llamado Procfile en el mismo directorio que manage.py. verá el logotipo de Heroku como icono de Procfile. Añádele la siguiente línea:
web: gunicorn <project_name>.wsgi --log-file -
Aquí el nombre del proyecto será el nombre de la carpeta en la que está presente su settings.py. Procfile declara explícitamente qué comando debe ejecutarse para iniciar su aplicación.
Archivo Runtime.txt: Cree un archivo runtime.txt en el mismo directorio que su manage.py. Agregue la versión de python que desea usar para su aplicación web:
python-3.7.1
Settings.py: Modifique su settings.py según las instrucciones a continuación:
1. Establezca la depuración como Falso.
DEBUG = False
2. Modificar hosts permitidos.
ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']
3. Para deshabilitar el manejo de archivos estáticos de Django y permitir que WhiteNoise se haga cargo, agregue ‘nostatic’ en la parte superior de su lista ‘INSTALLED_APPS’.
INSTALLED_APPS = [ 'whitenoise.runserver_nostatic', 'django.contrib.staticfiles', # ... ]
4. Agregue WhiteNoise a la lista MIDDLEWARE. El middleware WhiteNoise debe colocarse directamente después de Django SecurityMiddleware (si lo está utilizando) y antes de todos los demás middleware:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', # ... ]
5. Actualice la configuración de su base de datos.
import dj_database_url DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': '<database_name>', 'USER': '<user_name>', 'PASSWORD': '<password>', 'HOST': 'localhost', 'PORT': '', } } db_from_env = dj_database_url.config(conn_max_age=500) DATABASES['default'].update(db_from_env)
6. Para servir archivos directamente desde sus ubicaciones originales (generalmente en STATICFILES_DIRS o subdirectorios estáticos de la aplicación) sin necesidad de recopilarlos en STATIC_ROOT mediante el comando collectstatic; establezca WHITENOISE_USE_FINDERS en Verdadero.
WHITENOISE_USE_FINDERS = True
7. WhiteNoise viene con un backend de almacenamiento que automáticamente se encarga de comprimir sus archivos y crear nombres únicos para cada versión para que puedan almacenarse en caché de forma segura para siempre. Para usarlo, simplemente agregue esto a su settings.py:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Contenido modificado final de settings.py:
import dj_database_url ... DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com'] INSTALLED_APPS = [ 'whitenoise.runserver_nostatic', #... ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', #... ] ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': '<database_name>', 'USER': '<username>', 'PASSWORD': '<password>', 'HOST': 'localhost', 'PORT': '', } } WHITENOISE_USE_FINDERS = True ... db_from_env = dj_database_url.config(conn_max_age=500) DATABASES['default'].update(db_from_env) STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
cuenta heroku
1. Instale su cinturón de herramientas Heroku que puede encontrar aquí: https://toolbelt.heroku.com/
2. Autentique su cuenta de Heroku ejecutando el siguiente comando en cmd o gitbash
$heroku login
A veces, cmd o git bash pueden congelarse con ciertos comandos. Solo usa CTRL+C para salir.
3. Confirme cualquier cambio en git antes de implementar.
$ git status $ git add -A . $ git commit -m "additional files and changes for Heroku"
4. Elija el nombre de su aplicación que se mostrará en el nombre de dominio : [el nombre de su aplicación].herokuapp.com y cree la aplicación usando el siguiente comando:
$ heroku create <your_app's_name>
5. Depuración: si la recopilación estática falla durante una compilación, se proporcionó un seguimiento que será útil para diagnosticar el problema. Si necesita información adicional sobre el entorno en el que se ejecutó collectstatic, use la configuración DEBUG_COLLECTSTATIC.
$ heroku config:set DEBUG_COLLECTSTATIC=1
6. Deshabilitar Collectstatic: A veces, es posible que no desee que Heroku ejecute Collectstatic en su nombre. Puede deshabilitar el paso de compilación collectstatic con la configuración DISABLE_COLLECTSTATIC:
$heroku config:set DISABLE_COLLECTSTATIC=1
7. Finalmente, haga un simple git push para implementar nuestra aplicación:
$ git push heroku master
8. Cuando implementamos en Heroku, creamos una nueva base de datos y está vacía. Necesitamos ejecutar los comandos de migración y creación de superusuario.
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser
El símbolo del sistema le pedirá que elija un nombre de usuario y una contraseña nuevamente. Estos serán sus datos de inicio de sesión en la página de administración de su sitio web en vivo.
9. Para abrir su sitio, ejecute:
$ heroku open
Resolución de errores
En caso de que vea un error de aplicación en su sitio web, ejecute:
$heroku logs --tail
Muestra los registros recientes y deja la sesión abierta para que se transmitan los registros en tiempo real. Al ver una transmisión en vivo de los registros de su aplicación, puede obtener información sobre el comportamiento de su aplicación en vivo y depurar los problemas actuales. Cuando haya terminado, presione Ctrl+C para volver a la indicación.
Publicación traducida automáticamente
Artículo escrito por maansi1702 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA