LoginSignup
2
6

More than 3 years have passed since last update.

DjangoブログDeployまでの道 (1/2)

Last updated at Posted at 2019-05-10

こんにちは、ここでは初心者がDjangoで作成したブログもどきを
GoogleCloudPlatformにデプロイする過程を記録しています。

環境は以下となっています。

OS:Windows Python:3.6.8 Django:2.2.1

まずはDjangoでブログもどきの作成 

まずは、最小限の形を作りGAEへのデプロイを目指します。

今回はブログなのでファイル名を<ブログ>とし作成し移動します。

command
mkdir blog
cd blog

次に仮想環境の作成(今回はvenv)
そして仮想環境に入り込みます。

command
python -m venv venv
cd venv
Scripts\activate

そして仮想環境にDjangoをインストールします。

commmand
pip install django

次にプロジェクトの作成をして移動します。

command
django-admin startproject blogproject
cd blogproject

runserverした際のブラウザからの
ドメインアクセスを許可するためにsettin.pyを編集します。

settin.py
ALLOWED_HOSTS = ['*']

そしてサーバーを立ち上げます。

command
python manage.py runserver

一旦、一息
キャプチャ.PNG

次にGoogleCloudPlatformに飛び
https://console.cloud.google.com/start?hl=ja

アカウント登録を済まし、プロジェクトを作成から
blogappというプロジェクトを作成します。
image.png

その後、作成したプロジェクトを選択し、
左のメニューバーからApp Engineを選択します。
image.png

今後の作業にSDKが必要なため、右側のリンクからインストールしておきます。
image.png

次にトップページを作成します。

manage.pyがあるblogprojectにtemplatesフォルダを作成し、
index.htmlを作成します。

index.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>blogapp</title>
</head>
<body>
    <h1>blogapp</h1>
    <p>this is toppage</p>
</body>
</html>

次にurlからindexを表示できるようにします。

url.py
from django.contrib import admin
from django.urls import path 

from django.views.generic import TemplateView #追記    

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

次にtemplatesの場所を共有するにsetting.pyのTEMPLATESに追記します。

setting.py
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    #BASEDIRであるblogappファイル直下のtemplatesにあると共有

そして再度runserverを行います。

command
python manage.py runserver

キャプチャ2.PNG

アクセスすると、うまく表示できています。

ローカルからGAEへのデプロイに挑戦!

まずGAEでの使用に向けて、前回までに作成した大元のblogprojectの中に
app.yamlというファイルを作成します。

app.yaml
runtime: python37 #使用言語
entrypoint: gunicorn -b :$PORT blogproject.wsgi:application #wsgiまでのpath的な?

#デプロイした後にアクセスできるようにします。
handlers:
  - url: .*
    script: auto

gunicornを使用するためインストールし、
次にGAE側にもDjangoをインストールするために
app.yamlと同じ階層にrequirments.txtを作成します。

command
pip install gunicorn
pip freeze > requirements.txt

次にGcloudにログインするため以下を入力します。

command
gcloud auth login

そして、自分のプロジェクトidを確認し、接続するために以下を入力する。

command
gcloud app deploy --project <ここにproject-idを入れる>

choiseは何でも良いと思いますが2を選択します。
そして出てくる質問にyesを選択します。

アップロードができたかと思えばできなかったです。

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' 
in position 0: ordinal not in range(128)

unicodeをasciiからutf-8に統一する必要性がありそうです。
以下を参考にしました。

Google Cloud SDKのセットアップはどこまでWindowsユーザーを苦しめれば気が済むのか?

そして、再度実行しましたが、またエラーです。

Enable it by visiting https://console.developers.google.com/apis/api/cloudbuild.googleapis.com/overview

これは、無料トライアルに登録したら解決しました。
そして、ページに飛ぶと
image.png
エラー...

エラー内容を以下で確認します。

command
gcloud app logs tail --project=<プロジェクト名>

すると

command
/bin/sh: 1: exec: gunicorn: not found

あれ、gunicornはインストールしてるし、requirments.txtにも入ってるはず。

あ、requirments.txtになってました(汗)
requirements.txtに変更!

再度トライしますと...

image.png

オーマイガー!?

エラーチェックをします。

command
OSError: No translation files found for default language utf-8.

原因はsetting.pyのLANGAGE_CODEをutf-8にしてたことですね。
jaに設定して再度トライ!

image.png

はいはい、エラーはコードミスですかね?
探してみたところ全角スペースをしている部分がありましたので直しました。

そして再度トライ!

image.png

やった!
デプロイできました!

次回はGCPのデータベースに接続していきます。
https://qiita.com/k7daiki/items/a5f5e6711fe28366ed73

2
6
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
2
6