前置き
Python2は少し触ったことがありますが、Python3を何か作りながら学習したいと思い始めた作業の記録です。
前編は、Djangoプロジェクトを作成しGAEにデプロイするところまでです。
Djangoにアプリ機能を実装するところはまた後日やりたいと思います。
(今後)やりたいこと
- Python3でWebアプリを作る
- GAEを使ってみる
- Bigqueryを使ってみる
- スクレイピングアプリの実装
- Plotly等でデータをかっこよく表示
インストールしておくもの
- django
- gcloud
- gunicorn
1. Djangoの準備
(一応)venvの設定
$ python -m venv venv # venvという名称の仮想環境を作成
$ source venv/bin/activate # venvをactivateするとき
(venv)$ deactivate # deactivateするとき
w
django プロジェクト作成
$ django-amin startproject <プロジェクト名>
今回は、プロジェクト名をblogproject
としている。
サーバーを起動してみる
その前に、
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)を使うために以下のラインを追加する。
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'というところ。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # ←ココ
'APP_DIRS': True,
BASE_DIR
はsettings.py
の上の方ですでに定義されているもので、
プロジェクトフォルダのパスが示されている。
$ python manage.py runserver
もう一度サーバーを起動して、top.htmlが表示されることを確認!
rootにアクセスしてtop.html
が表示されることが確認できました〜
#######################################################
2. デプロイのための準備
2.1 app.yml
GAEに「djangoのアプリをデプロイしますよ〜」という内容を伝えるために、設定をします。
まず、app.yml
というファイルをmanage.py
と同じ階層に作成します。
https://cloud.google.com/appengine/docs/standard/python3/runtimeを参考にします。
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を確認
プロジェクトの選択画面より、プロジェクト名とその後の数字をコピーしておく
#######################################################
3. (やっと)デプロイ
$ gcloud app deploy --project blogapp-000000
途中、以下を選択する(デプロイ先が日本の場合)
[2] asia-northeast1 (supports standard and flexible)
デプロイしたアプリを確認するには
$ gcloud app browse
とすると、ブラウザが立ち上がりデプロイしたページが表示されます。
これでひと段落!
前編はこれで終わりです。