寒い朝

コンピュータ系のことを書きます

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のドキュメントが英語しかなくてつらい。