今回はGoogle App Engine上にDjangoで作成したアプリをデプロイするところまでをやってみたいと思います。
Google App Engineとは?
Google App Engine(以下GAE)とは作成したアプリを簡単に公開できるサービスで、いわゆる「PaaS(Platform as a Service)」に分類されます。
使用できる言語も増えてきており、Pythonも対応しています。
公式ページ
cloud.google.com
今回はDjangoでアプリまで作成し、GAE上にデプロイするところまでやってみます。
前提としてGoocle Cloud Platformのアカウント登録・新規プロジェクトの作成は済ませているものとします。
①Python環境の作成
公式HPよりPythonインストーラをダウンロードし、インストールします。
インストールする際には必ず [PATH に Python を追加]をチェックしてください。
今回はPython3系をインストールしました。
インストールが完了したら、コンソールを立ち上げ仮想環境構築用のモジュールをインストールします。
pip install --upgrade virtualenv
次に仮想環境を作成します。
virtualenv --python "python.exeへのフルパス" 仮想環境名
仮想環境が作成されたら、作成した仮想環境を有効化します。
\仮想環境名\Scripts\activate
ここまででPython環境・仮想環境の構築が完了しました。この作業を行うことで、ほかのプロジェクトに影響を受けずにアプリ開発を行うことができます。
②Cloud SDKのインストール
公式HPよりCloud SDKをインストールしてきます。
またPython用Cloud クライアントライブラリもインストールしておきます。
pip install --upgrade google-cloud-storage
③Cloud SQL Proxyのダウンロード
以下のURLを右クリックして「名前つけてリンク先を保存」します。
名前は「cloud_sql_proxy」にしておいてください
https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe
④Cloud SQL インスタンスの作成
以下のリンク参照しながらCloud SQLの第2世代インスタンスを作成していきます
1. インスタンス作成をクリック
2.「MySQL」を選択して「次へ」
3.「第2世代を選択」をクリック
4. 名前・パスワードをクリック
5. インスタンスのリージョン設定(プロジェクトと一緒でOK,東京なら「asia-northeast1」
6. ゾーンはそのままでOK
次にコンソールでの作業に移ります
コンソールで以下を実行
gcloud sql instances describe [YOUR_INSTANCE_NAME]
→出力された [CONNECTION_NAME] をメモしておく
[CONNECTION_NAME] の値は、[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] の形式になっています
次にCloudSQLProxyをインストールしたディレクトリに移動し
cloud_sql_proxy.exe -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
を実行
[YOUR_INSTANCE_CONNECTION_NAME]は先程メモした[CONNECTION_NAME]の値に書き換え
※An attempt was made to access a socket in a way forbidden by its access permissions.みたいなエラーが出たら3307に書き換えたらできるかも
「Ready for new connections」と出てきたら、このコンソールはローカルでアプリのテストが完了するまでそのままにしておく
→ここからはもう一つコンソールを開いてそちらで作業していきます
⑤Djangoアプリの作成
別のコンソールを開いたらまず仮想環境の有効化を行います。
.\環境名\Scripts\activate
Djangoのインストール
pip install django
プロジェクトの作成
django-admin startproject プロジェクト名
アプリの作成
cd プロジェクト名 python manage.py startapp アプリ名
アプリ作成まで完了したら
python manage.py runserver
で試しに起動してみます。
無事に起動ができたら、以下のコマンドでGAEへデプロイすることができます。
requirements.txtの作成
pip freeze > requirements.txt
gcloud app deploy