[PYTHON] Déployer l'application Django sur Heroku [Partie 1]

introduction

Enregistrez comme rappel lors de l'exécution de l'application Django sur Heroku. La partie 1 concerne l'affichage de la page de démarrage (page It Work) de l'application Django dans Heroku.

La prochaine fois Déployez l'application Django sur Heroku [Partie 2] ** Mon environnement **

Les choses nécessaires

Configuration de l'application à effectuer cette fois

L'application créée cette fois a la configuration suivante.

Constitution


myProject
├── venv
├── Procfile
├── db.sqlite3
├── manage.py
├── myDjango
│   ├──__pycache__
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── requirements.txt
└── runtime.txt

Nom du répertoire racine: myProject Nom du projet Django: myDjango

procédure

Créer une application Django

** Générer / déplacer le répertoire du projet **

$ mkdir myProject
$ cd myProject

** Création et démarrage d'un environnement virtuel **

$ virtualenv venv
$ source venv/bin/activate

Construisez un environnement virtuel nommé venv avec virtualenv venv. Exécutez l'environnement virtuel venv avec source venv / bin / activate. (Venv) apparaîtra maintenant avant le nom d'utilisateur du terminal.

(Supplément) Lorsque vous souhaitez mettre fin à l'exécution de l'environnement virtuel, exécutez disable dans le terminal.

** Installez django-toolbelt **

$ pip install django-toolbelt

Les packages suivants sont installés en installant django-toolbelt.

** Création d'un projet Django **

$ django-admin.py startproject myDjango ./

Créez un projet Django appelé myDjango dans le répertoire courant.

** Changer de langue / fuseau horaire ** Réécrivez la partie suivante de settings.py dans le répertoire myDjango.

myDjango/settings.py


LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

** Migrer **

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

OK si ça ressemble à ça Pour faire simple, la migration est une fonctionnalité qui vous permet de créer des tables dans une base de données en Python sans écrire de SQL. Référence: [Rails "Migration" sur lesquels les débutants peuvent facilement trébucher](https://www.transnet.ne.jp/2015/12/29/rails "Migration" que les débutants peuvent facilement trébucher sur "colnr /" https: //www.transnet. ne.jp/2015/12/29/rails "Migration" colnr / ") que les débutants peuvent facilement trébucher

** Démarrer le serveur **

$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
July 16, 2017 - 02:53:26
Django version 1.11.3, using settings 'myDjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Exécutez python manage.py runserver et lorsque l'affichage ci-dessus est affiché, c'est OK En exécutant cette commande, vous pouvez voir l'application sur http: //127.0.0.1: 8000 /. Appuyez sur Ctrl + C pour quitter.

** Vérifiez si l'application démarre localement ** Accédez à http://127.0.0.1:8000/ depuis votre navigateur. Si tout se passe bien, vous verrez une page comme celle de l'image ci-dessous. はじめてのDjangoページ

Gérer les versions avec git

** Création de .gitignore ** Créez un fichier .gitignore et écrivez ce qui suit:

.gitignore


*.pyc
venv
staticfiles
db.sqlite3

commettre

$ git init
$ git add .
$ git commit -m "J'ai créé une application Django"

Déployer sur Heroku

** Création d'un Procfile **

$ echo "web: gunicorn myDjango.wsgi --log-file -" > Procfile

Procfile est un fichier qui apprend à Heroku quoi faire. Référence: Role of Heroku's Procfile

** Création de runtime.txt **

$ echo "python-3.6.1" > runtime.txt

Spécifiez la version Python dans runtime.txt.

** Création de requirements.txt **

$ pip freeze > requirements.txt

Vous pouvez créer un fichier comme celui-ci

requirements.txt


dj-database-url==0.4.2
dj-static==0.0.6
Django==1.11.3
django-toolbelt==0.0.1
gunicorn==19.7.1
psycopg2==2.7.1
pytz==2017.2
static3==0.7.0

** Rendre l'application Django disponible sur Heroku ** Ajoutez ce qui suit à la dernière ligne de settings.py.

myDjango/settings.py


# Parse database configuration from $DATABASE_URL
import dj_database_url
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers
ALLOWED_HOSTS = ['*']

# Static asset configuration
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

Réécrire wsgi.py

myDjango/wsgi.py


import os

from dj_static import Cling
from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myDjango.settings")

application = Cling(get_wsgi_application())

** Création d'une application Heroku **

$ heroku create

** Définition des variables d'environnement Heroku **

$ heroku config:set DISABLE_COLLECTSTATIC=1

Si vous ne le faites pas, vous obtiendrez une erreur lors de la poussée.

** Pousser vers Heroku **

$ git add .
$ git commit -m "Je l'ai fait fonctionner avec Heroku"
$ git push heroku master

Push réussi lorsque remote: Verifying deploy ... done. s'affiche

** Migrer avec Heroku **

$ heroku run python manage.py migrate

Si vous exécutez heroku run 〇〇, vous pouvez exécuter la commande 〇〇 sur heroku.

** Vérifiez si cela fonctionne avec Heroku **

$ heroku open

Vous pouvez accéder à l'application sur Heroku créée cette fois avec heroku open. Si tout se passe bien, vous verrez une page comme celle de l'image ci-dessous. Heroku上のはじめてのDjangoページ

Résumé

Cette fois, j'ai même lancé une simple application créée par Django sur Heroku. La prochaine fois, nous créerons un modèle pour le site de gestion.

La prochaine fois Déployez l'application Django sur Heroku [Partie 2]

référence

Recommended Posts

Déployer l'application Django sur Heroku [Partie 2]
Déployer l'application Django sur Heroku [Partie 1]
Déployez l'application Flask sur Heroku
Déployez l'application Flask sur heroku
Déployer l'application Masonite sur Heroku 2020
Notes diverses sur le déploiement de l'application django sur Heroku
Déployer l'application Flask sur heroku (amer)
Django Heroku Deploy 1
Django Heroku Deploy 2
Déployer l'API Django avec heroku (mémo personnel)
Comment déployer une application Django sur heroku en seulement 5 minutes
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
Déployer l'application Django sur Google App Engine (Python3)
Déployer l'application Django créée avec PTVS sur Azure
Déployer le projet django sur heroku
Comment déployer Pybot, le manuel Python le plus simple, sur Heroku
(Échec) Déployer une application Web créée avec Flask avec heroku
Exécutez l'application avec Flask + Heroku
python + django + scikit-learn + mecab (1) avec heroku
Implémenter l'application Django sur Hy
Détecter les versions d'applications dans l'App Store
Essayez Ajax sur la page Django
python + django + scikit-learn + mecab (2) avec heroku
Page DJango publiée sur heroku: Practice
Déployer le didacticiel Django sur IIS ①
Blog Django sur heroku: implémentation de la connexion
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (Partie 1)
[Python + heroku] De l'état sans Python à l'affichage de quelque chose avec heroku (partie 2)
[Django] Erreur rencontrée lors du déploiement de heroku (2)
[Django] Problème rencontré lors du déploiement d'heroku (1)
Changer l'ordre de PostgreSQL dans Heroku
Déploiement Heroku de la première application Django à laquelle les débutants sont accros
Créez une application Django sur Docker et déployez-la sur AWS Fargate
Django a commencé la partie 1
Redis sur Heroku
Publication du projet django développé dans Cloud9 sur heroku
Sortie exclusive de l'application Django utilisant ngrok
Django a commencé la partie 4
shimehari sur heroku
Déployer des applications Django sur Ubuntu + Nginx + MySQL (Build)
Je souhaite télécharger une application Django sur heroku
Lorsque j'ai déployé l'application Django sur Heroku, j'ai obtenu le module introuvable: <nom-projet> .wsgi.
Exécutez l'application flask sur Cloud 9 et Apache Httpd
Essayez de créer une application Todo avec le framework Django REST
Publiez votre application Django sur Amazon Linux + Apache + mod_wsgi
J'ai essayé python pour la première fois avec heroku
Mémo de déploiement de Django × Postgresql sur Docker vers Heroku
Déployer une application existante avec docker + pyenv-virtualenv + uwsgi + django
Faire du modèle une chaîne sur le modèle HTML Django
Page DJango publiée sur heroku: Préparation mon point addictif
Comment utiliser Django avec Google App Engine / Python
Installez django sur python + anaconda et démarrez le serveur
Déployer une application Web créée avec Streamlit sur Heroku
Lancer mon application Django
mémo de déploiement heroku (Django)
Initialiser l'application Django
Notes de céleri sur Django
Exécutez Django sur PythonAnywhere
Hello World avec Django