[Python] Exécutez Flask sur Google App Engine

Une note personnelle décrivant les étapes à suivre pour que Flask, le framework Web Python, fonctionne sur Google App Engine. Lors de l'exécution de la procédure suivante, nous nous référons aux articles suivants pour de nombreuses parties.

1. Installez la version 2.7 de Python (anaconda2-4.2.0)

Google App Engine (SE) nécessite la version 2.7 de Python. Lorsque j'ai créé l'environnement Django pour la première fois, je l'ai configuré pour que la version spécifiée de l'environnement virtuel anaconda puisse être utilisée, donc je vais l'utiliser également. (* Pour plus de détails, reportez-vous aux étapes 3 à 7 de l'article suivant.)

Ci-dessous, continuez.

Terminal


$ pyenv global anaconda2-4.2.0 (#La version spécifiée de l'environnement virtuel est définie pour tous les répertoires)
$ pyenv virtualenv anaconda2-4.2.0 flask001
 (# "flask001"Avec le nom, la version"anaconda2-4.2.0"Créer un nouvel environnement virtuel pour)
$ python --version (#Vérifier la version de python)
    Python 2.7.12 :: Anaconda 4.2.0 (x86_64)  
$ pyenv versions
    system
  * anaconda2-4.2.0
    anaconda3-4.2.0
    flask001
 (#Dans un environnement virtuel qui peut être spécifié avec pyenv,"flask001"Est ajouté)

2. Après avoir créé le répertoire pour installer Flask, définissez l'environnement virtuel créé à l'étape 1 dans le répertoire.

Terminal


$ mkdir myflask (#Répertoire pour installer Flask"myflask"Créer)
$ cd myflask (# "myflask"Déplacer vers le répertoire)
$ pyenv local flask001 (# "myflask"Environnement virtuel dans l'annuaire"flask001"L'ensemble)
$ pyenv versions
    system
    anaconda2-4.2.0
    anaconda3-4.2.0
  * flask001
 (#Il est possible d'entrer automatiquement dans l'environnement virtuel créé par virtualenv simplement en se déplaçant vers le répertoire spécifié.)

3. Téléchargez le fichier du package du SDK Google Cloud

Téléchargez le package d'archive SDK pour Mac OS X (x86_64) à partir de la page suivante et placez tous les fichiers extraits après décompression dans n'importe quel répertoire.

Terminal


$ cd $HOME
$ mkdir .py_appengine
$ cd .py_appengine

(# ".py_appengine"Créez un répertoire et placez le fichier du SDK Cloud téléchargé et développé sous le répertoire.)

4. Ajoutez le chemin du répertoire SDK à .bash_profile

Terminal


$ cd $HOME
$ vim ~/.bash_profile (# .bash_Décrivez le contenu suivant dans le fichier de profil)

  # Set path for Python_GoogleAppEngine
  export PATH="$PATH:$HOME/.py_appengine:$HOME/.py_appengine/google-cloud-sdk/platform/google_appengine"

Terminal


source ~/.bash_profile (#Refléter les paramètres)

5. Installez le SDK Google Cloud

Terminal


$ cd $HOME/.py_appengine
$ ./google-cloud-sdk/install.sh (# install.Exécutez sh pour initialiser le SDK)

  # "You must log in to continue. Would you like to log in (Y/n)?"
  # "Y"Entrez pour lancer le navigateur et ouvrir la page Google Cloud Platform.
  #Lorsque vous vous connectez, l'authentification du SDK Google Cloud est terminée.

$ ./google-cloud-sdk/bin/gcloud init (#Exécutez gcloud init pour initialiser le SDK)

6. Installez Flask

Terminal


$ cd $HOME/myflask
$ mkdir lib (#Créez un répertoire lib pour installer Flask)
$ pip install -t lib flask (#Installez Flask dans le répertoire lib)

7. Placez 3 fichiers dans la même hiérarchie que le répertoire lib

Téléchargez les 3 fichiers sur github et placez-les dans la même hiérarchie que le répertoire lib. (* Placé sous le répertoire "myflask" ici. De plus, les 3 fichiers sont utilisés avec les paramètres par défaut)

python


myflask
 |_ lib/
 |_ app.yaml - (1)
 |_ appengine_config.py - (2)
 |_ main.py - (3)

(1) fichier app.yaml Décrit le gestionnaire de requêtes vers App Engine et les paramètres de chemin de l'application vers les fichiers statiques.

Terminal


$ cd $HOME/myflask

[app.yaml]


# This file specifies your Python application's runtime configuration
# including URL routing, versions, static file uploads, etc. See
# https://developers.google.com/appengine/docs/python/config/appconfig
# for details.

runtime: python27
api_version: 1
threadsafe: yes

# Handlers define how to route requests to your application.
handlers:

# App Engine serves and caches static files contained in the listed directories
# (and subdirectories). Uncomment and set the directory as needed.
#- url: /client
#  static_dir: client

# This handler tells app engine how to route requests to a WSGI application.
# The script value is in the format <path.to.module>.<wsgi_application>
# where <wsgi_application> is a WSGI application object.
- url: .*  # This regex directs all routes to main.app
  script: main.app

# Third party libraries that are included in the App Engine SDK must be listed
# here if you want to use them.  See
# https://developers.google.com/appengine/docs/python/tools/libraries27 for
# a list of libraries included in the SDK.  Third party libs that are *not* part
# of the App Engine SDK don't need to be listed here, instead add them to your
# project directory, either as a git submodule or as a plain subdirectory.
# TODO: List any other App Engine SDK libs you may need here.
#libraries:
#- name: jinja2
#  version: latest

(2) fichier appengine_config.py Décrit les paramètres de chargement du répertoire lib lors de l'exécution d'App Engine.

[appengine_config.py]


# `appengine_config.py` is automatically loaded when Google App Engine
# starts a new instance of your application. This runs before any
# WSGI applications specified in app.yaml are loaded.
from google.appengine.ext import vendor

# Third-party libraries are stored in "lib", vendoring will make
# sure that they are importable by the application.
vendor.add('lib')

(3) fichier main.py Importez Flask dans le fichier et décrivez les paramètres de routage.

[main.py]


# `main` is the top level module for your Flask application.

# Import the Flask Framework
from flask import Flask
app = Flask(__name__)
# Note: We don't need to call run() since our application is embedded within
# the App Engine WSGI application server.

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    return 'Hello World!'

@app.errorhandler(404)
def page_not_found(e):
    """Return a custom 404 error."""
    return 'Sorry, Nothing at this URL.', 404

@app.errorhandler(500)
def application_error(e):
    """Return a custom 500 error."""
    return 'Sorry, unexpected error: {}'.format(e), 500

(référence)

8. Confirmation du fonctionnement dans l'environnement local

Terminal


$ dev_appserver.py . (#Dev dans le SDK App Engine_appserver.Exécuter le fichier py)

  # "Do you want to continue (Y/n)?"Est affiché"y"Entrer

Après avoir exécuté la commande, saisissez "http: // localhost: 8080" dans le champ d'adresse du navigateur. Si «Hello World!» S'affiche, cela signifie que l'opération réussit.

9. Créez un projet sur l'écran d'administration de Google Cloud Platform

Connectez-vous à la page Google Cloud Platform et créez un projet à déployer à partir de l'écran d'administration.

  1. Connectez-vous à Écran d'administration de Google Cloud Platform (tableau de bord)
  2. Cliquez sur le menu hamburger (outils et services) en haut à gauche de l'écran
  3. Cliquez sur "IAM et gestion"
  4. Cliquez sur "Tous les projets"
  5. Cliquez sur "+ Créer un projet"
  6. Entrez le nom du projet dans "Nouveau projet" et cliquez sur "Créer"
  7. Copiez l ' attribué au projet nouvellement créé

10. Déployer sur Google App Engine

Terminal


$ open https://appengine.google.com/start (#Connectez-vous au site App Engine et créez d'abord les ressources App Engine à utiliser dans le projet *"asia-northeast1"choisir)

$ appcfg.py update -A <ID du projet> -V v1 . (# <ID du projet> には手順 9 で用意したID du projet を入力)

<référence>
#S'il ne s'agit pas de votre premier déploiement, exécutez d'abord la commande suivante pour définir le projet comme projet par défaut, puis exécutez à nouveau la commande ci-dessus.
$ appcfg.py set_default_version -V v1 -A <ID du projet>

Après avoir exécuté la commande, saisissez "https: // .appspot.com" dans le champ d'adresse du navigateur. Si «Hello World!» S'affiche, cela signifie que l'opération réussit.

(référence)

Recommended Posts

[Python] Exécutez Flask sur Google App Engine
Tweet (API 1.1) avec Google App Engine pour Python
Déployer l'application Django sur Google App Engine (Python3)
PIL en Python sur Windows8 (pour Google App Engine)
Comment utiliser Django avec Google App Engine / Python
Utilisez ndb.tasklet avec Google App Engine
Exécutez Cloud Dataflow (Python) depuis AppEngine
Jusqu'à ce que vous exécutiez l'application Flask sur Google App Engine pour le moment
Utiliser des modules externes avec Google App Engine
Utilisation de ImageField de Django avec AppEngine / Python
Gagnez l'application Web Python + Flask avec Jenkins
Exécutez des applications Web Python avec NGINX + NGINX Unit + Flask
Créez un environnement Flask Python3 + sur Compute Engine de GCP
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
Exécutez Openpose sur Python (Windows)
Exécutez Tensorflow 2.x sur Python 3.7
Procédure de construction de l'environnement de développement Google App Engine / Python (fin 2014)
(Débutant) Utilisation de base du magasin de données de Google App Engine
Exécutez le CGI de Python sur CORESERVER
Exécutez la commande unix sur python
Premiers pas avec Google App Engine pour Python et PHP
Version d'exécution de l'environnement standard Google App Engine / Python
Exemple pour mettre l'application Web Python Flask sur Azure App Service (Web App)
Déployer des applications Go sur Google App Engine avec des actions GitHub
Exécutez l'application avec Flask + Heroku
Développement Google AppEngine avec Docker
Exécutez Python selon la planification sur AWS Lambda
Exécutez l'image Docker de TensorFlow sur Python3
Prise en charge de Java 1 1 par Google App Engine
Déployer l'application Flask sur heroku (amer)
Déployez l'application Flask sur Heroku
Déployez l'application Flask sur heroku
Exécutez Keras sur Google Colaboratory TPU
Exécutez régulièrement Python sur Heroku Scheduler
Avez-vous des recommandations pour un livre de commentaires sur le développement de GoogleAppEngine / Python?
Publier le site gratuitement sur Google App Engine (note personnelle)
Paramètres lors de l'écriture d'applications Google App Engine / Python avec Intellij Idea
Création d'un environnement de développement avec Maven sur Google App Engine [Java]
Utilisation du fichier de propriétés avec l'environnement flexible Java 8 de Google App Engine
Exécutez le servo avec Python sur ESP32 (Windows)
Exécutez AzureKinect en Python la veille de Noël.
[Google App Engine] Objets utilisateur (traduction en japonais)
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Lancer une application Flask dans Python Anywhere
Application Web facile avec Python + Flask + Heroku
[Python] Exécutez Headless Chrome sur AWS Lambda
Je ne peux plus déployer avec le moteur d'application Google
Exécutez le code Python sur A2019 Community Edition
Exécutez Python en C ++ sur Visual Studio 2017
Exécutez le serveur python wsgi sur l'unité NGINX
Exécutez régulièrement des programmes Python sur AWS Lambda
Installez et exécutez Python3.5 + NumPy + SciPy sur Windows 10
Mettez MicroPython sur Windows pour exécuter ESP32 sur Python
Python sur Windows
À propos du problème que la version python de Google App Engine ne maille pas
Exécutez l'API Google Analytics (core v3) en python
Exécutez Python YOLOv3 en C ++ sur Visual Studio 2017
Notes sur Flask
Comment exécuter MeCab sur Ubuntu 18.04 LTS Python
Exécutez Zookeeper x python (kazoo) sur Mac OS X