Django製サービスをHeroku×独自ドメインでリリースするまで
Pythonには色々なWebフレームワークがありますが、その中でも一番有名なのはDjangoです。
DjangoはフルスタックのWebフレームワークで、Web開発の難易度を格段に下げてくれます。
そんなDjangoで作ったWebサービスをHeroku × 独自ドメインでリリースしたので、その方法をまとめます。
Djangoについて詳しくは、下記をご覧ください。
実はRailsよりDjangoがオススメ!?両方使ってみた結果をまとめます
前提
下記の2つはすでに終わっているものとします。
- Djangoでのプロジェクト作成
- Gitでのリポジトリ作成
Djangoの設定
settings.pyの変更
デフォルト状態だと、サーバーを立ち上げても開発環境になっていると思います。
なので、settings.pyを本番用に変更する必要があります。
まずは下記のように編集しましょう。ちなみに、今まで使っていたファイルはlocal_settings.pyと言うファイル名で残しておきましょう。ローカルでの開発用に使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
DEBUG = False // 変更 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', // 追加 ] /* 変更(staticfile向き先)*/ STATIC_URL = '/static/admin' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) ALLOWED_HOSTS = ['*'] // 変更 ALLOWED_HOSTS = ['自分のドメイン名'] // こっちでもOK /* 追加 (シークレットキーの参照方法変更)*/ SECRET_KEY = 'XXX' // 削除 if not DEBUG: SECRET_KEY=os.environ['SECRET_KEY'] import django_heroku django_heroku.settings(locals()) /* 追加(ローカルのsettings.pyと分ける */ try: from .local_settings import * except ImportError: pass /* DATABASEの設定(PostgreSQL用) */ db_from_env = dj_database_url.config(conn_max_age=600, ssl_require=True) DATABASES['default'].update(db_from_env) |
一つずつ見ていきましょう。まずはDEBUG=FALSEにして、開発環境でないことを教えます。
2つ目にstaticfileの参照方法変更です。ここではwhitenoiseを使用します。これはstaticファイルを本番環境で配信するライブラリです。
開発環境ではstaticディレクトリを作って読み込ませてると思いますが、これはセキュリティ上良くないです。
セキュリティを考えると本来、S3やnginxを使ってstaticファイルを配信する必要があるんですが、このライブラリを使うとそれが不要になります。
3つ目にALLOWED_HOSTの編集です。自分のWebサイトに使用するドメインをここに追加します。
4つ目にシークレットキーの参照方法変更です。ファイルに埋め込むのではなく、環境変数を使用するようにします。
最後にDB設定です。HerokuではSQLiteではなくPostgreSQLを使うので、その設定になります。
Herokuの準備
Herokuへの登録とセットアップまでは済ませているものとします。
Herokuのリポジトリ作成
Gitと同様、ソースコードのあるディレクトリで、下記コマンドを打つだけです。
1 2 3 4 5 |
$ heroku login $ heroku create $ git push heroku master |
これで HerokuとGitに同じソースコードをアップロードするところまでできました。
独自ドメインの設定
さて、今回の目玉となるとこです。ドメインを取得して、Herokuとアプリケーション両方に設定していきます。
ドメインの取得
使いたいドメインを取得しないと話になりません。どこでもいいので取得してきてください。
ちなみにん私はお名前.comで取得しました。
Herokuの設定
さて、Heroku側の設定をしましょう。まずは①ドメインを登録し、②SSL化します。
①ドメインの登録
②ドメインのSSL化
次にPointDNSの設定をします。Herokuのトップページから
ネームサーバーの変更
ここまでできたら、ネームサーバーの設定をしましょう。ここはドメインを取得したサイトによってやり方が異なるので、ひとまずお名前.comでレクチャーします。
まずはログインしてください。
「ドメイン設定」から「name serverの変更」に飛んでください。
「他のネームサーバー」を選び、Herokuのネームサーバーを入力します。
記事執筆時点では下記がHerokuのネームサーバーです。上から順に3つ入力しましょう。
- dns2.pointhq.com
- dns15.pointhq.com
- dns8.pointhq.com
起動!
さて、ネームサーバー変更は完了したでしょうか?お名前.comの場合、設定が完了したらメールが届くと思います。
ここまできたら、あとは起動するだけ!下記コマンドをポチッと。
URLへアクセスしてみてください。どうですか?自分のサービスが出てきましたか?
出てきたら終わり!お疲れ様でした!