【初めてのDjango】(入門編 #06)アプリケーションをGAEにデプロイ

本記事では「初めてのDjango」(入門編)として、初めてDjangoというフレームワークを使用してWebアプリケーションを作ってみたい!という方向けに、簡単なアプリケーションを作成しながら基本的な知識をご紹介していきます。

こんな人にオススメ!

・DjangoのアプリケーションをGCPにデプロイしたい!

本記事は連作になっております。

本記事単体でもデプロイ方法を学ぶことができます。

目次

GAEとは?

アプリケーションをデプロイする前に、そもそもGAEって何でしょうか?

GAE(Google App Engine)とはGCP(Google Cloud Platform)のサービスの一つで、簡単にWebアプリケーションを公開することができるプラットフォームです。

他にもWebアプリケーションをホスティングするプラットフォームとして、AmazonによるAWSなんかが挙げられます。

詳しくはこちらの記事なんかが分かりやすいのではないでしょうか。

GCPプロジェクトの作成

では実際にWebアプリケーションをデプロイする方法をご紹介していきます!

GCPへの登録

まずこちらにアクセスし、GCPへの登録を行います。

すでに登録が完了している方は飛ばしてください。

「無料で使ってみる」をクリックし、下記の情報を入力すれば登録できます。

  1. 国と通貨
  2. 口座の種類(ビジネス or 個人)
  3. 名前、住所
  4. お支払い方法
  5. 使用言語

初めて登録する場合、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」シリーズをご覧になってここまで来た方がおりましたら、本当にお疲れ様です。もしご不明な点や、もう少し詳しく解説してほしい箇所等ございましたらお気軽にコメントしてください!

ご覧いただきありがとうございました!

※次回からは発展編です!

案件、ありますか?

「メインの仕事があるけれど、週1、2日だけできる仕事ないかな、、、」

「ある程度スキルが身に付いてはきたけど、そのスキルを活用できる場が欲しい」

なんて悩みが以前はありました。

自分で仕事を探しに行くのも大事ですが、蛇の道は蛇。その道の人に頼むことで、自分だけでは見つからないような案件に携わることができます。

IT PRO パートナーズでは、簡単に無料でアカウントを登録でき、さらにはエージェントさんに希望の働き方・案件の種類を提示することでお仕事を紹介してくれます!

登録自体も非常に簡単で、「エージェントさんとの面談を希望する」という欄にチェックをするだけで、エージェントさんから直接連絡をいただくことができます。

驚くほど簡単で正直拍子抜けしてしまいました笑

もしお仕事探しに困っておりましたら、一度登録し案件を眺めてみることをおすすめします!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

勤めていた設計会社を退社し、フリーランスとして活動しています
また、趣味で主にpyhonを用いて機械学習を行なっています!
現在競艇の予測モデルの開発中です。

コメント

コメント一覧 (11件)

コメントする

目次