見出し画像

Djangoで作る初めてのウェブアプリケーション(番外編)herokuデプロイ

本記事は、マガジン(『超入門』Djangoで作る初めてのウェブアプリケーション)で作成した、Djangoアプリを使用します。

今回は、ウェブアプリを簡単にデプロイ(世界に公開)できるPaaS(Platform as a Service)を使用します。

herokuは様々なPaaSの中の一つのサービスです。

herokuの準備

まだherokuアカウントを持っていない方は無料なのでこちらのリンクから作っておきましょう。

アカウントの作成が完了したら、Macのターミナルでherokuを操作できるようにするためにheroku toolbeltをターミナルでインストールしましょう。

スクリーンショット 2020-05-26 12.31.11

Homebrewのインストールはこちらの記事を確認ください。

ターミナルからherokuにログイン

heroku Toolbeltのインストールが完了したら、ターミナルからherokuに下のコマンドでログインします。

heroku login

emailとpasswordを求められたら、heroku新規登録時のemailとpassword入力して下のブラウザに移動するので真ん中Log inをクリックすれば完了です。

スクリーンショット 2020-05-26 12.37.58

これでheroku側の準備が整いました。

デプロイで必要なライブラリをインストール

Djangoには便利なライブラリdjango-herokuがあるのでこれを使います。

ターミナル下のコマンドを実行します。

pip install django-heroku

django-herokuは名前の通りherokuにデプロイするために必要なライブラリが全てパッケージになっています。

続いて本番環境で使用するサーバーをインストールします。

今回はgunicornを使用します。

pip install gunicorn

これで必要なライブラリは揃いました。

デプロイに必要ファイルを作る

新たに作るファイルは、3つあります。

Procfile / runtime.txt / requirements.txt  

それぞれのファイルの作成場所と中身です。

Procfile / プロジェクトルートに作成します。使用するサーバーをherokuに知らせます。
web: gunicorn プロジェクト名.wsgi --log-file -
runtime.txt / プロジェクトルートに作成します。pythonのバージョンをherokuに知らせます。
python-3.7.6 (3.7.6は、あなたのpythonバージョン)
requirements.txt / プロジェクトルートに作成します。herokuにどのライブラリを使用しているのか知らせるために使います。

requirements.txtはターミナルで下のように実行します。

pip freeze > requirements.txt

このコマンドを実行する事でrequirements.txtを自動で作成します。その中に、現在入っている仮想環境でインストールしたライブラリを記述してくれます。

例として、このような感じになります。

スクリーンショット 2020-05-26 12.53.05

これで必要になるファイルは以上です。

settings.pyの編集

本番環境でのstaticassetsの読み込みを設定しよう。

settings.py


STATIC_URL = '/static/' #追加
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
 #画像などのメディアファイルがある場合
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

これでherokuにデプロイ後も、CSSや画像の読み込みも可能になりました。

続いて、一番上のimport osの一段下にimport django_herokuを記述します。

最後に一番下にdjango_heroku.settings(locals())を記述します。

settings.py

import os #追加
import django_heroku

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #省略
 #追加
django_heroku.settings(locals())

settings.pyの編集は以上です。

デプロイしよう

全ての準備が整いました。

最後にデプロイするのですが、git管理をしていない人はgit initから始めましょう。

既に行った人は、heroku上にリモートリポジトリを作り、変更点をaddして、commitしましょう。(git & githubの説明は割合します)

そしてpushします。

git init (既にinitしている人は必要なし)
heroku git:remote -a プロジェクト名
git add .
git commit -m "deploy"
git push heroku master​

pushに成功しても現段階ではエラーが出ると思います。

そこで最後に、本番環境で使用するデーターベースをマイグレートして、本番用のスーパーユーザーを作ります。

heroku run python manage.py migrate
heroku run python manage.py createsuperuser

以上でデプロイ完成です。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
あなたの人生が好転しますように(^_^)v
2
1988年(S63)生まれのTakuです。 自動車エンジニアを経験後、IT企業でRuby, Pythonエンジニアとしてウェブサービスの開発とプログラミング講師をして、 現在は実家に帰省して家業である工業刃物の研磨をしております。 趣味は音楽、コンピューター、読書、筋トレ!

こちらでもピックアップされています

『超入門』Djangoで作る初めてのウェブアプリケーション
『超入門』Djangoで作る初めてのウェブアプリケーション
  • 16本

Djangoフレームワーク初心者を対象に、Bootstrapを使用した簡単なデザインを装飾し、ウェブアプリの基本の「基」を学べる事ができます。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。