Railwayを使うと、Djangoアプリをサーバー構築なしで Gitリポジトリから直接デプロイできます。
プロジェクトに src フォルダがある場合はやや複雑ですが、設定方法は基本的に同じです。
DjangoProject/
├ src/
│ ├ manage.py
│ ├ requirements.txt
│ ├ myproject/
│ │ ├ settings.py
│ │ └ urls.py
│ └ Procfile
└ README.md
Procfileの例(src内にある場合):
web: gunicorn src.myproject.wsgi
src に指定settings.py に直接秘密情報を書かないことが重要です。
SECRET_KEYDEBUGALLOWED_HOSTS
import os
SECRET_KEY = os.environ.get('SECRET_KEY')
DEBUG = os.environ.get('DEBUG') == 'True'
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '').split(',')
DATABASE_URL が作成される
import dj_database_url
DATABASES = {
'default': dj_database_url.config(default=os.environ.get('DATABASE_URL'))
}
dj-database-url を requirements.txt に追加してください。
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
# collectstatic の実行
python manage.py collectstatic
python manage.py migrate
python manage.py createsuperuser
Railwayの「Shell」から実行可能です。
正常にビルドされると、RailwayがURLを発行します。
管理画面:/admin にアクセスして確認してください。
srcフォルダを含む複雑なプロジェクトでも、Railwayは
Git連携 + 環境変数 + PostgreSQL だけで簡単に本番公開できます。
VPSやAWSに移行する前のステップとしても非常に有用です。