本記事では「初めてのDjango」(入門編)として、初めてDjangoというフレームワークを使用してWebアプリケーションを作ってみたい!という方向けに、簡単なアプリケーションを作成しながら基本的な知識をご紹介していきます。
・DjangoのアプリケーションをGCPにデプロイしたい!
本記事は連作になっております。
- (入門編 #01)単一ページのアプリケーション作成まで
- (入門編 #02)CSSの適用からベーステンプレートの作成まで
- (入門編 #03)コンテキスト情報とテンプレートタグの活用
- (入門編 #04)お問い合わせフォームの設置、メール送信処理まで
- (入門編 #05)お問い合わせ送信後にメッセージを表示させる
- (入門編 #06)アプリケーションをGAEにデプロイ ←イマココ
- (発展編 #01)データベースの設定を行う
- (発展編 #02)カスタムユーザーモデルの定義、マイグレーション
- (発展編 #03)django-allauthで認証機能を実装する
- (発展編 #04)ListViewを用いてモデル情報を描写する
- (発展編 #05)CreateViewを使用してデータベースを更新
- (発展編 #06)DetailViewを用いて詳細表示
- (発展編 #07)UpdateViewを用いてデータベース編集
- (発展編 #08)DeleteViewを用いてデータベースのレコード削除
本記事単体でもデプロイ方法を学ぶことができます。
GAEとは?
アプリケーションをデプロイする前に、そもそもGAEって何でしょうか?
GAE(Google App Engine)とはGCP(Google Cloud Platform)のサービスの一つで、簡単にWebアプリケーションを公開することができるプラットフォームです。
他にもWebアプリケーションをホスティングするプラットフォームとして、AmazonによるAWSなんかが挙げられます。
詳しくはこちらの記事なんかが分かりやすいのではないでしょうか。
GCPプロジェクトの作成
では実際にWebアプリケーションをデプロイする方法をご紹介していきます!
GCPへの登録
まずこちらにアクセスし、GCPへの登録を行います。
すでに登録が完了している方は飛ばしてください。
「無料で使ってみる」をクリックし、下記の情報を入力すれば登録できます。
- 国と通貨
- 口座の種類(ビジネス or 個人)
- 名前、住所
- お支払い方法
- 使用言語
初めて登録する場合、90日有効の $300 分のクレジットを使用することができます。これから実装する内容もこのクレジットで対応することができます。
クレジットを使い切ってしまったりした場合、次の手順から実際に費用が発生しますのでご注意ください。
GCPプロジェクトの作成
まずはアプリケーションをホスティングするGCP(Google Cloud Platform)にてプロジェクトを作成します。
こちらにアクセスし、左上の「プロジェクトの選択」をクリックします。
するとこのようにプロジェクト一覧が表示されます。右上の「新しいプロジェクト」をクリックしましょう。
「プロジェクト名」「場所」を入力する画面が表示されます。
- プロジェクト名:任意のプロジェクト名
- 場所:あれば組織を選択する。「組織なし」でもOK。
これらを入力し、「作成」ボタンを押してプロジェクトを作成しましょう。
作成後にもう一度左上の「プロジェクトを選択」をクリックすると、このように新規プロジェクトが作成されているのが確認できます。作成したプロジェクトをクリックし、プロジェクト内に移動しましょう!
GAEの開始
下記のように、検索欄に「App Engine」と入力します。
そして検索結果の中から「App Engine」をクリックしましょう。
「アプリケーションを作成」を押してGAEを開始します。
リージョン(地域)を選択するページが表示されます。東京リージョンである「asia-northeast1」を選択し、ページ下部の「次へ」を選択してください。
言語と環境を設定する画面に遷移します。それぞれ「Python」「標準」としておきましょう。
Google Cloud SDKのインストール
GAEへアプリケーションをデプロイするためには、GCPとコマンドラインで連携できる Google Cloud SDK というツールをインストールする必要があります。
Mac m1の場合ですが、こちらの記事なんかが分かりやすく紹介しておりますので引用させていただきます。
記事のタイトルにもあるように、ターミナルで gcloudコマンドが使えるようになればOKです!
他のOSの場合などは適宜調べていただけたらと思います。
この辺の環境構築は時間がかかりますね、、、。
デプロイ
app.yamlの作成
GAEにWebアプリケーションをデプロイするためには、app.yaml というファイルを作成する必要があります。
プロジェクトのルートディレクトリ(manage.pyがあるとこ)に新規作成しましょう。
app.yaml を下記のように編集します。
# インストールされているバージョンによって
runtime: python38
handlers:
- url: /static
static_dir: static/
- url: /.*
script: auto
# SSLで常時接続させる場合はコメントアウトを外す
# secure: alwayss
entrypoint: gunicorn -b :$PORT cafe.wsgi:application
- runtime
-
使用する言語環境に合わせて変更してください。
- entrypoint
-
本番環境において起点となる場所を指定します。Djangoでは wsgi.py内の application を起点としますので、上記のように記述します。
- handlers
-
URLに関する記述の設定を行います。
その他の詳細設定についてはこちらをご覧ください。
gunicornのインストール
app.yaml の entrypoint ででてきた gunicorn を使用するために、インストールする必要がります。アプリケーションを開発していた仮想環境でインストールしましょう!
(venv_cafe)$ pip install gunicorn
requirements.txtの作成
GAEのサーバーに「このアプリケーションはどんなライブラリを使用しているか」を教えるために、requirements.txt というのを作成する必要があります。
ターミナルでプロジェクトのルートディレクトリに移動し、下記のコマンドを実行しましょう。
(venv_cafe)$ pip freeze > requirements.txt
するとこのようなファイルが作成されます。
インストールされているライブラリと、そのバージョンが記載されています。
今後開発していくうちに使用するライブラリが増えた場合は、その都度上記コマンドで requirements.txt を更新してください
settings.pyの修正
デバッグの切り替え
開発環境では、エラーが発生したらブラウザにて「どのコード部分でどんなエラーが発生したか」などが表示されておりました(デバッグ)。
しかし本番運用した後、すなわち誰もが利用できる状態でも上記の内容が表示されてしまうと、重要な情報などがリークしかねません。なので、本番運用時にはこの設定などを変更する必要があります。
# ... 略 ...
# SECURITY WARNING: don't run with debug turned on in production!
if os.getenv('GAE_APPLICATION', None):
# 本番環境
DEBUG = False
else:
# 開発環境
DEBUG = True
ALLOWED_HOSTS = ['*']
# ... 略 ...
if os.getenv(‘GAE_APPLICATION’, None) と記述することで、本番環境と開発環境とで設定を分岐させています。
また「DEBUG = True or False」とすることで、先ほど述べたデバッグを行うかどうかを選択することができます。
メールの配信先の設定
お問い合わせのメールの送信先がコンソールではなく、きちんとメールとして配信されるよう忘れずに設定しておきましょう!
# メール配信先の設定
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
プロジェクトの設定
ターミナル上で下記のコマンドを実行してください。
(venv_cafe)$ gcloud config list
するとこのようなメッセージが表示されます。
[core]
account = <アカウント名>
disable_usage_reporting = True
project = <プロジェクトID>
Your active configuration is: [default]
4行目に注目です。ここのプロジェクトIDが、デプロイしたいGCPのプロジェクトのIDになっているか確認してください。
ちなみに「gcloud projects list」コマンドで、自分のプロジェクト一覧が確認できます!
もし意図していないプロジェクトが設定されていたら、下記のコマンドでプロジェクトを変更しましょう。
(venv_cafe)$ gcloud config set project <プロジェクトID>
デプロイ
GAEにデプロイするための準備が整いました!
ターミナルにて下記のコマンドを実行します。
ターミナルにてプロジェクトのルートディレクトリに移動し、下記のコマンドを実行しましょう。
(venv_cafe)$ gcloud app deploy
「Do you want to continue (Y/n)?」と聞かれますので「y」と入力してエンターを押してください。するとデプロイが開始されます。
デプロイが完了すると下記のようなメッセージが表示されます。
File upload done.
Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [<デプロイされたサイトのURL>]
You can stream logs from the command line by running:
$ gcloud app logs tail -s default
To view your application in the web browser run:
$ gcloud app browse
4行目にホスティングされたURLが記載されています。そのURLをコピペするか、ターミナルで「gcloud app browse」とコマンドを叩くことでサイトに移動することができます。
きちんとデプロイできました!お疲れ様でした!
この時点でのコード全体をGithubに載せております。確認用としてお使いいただければと思います。
まとめ
本セクションでは、DjangoのアプリケーションをGAEにデプロイし、一般ユーザーが使用できる状態にするまでの流れを紹介させていただきました。
開発環境との違いや、デプロイするためにもそれなりの知識が必要なのがなんとなくお分かりいただけたのではないでしょうか。
もし本記事の「初めてのDjango」シリーズをご覧になってここまで来た方がおりましたら、本当にお疲れ様です。もしご不明な点や、もう少し詳しく解説してほしい箇所等ございましたらお気軽にコメントしてください!
ご覧いただきありがとうございました!
※次回からは発展編です!
コメント
コメント一覧 (11件)
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]
[…] このような画面に遷移します。ここでAPIを有効化するプロジェクトを選択します(プロジェクトの作成方法はこちらでご紹介しています)。 […]
[…] (入門編 #06)アプリケーションをGAEにデプロイ […]