Hirologue

年齢を理由にエンジニアになることを諦めないミドルの成長記録

EP 24: Herokuものがたり 〜 準備編

はじめに

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 は小文字
  • pythonのあとに空白を入れずに、 -(ハイフン)でつなげる
  • バージョン番号は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の設定について取り扱います。
わたしがこの記事を作成しようと思ったのは、備忘録的な意味合いもありますが、同じような苦労をしている方の一助になればという思いもあります。

ぜひとも次の記事をお楽しみに!
では✋️