Déployer l'application Django sur Google App Engine (Python3)

Introduction (Attention)

Dans cet article, j'ai décrit comment publier une application Django sur Internet en utilisant l'environnement flexible de GAE, mais en premier lieu, l'environnement flexible de GAE est __ "version bêta" à compter du 10 juillet 2017 (lundi). Il est __. La page du didacticiel indique également __ "Nous ne recommandons pas de l'utiliser dans un environnement de production." __, veuillez donc lire cet article sur cette base.

référence: Exécutez Django dans l'environnement flexible App Engine

Texte

Récemment, je développe personnellement une certaine application Web avec Django, et lorsque je la publie, Azure Web App -web / app-service-web-overview) et Google App Engine J'ai essayé plusieurs services PaaS. Dans cet article, je voudrais écrire le compte rendu du déploiement lors de l'utilisation de Google App Engine (ci-après dénommé GAE), en me concentrant principalement sur les points auxquels j'étais accro.

Quand il s'agit de Django (Python3) dans GAE, j'ai l'impression qu'il n'y a pas beaucoup d'informations disponibles même si je le recherche sur Google, donc j'espère que cela sera utile pour les personnes qui en sont également accros.

Cause de la dépendance

Avec le recul, il y a deux raisons pour lesquelles j'en étais accro.

  1. Python 3 ne peut pas être exécuté dans "Environnement standard"
  2. Il est difficile de saisir le tableau d'ensemble du travail, et il est facile d'entrer dans l'état de "que faites-vous maintenant?"

(Comme je suis nouveau sur Django et GAE, il se peut que certains contenus soient «naturels» pour ceux qui y sont habitués.)

Ensuite, j'écrirai les détails ci-dessous.

Impossible d'exécuter Python 3 dans "environnement standard"

En premier lieu, GAE a __ "environnement standard" __ et __ "environnement flexible" __, chacun ayant des mécanismes, des restrictions et des utilisations différents. J'étais vraiment dedans parce que je ne le savais pas.

Si vous pensez "Je vais déployer une application Django avec GAE!", Je pense que je vais d'abord essayer google avec "Django Google App Engine". (peut être)

Ensuite, la page suivante atteindra le haut.

Exécution de Django dans l'environnement standard App Engine

Oh, le tutoriel officiel a été un succès. Cela semble fonctionner si vous suivez les étapes!

Veuillez attendre un moment pour vous (je suis) là-bas. Le titre de cette page est «Exécution de Django dans App Engine __ Standard Environment __».

Et puis, si vous regardez cette page Django Getting Started Guide (c'est une page d'un niveau supérieur à la page précédente) ), Dans la colonne du cas où l'environnement standard ne peut pas être utilisé __

Nécessite Python 3 Nécessite une bibliothèque système qui ne peut pas être utilisée dans l'environnement Python App Engine standard

Il est décrit comme.

En d'autres termes, si vous souhaitez écrire une application en Python3 ou la développer à l'aide "d'une bibliothèque système qui ne peut pas être utilisée dans l'environnement Python standard d'App Engine", cet environnement standard ne peut pas être utilisé.

En d'autres termes, même si vous procédez selon la page "Environnement standard" plus tôt, vous serez accro aux restrictions autour de cela. Je n'ai pas remarqué cela et j'ai eu du mal à exécuter Python 3 ou à installer la bibliothèque dans un environnement standard.

Une explication détaillée des différences entre l'environnement standard et l'environnement flexible est résumée à la page suivante.

Environnement flexible App Engine pour les utilisateurs de l'environnement standard App Engine (https://cloud.google.com/appengine/docs/flexible/java/flexible-for-standard-users?hl=ja)

En bref, la méthode de fonctionnement en tant que plate-forme est complètement différente, alors utilisez-la correctement, il semble donc que ce ne soit pas un environnement flexible si vous souhaitez simplement utiliser Python3. Il semble qu'il soit nécessaire de concevoir le système après avoir bien compris ce domaine.

Cette fois, je souhaite déployer le système écrit en Python 3 sur GAE, je vais donc poursuivre le travail en se référant à la page suivante.

Exécutez Django dans l'environnement flexible App Engine

Il est difficile de saisir le tableau d'ensemble du travail, et il est facile d'entrer dans l'état de "que faites-vous maintenant?"

Maintenant, une fois que vous avez trouvé une page de didacticiel à laquelle vous référer, vous pouvez vous y fier pour continuer votre travail.

Cependant, cette procédure est assez longue, et si vous faites cela à partir de 1, vous tomberez progressivement dans l'état de "Que faites-vous pour quoi?"

Dans un tel cas, en tant que guide pour confirmer votre emplacement actuel, il est très efficace pour la santé mentale de comprendre quel type de procédure est nécessaire du début du travail au déploiement, je vais donc le résumer ici.

Les éléments sont les suivants.

  1. Configurez un compte pour utiliser Google Cloud Platform
  2. Créez un projet Google Cloud Platform
  3. Installez le SDK Google Cloud
  4. Préparez la base de données (Cloud SQL)
  5. Clonez l'exemple de projet et essayez de le déployer
  6. Déployez votre application

Regardons chacun de plus près. La procédure de travail spécifique est celle décrite dans le document, je vais donc l'omettre. Le but ici est d'obtenir une vue d'ensemble.

Configurer un compte pour utiliser Google Cloud Platform

GAE est l'un des services cloud fournis par Google, appelé Google Cloud Platform (GCP). Tout comme AWS propose divers services tels que EC2, Lambda et S3, GCP propose également divers services tels que GAE, Cloud Storage (qui sortira plus tard) et Big Query. GAE est l'un d'entre eux, n'est-ce pas?

Par conséquent, commencez par créer un compte (vous pouvez utiliser votre compte Gmail tel quel) pour commencer à utiliser GCP. Veuillez également définir la facturation ici.

Créer un projet Google Cloud Platform

Dans GCP, divers services sont combinés en un seul système en unités appelées «projets». Commençons par créer un projet. Suivez le tutoriel pour ouvrir la page de la console GCP et créer un projet.

L'ID du projet créé ici sera utilisé plus tard, il sera donc plus facile de travailler si vous l'écrivez sous forme de texte quelque part.

Installez le SDK Google Cloud

Pour faire fonctionner chaque service GCP, y compris GAE, à partir de la ligne de commande, vous devez installer le SDK Google Cloud.

Il y a certaines choses à faire, comme installer la commande elle-même, configurer le compte, vérifier l'opération, etc., c'est donc aussi la procédure (page séparée Je vais procéder un par un en regardant mac)).

Préparer la base de données (Cloud SQL)

Ni Django ni Rails ne peuvent continuer à utiliser SQLite, qui a été utilisé dans l'environnement de développement, dans l'environnement de production. Lorsque vous déployez l'application, vous devez préparer du RDB et réécrire les paramètres pour vous y connecter.

GAE explique comment utiliser Cloud SQL, qui est l'un des mêmes services GCP, en tant que didacticiel.

Il y a beaucoup de choses à faire, comme activer Cloud SQL sur la console GCP, créer une instance, créer un utilisateur root, contrôler l'accès et créer un environnement dans lequel vous pouvez vous connecter, alors ne vous perdez pas non plus ici. S'il vous plaît soyez prudente.

De plus, il semble que les instances Cloud SQL disposent de 1ère génération et 2ème génération, mais lors de son utilisation dans un environnement flexible, il semble que la 2ème génération soit toujours utilisée.

Une fois les différents paramètres définis, décrivez les paramètres dans le fichier settings.py de l'exemple de projet cloné à l'étape suivante afin que l'application puisse se connecter à la base de données.

Clonez l'exemple de projet et essayez de le déployer

Si vous essayez de déployer votre propre application soudainement, il sera difficile d'isoler la cause lorsqu'une erreur se produit, telle que la relation entre la version de la bibliothèque, le contenu du fichier de paramètres requis pour GAE et la préparation inadéquate du déploiement vers GAE en premier lieu. Je vais.

Commencez par cloner l'exemple de projet comme décrit dans la procédure, ne modifiez que les paramètres de connexion à la base de données et déployez-le une seule fois dans l'environnement flexible GAE.

Après avoir confirmé que la page Hello World préparée s'affiche sans aucun problème, passez à l'étape suivante.

Déployez votre propre application

Une fois que cela est fait, portez progressivement votre application vers l'exemple de projet que vous venez de déployer, déployez-le, vérifiez le fonctionnement et confirmez que votre application fonctionne sur Internet sans aucun problème.

Généralement, différentes versions de Django et Python lui-même, différentes bibliothèques, différentes bases de données, etc. entraîneront des erreurs différentes des locales, il est donc recommandé de procéder petit à petit pour faciliter l'isolement de la cause.

Pour les erreurs telles que la bibliothèque introuvable, ajoutez la description de la bibliothèque que vous utilisez à requirements.txt dans pip freeze> requirements.txt et oubliez de l'installer lorsque vous déployez sur GAE. Il ne faut pas.


Avec cela, nous pouvons enfin voir le flux de développement d'applications → version de production. Il est bon de voir votre application fonctionner de manière non locale.

Après cela, vous aurez envie de répéter l'ajout et le déploiement de fonctions en utilisant la même procédure.

Cette fois, j'ai déployé sur la base du projet modèle, mais je comprends les paramètres de l'environnement GAE décrits dans ʻapp.yaml et settings.py` afin que je puisse modifier les paramètres en fonction de mon application. Je pense qu'il faut aussi devenir.

Résumé

Cette fois, je me suis concentré sur GAE, mais avant ces essais et erreurs, j'ai rencontré les mêmes essais et erreurs sur Azure Web App, et par conséquent, je n'ai pas pu déployer avec succès.

Une fois l'application déployée, le service PaaS est facile à modifier à partir de là, mais avant cela, vous devez comprendre le mécanisme, les restrictions et la méthode de configuration propres à PaaS. , "Hello World!" J'ai eu une petite impression dure.

De plus, l '"environnement flexible GAE Django (Python3)" utilisé cette fois-ci a été perdu car peu de gens le faisaient au départ, et même si je recherchais sur Google lorsqu'un problème se produisait, je ne trouvais pas les bonnes informations. C'était l'un des principaux facteurs.

J'ai pensé que je devrais écrire dans cet article des erreurs individuelles et des solutions survenues pendant le travail réel, mais je n'ai pas écrit correctement le contenu, ou lorsque j'ai essayé de le résoudre, c'était ma simple erreur de travail. Je vais l'omettre parce que je l'ai fait. Si vous rencontrez des problèmes spécifiques, veuillez commenter. (Je ne sais pas si je peux le résoudre, mais ...)

Recommended Posts

Déployer l'application Django sur Google App Engine (Python3)
Comment utiliser Django avec Google App Engine / Python
[Python] Exécutez Flask sur Google App Engine
Tweet (API 1.1) avec Google App Engine pour Python
Comment déployer une application Django dans le cloud Alibaba
PIL en Python sur Windows8 (pour Google App Engine)
Déployer l'application Django créée avec PTVS sur Azure
Déployer l'application Django avec Docker
Déployer l'application Django sur Heroku
Implémenter l'application Django sur Hy
Utilisez ndb.tasklet avec Google App Engine
Déployer des applications Go sur Google App Engine avec des actions GitHub
Déployer l'application Django sur EC2 avec Nginx + Gunicorn + Supervisor
Jusqu'à ce que vous exécutiez l'application Flask sur Google App Engine pour le moment
Déployer l'application Django sur Heroku [Partie 1]
Avez-vous des recommandations pour un livre de commentaires sur le développement de GoogleAppEngine / Python?
Utiliser des modules externes avec Google App Engine
Comment déployer une application Django sur heroku en seulement 5 minutes
Utilisation de ImageField de Django avec AppEngine / Python
Je ne peux plus déployer avec le moteur d'application Google
Création d'un environnement de développement avec Maven sur Google App Engine [Java]
Jusqu'à ce que vous déployez un projet SpringBoot dans Gradle avec App Engine Flexible
(Python) Essayez de développer une application Web en utilisant Django
Comment créer un environnement Django (python) sur Docker
Procédure de construction de l'environnement de développement Google App Engine / Python (fin 2014)
Étapes de l'installation de Python 3 à la création d'une application Django
(Débutant) Utilisation de base du magasin de données de Google App Engine
Premiers pas avec Google App Engine pour Python et PHP
Un mémo sur la création d'une application Django (Python) avec Docker
Version d'exécution de l'environnement standard Google App Engine / Python
Déployer l'application Masonite sur Heroku 2020
(Échec) Déployer une application Web créée avec Flask avec heroku
Construire un environnement Python sur Mac
Construire un environnement Python sur Ubuntu
Créer un environnement Python sur Mac (2017/4)
# 3 Créez un environnement Python (Django) avec une instance EC2 (ubuntu18.04) d'AWS part2
Paramètres lors de l'écriture d'applications Google App Engine / Python avec Intellij Idea
Créer une nouvelle application utiliser python, django
Développement Google AppEngine avec Docker
python + django + scikit-learn + mecab (1) avec heroku
Création et déploiement d'applications Django (PTVS) à l'aide du stockage Azure Table
Prise en charge de Java 1 1 par Google App Engine
python + django + scikit-learn + mecab (2) avec heroku
Déployer l'application Flask sur heroku (amer)
Créer un environnement python dans centos
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Créer une application Web avec Django
Déployez l'application Flask sur Heroku
Créez une application de scraping avec Python + Django + AWS et modifiez les tâches
Comment déployer une application Web sur Alibaba Cloud en tant que pigiste
Déployez l'application Flask sur heroku
Lancement d'une application Web sur AWS avec django et modification des tâches
Créer un environnement python3 sur CentOS7
Utilisation du fichier de propriétés avec l'environnement flexible Java 8 de Google App Engine
[Google App Engine] Flux de la construction de l'environnement de développement à la création de l'application
Créez une application Django sur Docker et déployez-la sur AWS Fargate
[Version détaillée] Créer un environnement Python confortable avec Google Compute Engine (Ubuntu 16.04)
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku
Migrer les applications Django exécutées sur Python 2.7 vers Python 3.5