ことりのえさば

ひよっこエンジニアがつらつらと書き綴るブログです。記事の内容に責任は負えませんのでご容赦ください。

GoogleAppEngineでDjangoが動くまで

Qiitaにもほぼ同じ内容の記事を投稿しています。

qiita.com

はじめに

職場で雑談してたら、なんかbot作りたくなった。 そうだ、GoogleAppEngineを使ってみよう。 という訳で、GoogleAppEngineでDjangoのテストプロジェクトを動かすまでのメモを残します。

環境

今回はPython3系を使いたいのでFlexible Environmentを使います。

Flexible Environment

現在betaですが、Python3.4を使いたいならこれ。 他にも、Standard Environmentでは外部ライブラリをインストールする時に一工夫必要でしたが、Flexible Environmentではルートディレクトリにrequirements.txtを置いておけばOKだったり、色々便利になっているようです。

参考:https://cloud.google.com/appengine/docs/flexible/python/using-python-libraries?hl=ja

deployする時にちらっとDockerfileが見えるので、内部的にはDockerのコンテナを作っている模様。

【追記】 Flexible Environmentでは現時点では無料枠がないのでご注意ください。

https://cloud.google.com/appengine/pricing?hl=ja

GoogleCloudSDKのインストール

GoogleCloudSDKって何

gcloud app deploy

という魔法の呪文を使えるようにするためのツール。 他にも諸々用途はあるらしいけど特に調べてない。

インストール

https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu?hl=ja

基本的には上記URLに書いてあるコマンドを入力していけばOK。

GoogleAppEngineの準備

GoogleCloudPlatformのコンソールからの準備

プロジェクトを作る→AppEngineをセットアップするだけなので割愛。

サンプルプロジェクトをダウンロードする

https://cloud.google.com/appengine/docs/flexible/python/quickstart?hl=ja の途中に書いてある通り、gitからcloneする。

git clone https://github.com/GoogleCloudPlatform/python-docs-samples

cloneした中に、

python-docs-samples/appengine/flexible/hello_world_django

というディレクトリがあるので、これを適当なところにコピーして使う。

ローカルで動かしてみる

hello_world_djangoディレクトリに入り、

virtualenv venv --python=/usr/bin/python3.4
source venv/bin/activate
pip install -r requirements.txt

で環境を作り、

python manage.py runserver --settings=project_name.settings

もしくは

gunicorn project_name.wsgi:application --env DJANGO_SETTINGS_MODULE=project_name.settings

で動かしてみる。

一点注意として、(現時点では)requirements.txtに書かれているDjangoのバージョンが1.10b1なので、気になる場合は随時変更する。

deployして動かしてみる

hello_world_djangoディレクトリで、

gcloud app deploy

で、appengineにdeployされる。 結構時間がかかりますので、待ちましょう。