GAEでFlaskをするときの最初から

目標

GCPの無料範囲でFlaskでサービスを立ち上げる。その準備を一からやるときのメモ。

Pythonの環境を作る

専用のフォルダを作る。その下にwwwフォルダを作る。wwwがGAEに乗る感じ。ターミナルで移動して、pyenvで環境を作る。後日アクセスしても勝手に同じバージョンを使ってもらうようにpyenv localで指定する。

pyenv virtualenv 2.7.14 hogehoge
pyenv local hogehoge

GAEで無料なのは標準版。そして標準版で動くpythonは2.7(2019/2/5時点)なので、ローカルも2.7にしておく。(3.7があるようだけれど、Python3.7自体が相性がちょっと不安定な気がするので、それよりは2.7の方がいいかという消去法。)

ちょっと気をつけなきゃいけないことは、普通にpip installしないこと。pip installすると、自分のパソコンのvirtualenv内にライブラリがダウンロードされて実行できるようにはなるけど、GAEへアップロードして実行したら、ライブラリがないと言われてしまう。なので、次の方法で行う。

pip install -t ./lib flask

こうすることで、カレントディレクトリ以下にlibというフォルダができて、そこにライブラリがダウンロードされる。libもろともGAEへアップロードすれば、GAEでも無事動くというわけ。もし普通にpip installしてしまったのなら、環境を作り直した方がいい。忘れた頃にくだらないトラブルに巻き込まれる。

GCPの準備

新規のプロジェクトを作る。今あるプロジェクトに乗っかる方法もあるけど、3つの理由で新規プロジェクトを作った方がいい。1つ目は、権限とかファイルとか、混在してめんどくさい。2つ目は、もしも作った環境がいらなくなった場合に、GAE環境やら何か色々なものをプロジェクト単位で消すことができるように。3つ目は、GCPの課金が意図せず発生してしまったとき、原因を突き止めやすいように。一人でやる分には、主な目的は2つ目。

次にGAE環境を作る。GAEダッシュボードを開くと、チュートリアルやら新規作成ボタンみたいなのやらが並んでる。(もしCLOUD SDKをインストールしたことがないのなら、この最初のページにリンクがあるのでインストールする。)新規作成ボタンみたいのから、GAE環境を作る。LanguageはPython、Environmentは"標準"。"標準"は"スタンダード"とも書いてあるページもあるが同じ。"標準"でないのは"フレキシブル"。2択。

環境作成の流れの中で、Google製のHelloWorldへのリンクがあるからダウンロードして、wwwフォルダに入レル。ソースは3つ。app.yaml、main.py、main_test.py。

ターミナルでwwwへ移動し、SDKの初期化。

gcloud init

プロジェクトの設定を色々と聞かれるがままに選択していく。

終わったらApp Engineにデプロイ。

gcloud app deploy

どこに立てるか場所(リージョン)を聞かれる。おそらく東京リージョン(asia-northeast1)でも無料なので、速そうな東京にしておく。

Do you want to continue (Y/n)? と聞かれたら、Yで、しばらくしたらもうサーバーが起動している。GCPコンソールから、プロジェクトを選んでGAEのダッシュボードやらサービス、バージョンなどが動作していること、あと肝心なHelloWorldが出ていることを確認して、完了。

とりあえず動いたはずだけど、このままだと./libを見に行っていない。「appengine_config.py」というファイルをトップフォルダ内に作って、下記を書いておく。

from google.appengine.ext import vendor
vendor.add('lib')

詳しいことはこのあたりとかググったりして調べてください。

この記事が気に入ったらサポートをしてみませんか?