Herokuは、開発したアプリケーションを公開するためのクラウドプラットフォームです。サーバやインフラの管理はすべてHerokuが代行してくれるため、開発とデプロイだけに専念することができます。その他GitHubとの連携、豊富なアドオン、無料サービスなど、魅力的な機能がたくさんあります。アプリケーションを運用するなら、まずはHerokuがおすすめです。
Table of Contents
Djangoプロジェクトのセットアップ
パッケージのインストール
Herokuの推奨パッケージ、 Gunicorn
、 dj-database-url
、 Psycopg2
、 WhiteNoise
をインストールします。
(envname) > pipenv install gunicorn dj-database-url psycopg2 whitenoise
本番環境用設定ファイルの編集
まずは本番環境用の設定ファイルを作成します。
本番環境用設定ファイルに dj-database-url
の設定を追加します。さらに ALLOWED_HOSTS
にHerokuドメインを追加して、デプロイ後にアクセスできるようにしておきます。
共通設定ファイル base.py
に WhiteNoise
の設定を追加します。
INSTALLED_APPS
の一番上に whitenoise.runserver_nostatic
を追加。(開発環境でもWhiteNoiseを使用するための設定)
MIDDEDWARE
の SecurityMiddleware
の下に WhiteNoiseMiddleware
を追加。(静的ファイルの提供)
Static files
セクションに STATICFILES_STORAGE
を追加。(WhiteNoiseに付属するストレージバックエンドを使用して、圧縮とキャッシュを有効にする)
.gitignoreの作成
プロジェクトルートディレクトリに .gitignore
という名前のファイルを作成して、Gitの管理に含めないファイルやディレクトリを指定することができます。
gitignore.io という便利なサービスがあるので活用しましょう。プロジェクトの環境に合わせて無視リストを生成してくれます。
「Django」「Python」で検索して生成されたテンプレートをもとに作成した .gitignore
ファイルです。開発環境用の設定ファイルは必ず指定しましょう。静的ファイルとメディアファイルが収集されるディレクトリの指定も推奨されています。
その他ファイルの追加
プロジェクトルートに Procfile
、 runtime.txt
というファイルをそれぞれ作成し、以下のように記述します。 myproject
の部分は自分のプロジェクト名に置き換えましょう。
runtime.txt
には使用しているPythonのバージョンを指定します。
Gitのセットアップ
Gitのインストール
Gitのインストールおよび初期設定については、Git-Book(公式ドキュメント)を参考にすると良いです。
Gitリポジトリの作成
プロジェクトルートディレクトリに移動して、次のコマンドを実行します。
(envname) > git init
.git
という名前のディレクトリが作成されます。これで初期化は完了です。
myproject/
.git/
myapp/
myproject/
static/
staticfiles/
templates/
.gitignore
db.sqlite3
manage.py
Pipfile
Pipfile.lock
Procfile
runtime.txt
Herokuのセットアップ
Herokuアカウントの作成
まずは、Herokuのウェブサイトでアカウントを作成します。「新規登録」をクリックして、名前やメールアドレス等を入力するだけで簡単に作成できます。その後は指示に従い、メール認証、パスワードの設定をして完了です。
Heroku CLI のインストール
Heroku CLI
を使用すると、ターミナルから直接、Herokuアプリケーションを管理できます。The Heroku CLI | Heroku Dev Center(公式サイト)からダウンロードしてインストールします。
アプリケーションの新規作成
まずは次のコマンドを実行して、Herokuにログインします。
(envname) > heroku login
次のコマンドを実行すると、heroku上に空のアプリケーションとGitリポジトリが作成されます。
(envname) > heroku create app-name
app-name
の部分がアプリケーション名になります。基本的には、Djangoのプロジェクト名と同じで良いと思います。
環境変数の設定
秘密にしたい値は、環境変数として設定しましょう。
(envname) > heroku config:set SECRET_KEY=your-django-secret-key
os.environ
を使用して、プロジェクト内の値を置き換える必要があります。
他にも秘密にしたい値があれば、同じ要領で設定します。
Herokuに設定した環境変数の一覧は、次のコマンドで確認できます。
(envname) > heroku config
Amazon S3 を利用する場合
Herokuでは、 push
時に自動で collectstatic
コマンドを実行するように設定されています。静的ファイルの配信に Amazon S3 や CDN を利用する場合、またHerokuの collectstatic
を無効にしたい場合は、 DISABLE_COLLECTSTATIC
を設定しましょう。
(envname) > heroku config:set DISABLE_COLLECTSTATIC=1
デプロイ
準備は整いました。次のコマンドを順に実行して、Herokuにデプロイしてみましょう。
(envname) > git add .
(envname) > git commit -m "Initial commit"
(envname) > git push heroku master
データベースマイグレーションを実行して、管理ユーザを作成すれば、完了です!
(envname) > heroku run python manage.py migrate(envname) > heroku run python manage.py createsuperuser
その他のコマンド
Gitの管理下にあるファイルの状態を確認する:
(envname) > git status
アクセス
ブラウザでアプリケーションを開いて確認してみましょう。 heroku open
コマンドを実行します。
(envname) > heroku open
https://app-name.herokuapp.com/
というURLで正常に表示されていれば成功です。URLの末尾に admin/
をつけて、管理サイトにもアクセスしてみましょう。