本記事はDjangoアプリをGAEにデプロイするため必要なファイルや設定を解説していきます。
バージョンは以下の通りです。
以下、前準備として必要最低限揃っている前提です。
まず始めにデプロイ先であるGCP上にプロジェクトを作成していきます。
本記事では gae-django という名前で作成し、
個人なので、場所は「組織なし」で問題ありません。
クライアントPCからGCPにデプロイするために、Cloud SDKが必要です。 下記のサイトでインストールしましょう。
GCPのサービスを使う上でCloud Build APIを有効にする設定が必要になります。
ダッシュボードの検索欄に「Cloud Build API」と入力し、
検索結果画面で「有効」ボタンを押下します。
次はDjango側の設定に移りますが、その前に 今回デプロイするDjangoアプリを紹介します。
デプロイが目的なので、細かな説明は割愛します。
今回は以下の機能を持つシンプルな掲示板アプリを作りました。
.
├── Pipfile
├── Pipfile.lock
└── gae_django
├── board
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── db.sqlite3
├── gae_django
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── static
│ └── board
│ └── css
│ └── style.css
└── templates
├── base.html
└── board
├── post_create.html
└── post_list.html
① 投稿記事一覧画面
② 投稿記事作成画面
・urls.py
from django.urls import path
from board.views import PostCreateView, PostListView
app_name = 'board'
urlpatterns = [
path('', PostListView.as_view(), name='index'),
path('create/', PostCreateView.as_view(), name='create'),
]
・ models.py
from django.db import models
from django.urls import reverse
class Post(models.Model):
title = models.CharField(max_length=255, blank=False)
detail = models.TextField(blank=False)
def get_absolute_url(self):
return reverse('board:index')
・ views.py
from django.views import generic
from board.forms import PostForm
from board.models import Post
class PostListView(generic.ListView):
template_name = 'board/post_list.html'
model = Post
context_object_name = 'posts'
class PostCreateView(generic.CreateView):
template_name = 'board/post_create.html'
model = Post
form_class = PostForm
・ forms.py
from django import forms
from board.models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('title', 'detail')
次に上記のアプリをGAEにデプロイするための準備を行います。
GAE側にどの言語でどこをエンドポイントで動かすのかなどを 教えるためのファイルを作成します。 Djangoプロジェクトの直下に作成しましょう。
runtime: python37
entrypoint: gunicorn -b :$PORT gae_django.wsgi:application
handlers:
- url: /static
static_dir: staticfiles/
- url: .*
script: auto
gunicornを使っているのでインストールをします。
pipenv install gunicorn
GAEは言語にPythonを使っている場合に、requirements.txtを探し出し、パッケージをインストールしてくれます。 これもDjangoプロジェクトの直下に作成しましょう。
pipenv lock -r > requirements.txt
settings.pyにGAE上で動かすための設定を加えていきます。
ALLOWED_HOSTS = ['*']
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
先にstaticファイルを1箇所にまとめておきましょう。
pipenv run python manage.py collectstatic
ここまで準備したらGAE上にデプロイしてみましょう。 次のコマンドを打ってブラウザにアクセスしてみます。
gcloud app deploy --project=gae-django-253212
リージョンを聞かれるので、asia-northeast1を選びましょう。
Please choose the region where you want your App Engine application
located:
[1] asia-east2 (supports standard and flexible)
[2] asia-northeast1 (supports standard and flexible)
[3] asia-northeast2 (supports standard and flexible)
[4] asia-south1 (supports standard and flexible)
[5] australia-southeast1 (supports standard and flexible)
[6] europe-west (supports standard and flexible)
[7] europe-west2 (supports standard and flexible)
[8] europe-west3 (supports standard and flexible)
[9] europe-west6 (supports standard and flexible)
[10] northamerica-northeast1 (supports standard and flexible)
[11] southamerica-east1 (supports standard and flexible)
[12] us-central (supports standard and flexible)
[13] us-east1 (supports standard and flexible)
[14] us-east4 (supports standard and flexible)
[15] us-west2 (supports standard and flexible)
[16] cancel
Please enter your numeric choice: 2
「Do you want to continue」と聞かれたらYを入力。
下記のメッセージが表示されたらデプロイ完了です。
Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 1 file to Google Cloud Storage ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://gae-django-253212.appspot.com]
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 --project=gae-django-253212
実施にブラウザで確認してみましょう。
gcloud app browse --project=gae-django-253212
無事にデプロイできました。
次はCloud SQLを使ったデータベースの設定を行って行きます。