
Déploiement d’une application Django sur Héroku
Tuto pour le déploiement d’une application Django sur Héroku

Déploiement d’une application Django sur Héroku partie:1
Pour commencer le déploiement d’une application Django sur Héroku dans le fichier setting.py vous déclarez la variable debug à false ou vous créez une variable ENV et assigner lui la valeur PRODUCTION:
if os.environ.get('ENV') == 'PRODUCTION':
DEBUG = False
else:
DEBUG = True

Vous créez un répertoire static dans le dossier du projet avec la commande:
$ mkdir votre-project/static

Puis dans setting.py vous ajoutez les lignes suivantes :
if os.environ.get('ENV') == 'PRODUCTION':
# Static files settings
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)

Puis vous installez la librairie WhiteNoise pour avoir accès aux fichiers statiques en production :
$ pip install whitenoise

Vous modifiez setting.py pour l’utilisation de WhiteNoise :
MIDDLEWARE = [
# ...
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# ...
]
if os.environ.get('ENV') == 'PRODUCTION':
# ...
# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'


Ensuite exportez la base de données dans un fichier votrefichier.json:
créer un dossier dumps dans votre application

$ ./manage.py dumpdata votreapp > votreapp/dumps/votrefichier.json

Vous installez la librairie Database-URL:
$ pip install dj-database-url

Dans setting.py vous ajoutez:
import dj_database_url
if os.environ.get('ENV') == 'PRODUCTION':
# …
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

Choisir le nom de votre application Django dans setting.py en modifiant la variable ALLOWED_HOSTS :
ALLOWED_HOSTS = ['nomdevotreapp.herokuapp.com']

Création d’un fichier runtimes.txt
À la racine du projet, vous créez le fichier et y inclure la version de python utilisé pour le projet.

Vous pouvez trouver votre version avec la commande :
$ python -V

Ensuite vous installez gunicorn avec la commande:
$ pip install gunicorn

Vous créez un fichier requirements.txt à la racine du projet avec la commande:
$ pip freeze > requirements.txt
Cela inclura dedans tous les packages utilisé pour faire tourner l’app

Et vous créez un fichier Procfile à la racine du projet sans extension et y ajouté:
web: gunicorn nomdevotreapp.wsgi
Vous générez une nouvelle clé secrète avec la console Python :
gardez la nouvelle clé secrète pour plus tard
$ python
import random, string
"".join([random.choice(string.printable) for _ in range(24)])
'-~aO;| F;rE[??/w^zcumh(9'
Initialisez git pour le suivie avec Héroku avec la commande:
$ git init

Déploiement d’une application Django sur Héroku partie:2
À la racine de votre projet installer Heroku avec la commande :
$sudo snap install heroku -- classic
Se connecter à son compte Heroku avec la commande:
$heroku login

Suivre les instructions et accepter la connexion à votre compte


Création de l’app avec la commande en indiquant un nom :
$heroku create nomDeApp
Ou en laissant Heroku choisir le nom avec celle-ci:
$ heroku create

Vous enregistrez la nouvelle clé secrète défini plus haut avec la commande:
$ heroku config:set SECRET_KEY="votre-clé-secrète"

Ensuite vous passez la variable ENV en production:
$ heroku config:set ENV=PRODUCTION

Après vous envoyez les fichiers sur Héroku:
$ git push heroku master

Vous effectuez les migrations avec la commande:
$ heroku run python manage.py migrate

Ensuite vous créez un administrateur en remplissant les champs avec la commande :
$ heroku run python manage.py createsuperuser

Vous importez votre base de données :
$ heroku run python manage.py loaddata votreapp/dumps/votrefichier.json

C’est terminer pour déploiement d’une application Django sur Héroku votre application et en ligne 🙂

Aucun commentaire