Google App EngineでFlaskを使うまで
Flaskとは
非常にコンパクトなPython用のWebアプリケーションのフレームワークです。詳しくは適当にググってください。
短い方法
「今すぐ試す」から始める
https://cloud.google.com/appengine/
長い方法
SDKのインストール
このページに書いてある通りにダウンロードする。
https://cloud.google.com/appengine/downloads
virtualenvの設定
自分の環境ではpythonコマンドがpython3.4にリンクしている。そのままではSDKのコマンドが使えないので、virtualenvを使って環境を用意する。もしかしたら環境変数PATHを一時的に書き換えるだけでも良かったかもしれない。
# python27フォルダが作られる % virtualenv -p /usr/bin/python2.7 python27 # pythonをpython2.7に % source ./python27/bin/activate # pythonをpython3.4にもどす % deactivate
Flaskのインストール
Google側で用意されていないので、アプリのディレクトリにインストールする。
mkdir lib pip install -t lib flask
外部ライブラリの場所を設定する。
from google.appengine.ext import vendor vendor.add('lib')
appengine_config.py
アプリの設定
version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: main.app
app.yaml
アプリの作成
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'hello flask'
main.py
ローカルで実行
ローカルでサーバーを立ち上げる。初回起動時にアップデートをチェックするか聞かれる。自分は適当にYesにしてしまった。立ち上げたらhttp://localhost:8080にアクセスする。
% dev_appserver.py ./ INFO 2015-09-17 15:08:08,100 sdk_update_checker.py:229] Checking for updates to the SDK. INFO 2015-09-17 15:08:08,387 sdk_update_checker.py:257] The SDK is up to date. INFO 2015-09-17 15:08:08,435 api_server.py:205] Starting API server at: http://localhost:34218 INFO 2015-09-17 15:08:08,469 dispatcher.py:197] Starting module "default" running at: http://localhost:8080 INFO 2015-09-17 15:08:08,470 admin_server.py:118] Starting admin server at: http://localhost:8000
アップロード
Google Developers Consoleにアクセス。
https://console.developers.google.com/
登録をしたら頑張ってプロジェクトを作成する。プロジェクトIDはそのままURLになるので、よく考えて決めるべき。
次のコマンドでアプリがアップロードされる。
appcfg.py -A <プロジェクトID> update ./
認証が求められ、アップロードがうまく行けば http://プロジェクトID.appspot.com/ から見れるようになる。URLは、コンピュート -> App Engine -> ダッシュボード にも書いてある。
参考文献
GAEのチュートリアル: https://cloud.google.com/appengine/docs/python/gettingstartedpython27
GAEにないライブラリを使う: https://cloud.google.com/appengine/docs/python/tools/libraries27
Flaskのチュートリアル: http://a2c.bitbucket.org/flask/quickstart.html
Googleのドキュメントが英語しかなくてつらい。