【Railway】Djangoをデプロイする方法

Railway を使って Djangoアプリをデプロイする手順を解説します。データベース設定、静的ファイル、Celery との連携まで、実践的な方法を学びます。

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

Djangoアプリをデプロイする方法

Django は、迅速な開発とクリーンなデザインを実現するためのツールを提供する、強力な Python ウェブフレームワークです。認証、ルーティング、データベース管理などのタスクを効率化し、開発者がアプリケーションの構築に集中できるようにします。


Django アプリを作成する

既にローカルまたは GitHub に Django アプリがある場合は、この手順をスキップして「Django アプリを Railway にデプロイする」に進んでください。

新しい Django アプリを作成するには、Python と Django がインストールされていることを確認してください。

1. 仮想環境の作成と有効化

# 仮想環境を作成
python -m venv env
# 仮想環境を有効化 (macOS/Linux)
source env/bin/activate
# (Windows の場合)
# env\Scripts\activate

2. Django のインストールとプロジェクト作成

# Django をインストール
python -m pip install django
# 新しい Django プロジェクトを作成
django-admin startproject liftoff

3. ローカルでの実行確認

cd liftoff
python manage.py runserver

ブラウザで http://127.0.0.1:8000 にアクセスし、「The install worked successfully! Congratulations!」と表示されれば成功です。


データベース、静的ファイル、依存関係の設定

1. 必要なパッケージをインストール

manage.py があるディレクトリで、以下のパッケージをインストールします。

python -m pip install gunicorn whitenoise psycopg[binary,pool]
  • gunicorn: 本番環境用のウェブサーバー
  • whitenoise: 静的ファイルを配信するためのパッケージ
  • psycopg: Django が PostgreSQL と連携するためのアダプター

2. データベース設定

liftoff/settings.py を開き、データベース設定を PostgreSQL に変更します。

import os
from pathlib import Path
 
# 環境変数のデフォルト値を設定
os.environ.setdefault("PGDATABASE", "liftoff_dev")
os.environ.setdefault("PGUSER", "username")
os.environ.setdefault("PGPASSWORD", "")
os.environ.setdefault("PGHOST", "localhost")
os.environ.setdefault("PGPORT", "5432")
 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ["PGDATABASE"],
        'USER': os.environ["PGUSER"],
        'PASSWORD': os.environ["PGPASSWORD"],
        'HOST': os.environ["PGHOST"],
        'PORT': os.environ["PGPORT"],
    }
}

ローカルの PostgreSQL で liftoff_dev データベースを作成し、PGUSERPGPASSWORD を自分の環境に合わせて変更してください。

3. マイグレーションの実行

python manage.py migrate

4. 静的ファイルの設定

liftoff/settings.py で静的ファイルの設定を行います。

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

MIDDLEWAREwhitenoise.middleware.WhiteNoiseMiddleware を追加します。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    # ...
]

5. ALLOWED_HOSTS の更新

ALLOWED_HOSTS = ["*"]

6. requirements.txt の作成

pip freeze > requirements.txt

Django アプリを Railway にデプロイする

デプロイ方法は複数ありますが、ここでは GitHub リポジトリからのデプロイを説明します。

1. GitHub リポジトリからデプロイ

  • Railway で新しいプロジェクトを作成し、「Deploy from GitHub repo」を選択します。
  • 自分の Django プロジェクトのリポジトリを選びます。
  • 「Add Variables」をクリックし、環境変数を設定します。

2. データベースサービスの追加

  • プロジェクトのキャンバスで「+ New」→「Database」→「Add PostgreSQL」を選択します。
  • これで PostgreSQL データベースサービスが作成されます。

3. 環境変数の設定

  • アプリサービスの「Variables」タブで、以下の変数を設定します。Postgres は自分のデータベースサービス名に置き換えてください。
    • PGDATABASE: ${{Postgres.PGDATABASE}}
    • PGUSER: ${{Postgres.PGUSER}}
    • PGPASSWORD: ${{Postgres.PGPASSWORD}}
    • PGHOST: ${{Postgres.PGHOST}}
    • PGPORT: ${{Postgres.PGPORT}}

4. デプロイと公開

  • 「Deploy」ボタンをクリックしてデプロイを開始します。
  • デプロイ完了後、サービスの「Settings」タブ→「Networking」で「Generate Domain」をクリックし、公開 URL を生成します。

Celery との連携

Celery を使ってバックグラウンドタスクやスケジュールされたジョブを実行する場合、サービスを「App」「Cron」「Worker」の3つに分割します。

  1. Redis サービスの追加: Celery のブローカーとして Redis を追加します。
  2. App Service: HTTP リクエストを処理します。
  3. Cron Service: Celery Beat を実行し、スケジュールされたタスクを管理します。celery -A liftoff beat -l info を起動コマンドに設定します。
  4. Worker Service: Celery Worker を実行し、バックグラウンドジョブを処理します。celery -A liftoff worker -l info を起動コマンドに設定します。

各サービスに適切な環境変数を設定することで、連携が完了します。


これで、Django アプリケーションが Railway 上で稼働し始めます。詳細な設定や他のデプロイ方法については、公式ドキュメントを参照してください。

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

Read more

リアルタイム投票アプリ5選【ライブ配信やイベントで】

リアルタイム投票アプリ5選【ライブ配信やイベントで】

ウェビナーやセミナー、社内研修を実施する際、「参加者が受け身になってしまう」「質問がなかなか出てこない」といった課題を感じたことはないでしょうか。 オンラインでの情報発信が当たり前になった今、一方的な配信だけでは参加者の満足度を高めることが難しくなっています。そこで注目されているのが、リアルタイムで参加者の意見を集約し、その場で結果を共有できる投票・質問ツールです。 本記事では、ライブ配信やイベント、研修などで活用できるリアルタイム投票アプリを5つ厳選してご紹介します。 リアルタイム投票でつながる参加者とイベント リアルタイム投票やQ&A機能を使うと、視聴者や参加者の意見を即座に集計・表示できます。講義や会議の進行を妨げず、参加者全員が自分の意見を簡単に表明できる仕組みです。 従来の挙手による質疑応答では、発言しづらいと感じる参加者も少なくありません。特にオンラインイベントでは、カメラがオンになっていることへの抵抗感や、大人数の前で質問することへのハードルが存在します。 しかし、スマートフォンから匿名で投票やコメントができる仕組みがあれば、参加者は気軽に自分の意見を伝えら

By 阿部 隼也
質問受付ツールの選び方とおすすめ5選を紹介

質問受付ツールの選び方とおすすめ5選を紹介

セミナーや講演会、社内研修などで「質問はありませんか?」と投げかけても、なかなか手が挙がらない経験はないでしょうか。参加者に有益な情報を提供しても、疑問や意見が共有されないまま終わってしまうのは、主催者にとっても参加者にとっても大きな機会損失です。 こうした課題を解決するために注目されているのが「質問受付ツール」です。参加者がスマートフォンから匿名で質問を投稿できるため、発言への抵抗感が下がり、活発なコミュニケーションが生まれます。 本記事では、質問受付ツールの基本機能から、実際に役立つおすすめツール5選、そして選定時に押さえておきたいポイントまで、実務に活かせる情報をまとめて解説します。 質問受付の現場課題 イベントやセミナーの運営で最も頭を悩ませる問題の一つが、参加者からの質問をいかに引き出すかという点です。質問タイムを設けても、会場がシーンと静まり返ってしまい、仕方なく「それでは時間になりましたので」と締めくくる光景は珍しくありません。 この背景には、日本特有の文化的要因も関係しています。大勢の前で発言することへの恥ずかしさ、自分の質問が的外れではないかという不安、他

By 阿部 隼也
オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

近年、オンラインセミナーの活用が急速に広がっています。会場のコストや移動時間を気にすることなく、全国・世界中から参加者を集められる点は大きな魅力です。 しかし、せっかく開催しても 「参加者が途中で離脱してしまう」 「ただ見ているだけで反応が薄い」 といった課題を抱えている企業も少なくありません。 本記事では、参加者のエンゲージメントを高め、成果につながるオンラインセミナーアプリの選び方と、実務に役立つ具体的なポイントを解説します。 参加者とのつながりを生むオンライン環境の設計 オンラインセミナーにおける最大の課題は、画面越しの距離感です。会場で直接顔を合わせる機会がないからこそ、参加者が「ただ見ているだけ」にならないような仕組みが求められます。適切なツールと機能選びが、参加者のエンゲージメントを左右します。 従来のオフラインセミナーでは、会場の雰囲気や参加者同士の反応が自然と生まれましたが、オンラインではそうした「空気感」が伝わりにくくなります。だからこそ、双方向のコミュニケーション機能や、参加者の行動データを活用した設計が重要になるのです。 エンゲージメントを高

By 阿部 隼也
参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

オンラインでのセミナーやイベントが日常化する中で、Zoomウェビナーを活用している企業が増えています。しかし、ウェビナーの開催で意外と頭を悩ませるのが「参加者からの質問をどう管理するか」という点ではないでしょうか。 セミナーが盛り上がり、次々と質問が寄せられるのは嬉しいことです。一方で、質問が多すぎて整理しきれない、どの質問に優先的に答えるべきか判断に迷う、といった課題も生じます。こうした問題を解決するために役立つのが、ZoomウェビナーのQ&A機能です。 本記事では、ZoomウェビナーのQ&A機能の基本的な使い方から、参加者の質問を効率的に管理する実践的なテクニックまで、詳しく解説していきます。 ZoomウェビナーのQ&A機能とは ZoomウェビナーのQ&A機能は、ウェビナー開催中に参加者が質問を投稿し、主催者側が回答を行うための専用機能です。この機能を使うことで、質問と回答がスレッド形式で整理され、効率的なコミュニケーションが可能になります。 チャット機能との違い Zoomには「チャット機能」もあるため、「Q&A機能とチャット機能の違いは何か」と疑問に思う方も多いで

By 阿部 隼也