はじめに
Djangoを使ってWebアプリを作ったなら、公開しない手はないです。
公開する方法として、Herokuが広く知られています。
Herokuを使ってアプリを公開(デプロイ)するためのチュートリアルも用意されているので、基本的なことは理解できました。
しかし、設定を進めるとつまづくポイントがいくつかありました。
そして、つまづいたポイントについてググると新しいものから古いものまで様々な情報があらわれます。
どれが正しいのかトライ・アンド・エラーを繰り返し、情報の取捨選択に多くの時間を割きました。
ということで、本記事から数回にわたってHerokuの設定を私なりにまとることにしました。
なお、ローカル環境で開発したアプリがあることが前提で、ローカル環境は以前書いたこちらの内容を踏襲しています。 hirologue.hateblo.jp
注意事項
※ Herokuの無料枠は2022年11月に廃止されています(利用の際には、最低でも$5/月の料金が発生します)。
本シリーズ(Herokuものがたり)ではアドオンのHeroku Postgres($5/月)を使用しているので、月額$10となります。
デプロイのための準備
まずは、こちらを参考にHerokuアカウントの作成とHeroku CLIをインストールします。
では、作成したDjangoプロジェクトのディレクトリに移動しましょう。
基本的な設定
Prockfileの準備
はじめに行うのは、Procfileという名前のファイルの作成です。
ターミナルで次のコマンドを入力すると目的のファイルが作成されます。
$ touch Prockfile
作成したProckfileを開き、次の内容を入力して保存します。
web: gunicorn config.wsgi
参考: Heroku のための Django アプリの設定 | Heroku Dev Center
runtime.txtの作成
Pythonのバージョンをローカル環境と本番環境で統一するためにruntime.txtを作成します。
先程と同様にターミナルでコマンドを入力してファイルを作成します。
$ touch runtime.txt
次に使用しているPythonのバージョンを出力してみましょう。
こちらもターミナルで操作します。
$ python --version
実行すると、次のようにバージョンが出力されます。
Python 3.12.7
これをruntime.txtにそのままコピペするとエラーになりますので、注意してください。
runtime.txtを開き、次のように記述して保存します。
# 使用するバージョンに合わせてください python-3.12.7
注意すべき点は3つあります。
参考: Python ランタイムの指定 | Heroku Dev Center
requirements.txtに必要なパッケージを追記
dockerで環境構築をした際に作成したrequirements.txtには、Djangoのバージョンやdjango-environ、psycopgが記述されています。
ここに必要なパッケージを追記して保存します。
gunicorn==23.0.0 # 静的ファイルを取り扱う場合に必要 whitenoise==6.7.0 # 画像を扱う場合に必要 pillow==10.4.0 #画像をアップロードする場合に必要 django-cloudinary-storage==0.3.0
参考: Heroku での Python および Django アプリのデプロイ | Heroku Dev Center
アプリの作成
Herokuでソースコードを受け取るために次のコマンドを入力して、アプリを作成します。
$ heroku create
実行すると、このような感じで出力されます。
$ heroku create Creating app... done, ⬢ serene-caverns-82714 https://serene-caverns-82714.herokuapp.com/ | https://git.heroku.com/serene-caverns-82714.git
このserene-caverns-82714
というのが、Herokuで作成されたランダムな名前のアプリ名です。
アプリの作成とともに、heroku
という名前のGitのリモートリポジトリも作成されます。
つまり、このリモートリポジトリにプッシュすることで、Herokuにデプロイしているのです。
では、さっそくgit push heroku main
とコマンドを入力してデプロイ!
と行きたいところですが、はやる気持ちをぐっと堪えましょう。
必要な設定はこんなもんじゃありません。
この続きは次回の記事で説明します。
いかがだったでしょうか?
今回から数回にわたって、Herokuの設定について取り扱います。
わたしがこの記事を作成しようと思ったのは、備忘録的な意味合いもありますが、同じような苦労をしている方の一助になればという思いもあります。
ぜひとも次の記事をお楽しみに!
では✋️