HerokuにDjangoプロジェクトをデプロイした時の手順とつまずいたポイントの紹介

▼この記事をSNSでシェアする▼

スポンサーリンク

スポンサーリンク

けっこうつまずきました・・・

Djangoチュートリアルを参考にローカルでぼくはプロジェクトを作成していたんですけど、ネットで紹介されている手順は仮想実行環境をつくってデプロイしているものばかりでした。見よう見まねでやってはいたのですが、うまくいきませんでした。

参考にした記事:Python Djangoでherokuにデプロイしてみた

もうネットで紹介されているものと環境を揃えてやろうと思い、試したらなんとかデプロイとページの描画に成功しました・・・めちゃ達成感ありましたw

今回はそのときの手順とつまずいた点をのこしていきます。

※理解が甘く、恐縮ですが、何かの助けになれば幸いです。

1. 利用している環境

おさらいしておきましょう。

Mac OS High Sierra10.13.6に下記のものを利用しています。

DjangoのDocumentに沿って初期セットアップした状態を想定しています。

チュートリアル(Django Document)

  • Atom(テキストエディタ+ターミナル付き)
  • Homebrew(パッケージマネージャ)
  • Python3(version 3.7.0)と主要なライブラリ(numpy,matplotlib,scipy,pandas)
  • Bootstrap 4.1.1を適用しています。
  • 作成中のjinromuraアプリにはtemplateのindex.html(ListView)とdetail.html(detail.view)を汎用ビューで作成しています。
  • 仮想環境未構築
  • GitHubアカウント作成・連携済:ローカル環境でのGitも利用可能な状態

→ここだけDjangoのDocumentにはありませんがGitHubとHerokuの連携を用いて今回デプロイを進めるので設定を行いましょう。

Werewolfsiteというプロジェクト内にjinromuraというアプリを作成し、DB(SQLLITE)のマイグレーションとデータの格納と参照ができる状態です。

2. 仮想環境(venv)の作成

Python3 で用意されているvenvというモジュールをインストールします。

こんな感じでenvというフォルダが作成されていて、実行環境を構成するファイル群があります。ライブラリファイルにアプリに必要なモジュールがあり、環境を移動する際にrequirements.txtに必要なモジュールを書き出す必要があります。(後述)

venvの環境を無効化したいときは下のコマンドを実行しましょう。

3. パッケージ最新化

pipとDjangoを最新化しておきましょう。

「pip list」のコマンドを実行すると、こんな感じで確認できます。「pip3 list」でもうまくい区場合があります。(ぼくはうまくいきました)

Package Version
————— ——-
Django 2.1.2
gunicorn 19.9.0
pip 18.0

・・・

表示がpipなので、「pip list」のほうがいいかと思います。

4. Herokuに必要なモジュールのインストール

デプロイにあたり、Herokuの環境での稼働に必要なモジュールを追加します。

Django Documentでのセットアップで足りないものは以下のモジュールでした。

  • psycopg2:Heroku環境のPostgreSQLDBに接続するために必要なドライバ
  • dj_database_url:DB(データベース)の接続情報の管理に必要なモジュール
  • gunicorn:heroku上で実行するコマンドを定義するファイル(Procfile)の作成に必要なモジュール
  • dj-static:WSGIサーバの設定に必要なモジュール

→説明が拙くて申し訳ないのですが、あくまでざっくりとしたイメージを掴むためのヒント程度に捉えてください。

下記コマンドでインストールします。

5. Herokuのアカウント・CLI設定

5.1. アカウント設定

下記URLからアカウント作成

https://jp.heroku.com/

アカウントがある人は右上からログインすると、アプリの一覧やアカウントのステータスがわかります。

5.2 Heroku CLIの設定

プロジェクトの直下のディレクトリで下記コマンドを実行

Herokuコマンドが使えるようになったので、作成しているプロジェクトの直下のディレクトリで下記のコマンドを実行することで、Heroku上にアプリを作成します。

「heroku apps」を実行すると、こんな感じで確認できます。

CLI

GUI

アプリの削除はGUIでもSettingタブのした方からDeleteをクリックするとできます。

CLIで実行する場合は下記コマンドを実行します。

–confirm を省くとアプリ名の入力を求められます。(GUI同様)

6. Herokuでつかうための設定

6.1 settings.py

(プロジェクト名)/settings.py

ホスト設定の変更

末尾にDB設定の追記

6.2 wsgi.py

(プロジェクト名)/wsgi.pyを下記の通り編集します。

この設定ファイルは、WebサーバとWebアプリケーションの接続における標準化されたインタフェースを定義しています。

「.settings」の前に設定するのはアプリ名ではなく、プロジェクト名なので注意!

僕は間違えていたのでデプロイ成功したのにアプリ表示されなくて、苦しみました・・・

7. デプロイに必要な設定ファイル作成

Procfileの作成

Pythonのバージョン情報ファイルを作成

Herokuで使用したいモジュールの情報ファイルを作成

8. デプロイとアプリの最終設定

プロジェクトのディレクトリ直下にてコマンドを実行

heroku環境でPostgresSQLDB対してマイグレーションを行わないとデプロイはうまくいきません。

マイグレーションがうまくいったらいよいよデプロイ。

デプロイに成功するとこんな風に出力されます。

アプリを表示します。

成功!!(歓喜)

Herokuでは管理者やDBのデータの準備ができていないので、管理者を作成します。

https://(アプリ名).com/adminにアクセスし、DBにデータを入れたりユーザー管理をして本番環境の設定を完了し、いよいよアプリのリリース完了になります。

9. 再デプロイするの注意

アプリを修正する際も7・8の操作を再度行います。

その際追加のモジュールがあれば、7の操作をしないとNoModuleErrorとかが出ると思います。

10. デプロイ後記述

デプロイを振り返ると、4・6.2・7のところで不備があり、つまづいたことが多かったです。

Djangoの環境とHerokuの環境ではDBなど環境が異なるので、そこを考慮したモジュールの用意や設定の変更が必要です。

今回デプロイしたWebアプリケーション:jinromura(人狼村構成検索アプリ)

スポンサーリンク

▼この記事をSNSでシェアする▼

フォローする

メニュー・主な記事カテゴリ

おすすめ特集!




「ゆとり鳥日記」について
ITを中心に関心の赴くままに好きなように書いていく雑記ブログ!管理人が二人います。
◆フクロウ(19卒就活生)
◆トンビ(社会人1年目SE)

詳しいプロフィール
お仕事の依頼・ご要望

ゆとり鳥日記をBTCで応援する