Comme le titre l'indique, Heroku a une image de Ruby ou Rails. Mais vous pouvez utiliser Python aussi bien que Ruby! Donc, j'aimerais publier un moyen de faire fonctionner Django, le framework Python.
C'est un framework Web dit full-stack créé par Python, qui contient tout ce dont vous avez besoin pour créer une application Web. Par exemple, en Java
Il est nécessaire de faire diverses combinaisons avec (Est-il possible de faire de mon mieux avec Java EE seul ces jours-ci?), Mais Django ne peut fondamentalement être développé qu'avec Django.
Bien sûr, le codage se fait en Python, il est donc recommandé à ceux qui peuvent utiliser Python ou qui souhaitent étudier Python à partir de maintenant. Demain, kounoike écrira un article sur Flask, un autre framework créé par Python. Vous voudrez peut-être vous y référer également.
C'est le point auquel j'étais principalement accro. Ici, nous parlerons de l'hypothèse que Heroku est un environnement de production et un environnement de fonctionnement réel.
La version par défaut de Python sur heroku est 2.x. Je veux utiliser le système 3.x! Dans ce cas, vous devez dire à heroku à cet effet.
Django a un mode de débogage, qui est activé par défaut lorsque vous créez l'environnement. En définissant cette option sur Activé, par exemple, lorsqu'une erreur se produit, le contenu détaillé sera affiché. Voici un exemple d'erreur 404. L'URL actuellement reconnue comme URL est affichée, mais il est gênant qu'elle s'affiche sur la page à utiliser.
Django utilise SQLite comme base de données pendant le développement, sauf si vous modifiez les paramètres. Cependant, Postgres est essentiellement disponible sur Heroku. Par conséquent, il est également nécessaire de modifier les paramètres de la base de données.
En tant que framework full stack, Django lui-même a une fonction de serveur d'application. Cependant, il est positionné pour le développement uniquement, et il est recommandé d'utiliser un serveur d'applications dédié et parfaitement réglé pour le fonctionnement réel.
Le serveur d'applications est essentiellement un serveur pour exécuter des applications, je ne suis donc pas doué pour gérer les fichiers statiques. Je pense que les serveurs d'applications dans d'autres langues auront également Apache ou nginx pour gérer les fichiers statiques. Ce point doit également être pris en compte.
Je bouge comme ça! Donc, si vous avez des questions telles que "Vous devriez faire ceci!", N'hésitez pas à nous contacter.
C'est facile. Préparez simplement un fichier appelé runtime.txt dans le dossier actuel du projet et spécifiez la version Python comme suit.
runtime.txt
python-3.4.1
Veuillez noter que les versions disponibles sont fixes, veuillez donc vous référer à la page suivante pour sélectionner la version à utiliser. Specifying a Python Runtime
Les paramètres du mode de débogage sont spécifiés dans settings.py
. Cependant, il est difficile de le changer en poussant vers heroku et de le remettre en place lors du développement local.
Donc, dans mon cas, comme indiqué ci-dessous, j'essaie d'entrer en mode débogage uniquement lorsque local est inclus dans le nom d'hôte (nom de la machine).
C'est parce que mon environnement de développement a un nom tel que "hogehoge.local", donc changez la partie locale en fonction du nom d'hôte que vous utilisez (à l'inverse, spécifiez le nom de la machine du côté heroku) Y a-t-il)
settings.py
if 'local' in hostname:
DEBUG = True
TEMPLATE_DEBUG = True
else:
DEBUG = False
TEMPLATE_DEBUG = False
ALLOWED_HOSTS = ['*']
Cela sera également spécifié dans settings.py
, mais je ne veux pas le réécrire en fonction de l'environnement.
Par conséquent, je vais faire la description suivante.
settings.py
if 'local' in hostname:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
else:
import dj_database_url
DATABASES = {
'default': dj_database_url.config()
}
Un point ici est
python
import dj_database_url
DATABASES = {
'default': dj_database_url.config()
}
Partie de. En utilisant l'API (installable avec pip) appelée dj_database_url, il n'est pas nécessaire de décrire la destination de la connexion, le nom d'utilisateur, le mot de passe, etc. dans le code. C'était un choc.
Le framework d'application Web de Python a un standard appelé WSGI, et tout serveur conforme à ce standard peut être utilisé. Dans le document heroku, il y a une explication utilisant gunicorn, donc je vais monter là-dessus.
Deploying Python Applications with Gunicorn
Pour l'utiliser, installez gunicorn avec pip et ajoutez la description de gunicorn à la fin de INSTALLED_APPS dans settings.py.
settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.sites',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
'Nom du projet',
'gunicorn', ##← Ajouter cette ligne
)
Et au moment du développement
$ python manage.py runserver 0.0.0.0:8080
Ce qui a été démarré sous la forme de, sera démarré avec gunicorn au lieu de manage.py
par la méthode décrite plus loin (décrite dans Procfile).
J'ai eu du mal à trouver des informations à ce sujet. En conclusion, nous utilisons quelque chose appelé bruit blanc.
Après avoir installé whitenoise avec pip, modifiez settings.py
comme décrit dans le lien ci-dessus.
Ensuite, préparez un fichier appelé wisgi.py dans le même dossier où se trouve settings.py
, et écrivez le contenu suivant qui est également décrit dans le lien.
wsgi.py
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
Ensuite, écrivez ce qui suit dans le fichier Procfile afin qu'il puisse être démarré en utilisant les paramètres, y compris gunicorn.
Procfile
web: gunicorn --env DJANGO_SETTINGS_MODULE=Nom du projet.settings Nom du projet.wsgi --log-file -
Avec ce paramètre, poussez vers le référentiel d'heroku et cela devrait démarrer!
J'ai publié l'application déployée avec les paramètres ci-dessus l'autre jour, et il y avait environ 20000 PV le premier jour de la sortie, mais cela fonctionnait bien dans la plage du niveau gratuit. Non, heroku est vraiment incroyable.
Vous trouverez ci-dessous un lien vers un blog qui décrit le processus de création de l'application, j'espère donc que vous pourrez également vous y référer.
J'ai essayé de créer un service Web pour résoudre des problèmes sexuels
>> Services en cours d'exécution Love Points
Le code source du service réellement exploité (différent de ↑) créé par heroku & Django a été téléchargé sur github.
J'espère que cela sera utile pour la composition etc. (C'est une source sale ...)
https://github.com/nakazye/ProgrammerProfile/
Demain, le 8 décembre, le calendrier de l'Avent Heroku 2014 concerne le Flacon de kounoike! Je suis ravi que le matériel Python continue.
Et je souhaite que de plus en plus de personnes créent des applications avec Python, inspirées de l'article.
kounoike, j'ai hâte de lire l'article de demain! !!
Recommended Posts