0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[初学者] DjangoアプリをGAEにデプロイ (前編)

Posted at

前置き

Python2は少し触ったことがありますが、Python3を何か作りながら学習したいと思い始めた作業の記録です。
前編は、Djangoプロジェクトを作成しGAEにデプロイするところまでです。
Djangoにアプリ機能を実装するところはまた後日やりたいと思います。

(今後)やりたいこと

  • Python3でWebアプリを作る
  • GAEを使ってみる 
  • Bigqueryを使ってみる
  • スクレイピングアプリの実装
  • Plotly等でデータをかっこよく表示

インストールしておくもの

  • django
  • gcloud
  • gunicorn
  1. Djangoの準備
  2. デプロイのための準備
  3. デプロイ

1. Djangoの準備

(一応)venvの設定

$ python -m venv venv         # venvという名称の仮想環境を作成
$ source venv/bin/activate    # venvをactivateするとき
(venv)$ deactivate            # deactivateするとき

w

django プロジェクト作成

$ django-amin startproject <プロジェクト名>

今回は、プロジェクト名をblogprojectとしている。

サーバーを起動してみる

その前に、

<プロジェクト名>/settings.py
ALLOWED_HOSTS = ['*']       # 元は[]

に変更すると、ブラウザからアクセスできるようになる。

$ python manage.py runserver

これでサーバー起動して、http://127.0.0.1:8000/へアクセスすると、
RailsのYay!的な画面とロケットのイラストが出てきます。停止するにはCtrl-C

Topページを作る

manage.pyと同じ階層にtemplatesフォルダを作成し、その中にtop.htmlを作成。
今回htmlの中身はテキトー。
次にこのtop.htmlを表示させるためのパスを通します。

djangoの汎用view(TemplateView)を使うために以下のラインを追加する。

blogproject/blogproject/urls.py
from django.views.generic import TemplateView                            # コレと

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', TemplateView.as_view(template_name="top.html"), name='top') # コレ
]

このtemplateフォルダとtop.htmlは勝手に作ったので、それぞれのパスを設定します。
場所はsettings.pyの中の(おそらく)54行目のTEMPLATES内の'DIRS'というところ。

settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],      # ←ココ
        'APP_DIRS': True,

BASE_DIRsettings.pyの上の方ですでに定義されているもので、
プロジェクトフォルダのパスが示されている。

$ python manage.py runserver

もう一度サーバーを起動して、top.htmlが表示されることを確認!

image.png
rootにアクセスしてtop.htmlが表示されることが確認できました〜

#######################################################

2. デプロイのための準備

2.1 app.yml

GAEに「djangoのアプリをデプロイしますよ〜」という内容を伝えるために、設定をします。
まず、app.ymlというファイルをmanage.pyと同じ階層に作成します。
https://cloud.google.com/appengine/docs/standard/python3/runtimeを参考にします。

app.yml
runtime: python37
entrypoint: gunicorn -b :$PORT blogproject.wsgi:application

handlers:
    url: .*
    script: auto    # アクセスできるurl等の設定はGAEにお任せしますmm

2.2 requirements.txt

manage.pyの階層へ移動して、

$ pip freeze > requirements.txt
$ cat requirements.txt 
asgiref==3.2.7
Django==3.0.5
gunicorn==20.0.4
pytz==2019.3
sqlparse==0.3.1

GAEに「djangoとかのバージョンはコレでお願いします!」と伝えるファイルを作成。

2.3 gcloud 認証

$ gcloud auth login

これでブラウザに勝手に移動するので、そこで自分のGoogleアカウントにログインする。

まずはhttps://console.cloud.google.com/へ行き、
自分のGoogleアカウントでログインします。

2.4 Google上の自分のプロジェクトIDを確認

プロジェクトの選択画面より、プロジェクト名とその後の数字をコピーしておく

image.png

image.png

#######################################################

3. (やっと)デプロイ

$ gcloud app deploy --project blogapp-000000

途中、以下を選択する(デプロイ先が日本の場合)

 [2] asia-northeast1 (supports standard and flexible)

デプロイしたアプリを確認するには

$ gcloud app browse

とすると、ブラウザが立ち上がりデプロイしたページが表示されます。

これでひと段落!

前編はこれで終わりです。

参考:GAEにDjangoアプリをデプロイしてみよう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?