Google App Engine スタンダード環境に Python3 + Django をデプロイします。
Google App Engine は Google が提供する PaaS です。開発者はサーバ構築やセキュリティパッチ適用などの運用を意識することなく、プログラムや Web サービスに注力することができます。私は今までずっとオンプレで IaaS をやってきたので、PaaS の便利さに驚きと感動の連続です。みなさんにもこの感動を是非とも味わって欲しいです。
バージョン
- Python 3.7
- Django 2.2.1
インストール
Cloud SDK のインストール
Google Cloud で開発をするために、Cloud SDK が必要になります。
Cloud SDK をこちらからダウンロードし、手順に従ってインストールします。私の環境は MacOS 64 ビットですので、MacOS 64 ビットの tar をダウンロード、解凍し、以下のようにインストールしました。
cd google-cloud-sdk/ ./install.sh # ターミナルを再起動 gcloud init gcloud components update
Python3 仮想環境のインストール
次に、Python3 の仮想環境をインストールし、アクティベートします。私の場合、Python3 は Homebrew でインストール済みです。
python3 -m venv venv source venv/bin/activate
Django のインストール
次は Django を Python3 の仮想環境にインストールします。
pip install django
実装
それでは実装していきたいと思いますが、今回は App Engine へのデプロイが目的のため、特に実装はせず、必要最低限の設定のみとします。
Django プロジェクトのインストール
ますは startproject で Django プロジェクトをインストールします。
django-admin startproject hello_gae
settings.py
Django プロジェクトをインストールしたら、settings.py の ALLOWED_HOSTS を以下のように修正します。アクセスをどこからでも受け付けるようにするお決まりの設定ですね。
... ALLOWED_HOSTS = ['*'] ...
app.yaml
app.yaml です。このファイルは App Engine の設定ファイルとなっていて、アプリケーションのバージョンやインスタンスクラス、スケールタイプ、URL のマッピングなどを設定します。
runtime: python37 handlers: - url: /static static_dir: static/ - url: /.* script: auto
App Engine スタンダード Python3 は script: auto しか指定できない
App Engine スタンダード Python3 では、url /.* の script に auto しか設定できないようです。auto 以外を設定するとエラーになりますの気をつけてください。
Google App Engine Python: Error in yaml config file when deploying
main.py
main.py は App Engine の入り口になるファイルです。
from hello_gae.wsgi import application app = application
requirements.txt
requirements.txt に必要なライブラリをリストします。
Django==2.2.1
デプロイ
用意ができましたので、デプロイをしていきましょう。
Google アカウントの認証と承認
デプロイは gcloud コマンドを使いますが、実行するには、事前に Google アカウントの認証と承認が必要になりますので、以下のコマンドを実行します。Cloud SDK が Google アカウントでの認証と承認を要求します。
gcloud auth login
Google Cloud Platform プロジェクト作成
次は、プロジェクトを作成します。プロジェクトは好きな名前をつけてください。
gcloud projects create python3-std-django gcloud config set project python3-std-django
デプロイ
デプロイの準備ができましたので、以下のコマンドを実行し、Django をデプロイします。
gcloud app deploy
デプロイに成功すると、https://[プロジェクト名].appspot.com にアクセスできるようになります。
https://python3-std-django.appspot.com
Cloud Build API
gcloud でデプロイするには Cloud Build API を有効にする必要があります。
デフォルトでは無効になっているので、gcloud app deploy を初めて実行すると以下のエラーが出ると思います。
以下のエラーが出たら、エラーメッセージに記載のある URL にアクセスし、API を有効にしてください。
まとめ
Google App Engine スタンダード環境に Python3 + Django をデプロイしました。
App Engine を利用することで、プログラマはサーバを意識する必要がなくなるため、とても幸せになれます。また、デプロイ方法もとても簡単で、gcloud コマンドを数回実行するだけです。