デプロイの自動化(Fabric を活用)

Django × VPS デプロイ入門

日付:2025年2月19日

Django アプリの VPS デプロイ作業を自動化するために、Fabric を活用してデプロイプロセスを簡略化する方法を解説します。

目 次

1. なぜ Fabric を使うのか?

Django アプリの VPS デプロイには、Git のプル、仮想環境の更新、Gunicorn の再起動など、毎回同じ手順を手動で実行するのは手間がかかります

Fabric を使うメリット

  • SSH 経由でリモートサーバーに簡単にデプロイできる
  • 繰り返し作業を自動化し、デプロイミスを防げる
  • コマンド一つでコード更新からサービス再起動まで完結

本記事では、Fabric を使って Django アプリのデプロイをスクリプト化し、ワンクリックでデプロイを実行できるようにします。

2. Fabric のインストール

Fabric は Python ベースの SSH 自動化ツールです。

(1) Fabric をインストール

BASH
pip install fabric

(2) fabfile.py の作成

プロジェクトディレクトリのルートに fabfile.py を作成します。

BASH
touch fabfile.py

3. Fabric スクリプトの作成

以下の内容を fabfile.py に記述します。

PYTHON
from fabric import Connection, task HOST = "your-vps-ip" USER = "your-username" PROJECT_DIR = "/home/your-username/django_project" VENV_ACTIVATE = f"{PROJECT_DIR}/venv/bin/activate" @task def deploy(c): with Connection(host=HOST, user=USER) as conn: print("🚀 デプロイ開始...") # リモートサーバーでコードを更新 conn.run(f"cd {PROJECT_DIR} && git pull origin main") # 仮想環境を有効化してパッケージを更新 conn.run(f"source {VENV_ACTIVATE} && pip install -r {PROJECT_DIR}/requirements.txt") # マイグレーションの適用 conn.run(f"source {VENV_ACTIVATE} && python {PROJECT_DIR}/manage.py migrate") # Gunicorn を再起動 conn.sudo("systemctl restart gunicorn") # Nginx の設定をリロード conn.sudo("systemctl reload nginx") print("✅ デプロイ完了!")

スクリプトの動作

  1. SSH 接続してプロジェクトディレクトリに移動
  2. git pull で最新のコードを取得
  3. 仮想環境を有効化して pip install -r requirements.txt を実行
  4. python manage.py migrate でデータベースを更新
  5. systemctl restart gunicorn でアプリケーションを再起動
  6. systemctl reload nginx で Nginx の設定をリロード

4. Fabric を使ってデプロイを実行

作成した fabfile.py を使ってデプロイを実行します。

BASH
fab deploy

このコマンドを実行すると、VPS でのデプロイ作業が自動化されます。

5. まとめ

Fabric を活用すると、Django アプリの VPS デプロイがワンクリックで実行可能 になります。