Railway環境でDjangoアプリをデプロイする手順(src構造版)

1. 全体の流れ

Railwayを使うと、Djangoアプリをサーバー構築なしで Gitリポジトリから直接デプロイできます。

  1. GitHubリポジトリを準備
  2. Railwayプロジェクト作成
  3. 環境変数(SECRET_KEYなど)設定
  4. PostgreSQLを追加
  5. Django設定を本番向けに修正
  6. デプロイ確認

2. Gitリポジトリの準備(src構造版)

プロジェクトに src フォルダがある場合はやや複雑ですが、設定方法は基本的に同じです。

DjangoProject/
├ src/
│  ├ manage.py
│  ├ requirements.txt
│  ├ myproject/
│  │  ├ settings.py
│  │  └ urls.py
│  └ Procfile
└ README.md
    

Procfileの例(src内にある場合):

web: gunicorn src.myproject.wsgi
    
Railwayではリポジトリルート以外にDjangoがある場合でも、
Procfileや build コマンドでパスを指定すれば問題ありません。

3. Railwayでプロジェクト作成 & Git連携

  1. Railwayにログイン
  2. 「New Project」→「Deploy from GitHub Repo」
  3. Djangoリポジトリを選択
  4. 必要に応じて「Root Directory」を src に指定
GitHubにpushするだけで自動デプロイが走ります。

4. 環境変数(Variables)の設定

settings.py に直接秘密情報を書かないことが重要です。

import os

SECRET_KEY = os.environ.get('SECRET_KEY')
DEBUG = os.environ.get('DEBUG') == 'True'
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '').split(',')
    

5. PostgreSQL(SQL)の設定

  1. Railwayの「Add Plugin」→「PostgreSQL」
  2. 自動で DATABASE_URL が作成される
import dj_database_url

DATABASES = {
  'default': dj_database_url.config(default=os.environ.get('DATABASE_URL'))
}
    
dj-database-url を requirements.txt に追加してください。

6. 静的ファイル設定

STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
    
# collectstatic の実行
python manage.py collectstatic
    

7. マイグレーションと管理ユーザー

python manage.py migrate
python manage.py createsuperuser
    

Railwayの「Shell」から実行可能です。

8. デプロイ完了

正常にビルドされると、RailwayがURLを発行します。

管理画面:/admin にアクセスして確認してください。

9. まとめ

srcフォルダを含む複雑なプロジェクトでも、Railwayは
Git連携 + 環境変数 + PostgreSQL だけで簡単に本番公開できます。

VPSやAWSに移行する前のステップとしても非常に有用です。