Django アプリの VPS デプロイ作業を自動化するために、Fabric を活用してデプロイプロセスを簡略化する方法を解説します。
Django アプリの VPS デプロイには、Git のプル、仮想環境の更新、Gunicorn の再起動など、毎回同じ手順を手動で実行するのは手間がかかります。
✅ Fabric を使うメリット
本記事では、Fabric を使って Django アプリのデプロイをスクリプト化し、ワンクリックでデプロイを実行できるようにします。
Fabric は Python ベースの SSH 自動化ツールです。
BASHpip install fabric
プロジェクトディレクトリのルートに fabfile.py
を作成します。
BASHtouch fabfile.py
以下の内容を fabfile.py
に記述します。
PYTHONfrom 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("✅ デプロイ完了!")
✅ スクリプトの動作
git pull
で最新のコードを取得pip install -r requirements.txt
を実行python manage.py migrate
でデータベースを更新systemctl restart gunicorn
でアプリケーションを再起動systemctl reload nginx
で Nginx の設定をリロード作成した fabfile.py
を使ってデプロイを実行します。
BASHfab deploy
このコマンドを実行すると、VPS でのデプロイ作業が自動化されます。
Fabric を活用すると、Django アプリの VPS デプロイがワンクリックで実行可能 になります。
回 | タイトル | リンク |
---|---|---|
第 1 回 | Django × VPS デプロイ入門 - はじめに | 詳 細 |
第 2 回 | VPSの契約から初期設定まで | 詳 細 |
第 3 回 | Python & Django 環境をセットアップ | 詳 細 |
第 4 回 | Gunicorn による Django アプリの運用 | 詳 細 |
第 5 回 | Nginx をリバースプロキシとして設定 | 詳 細 |
第 6 回 | Let's Encrypt を使った HTTPS の設定 | 詳 細 |
第 7 回 | ファイアウォールとセキュリティ設定 | 詳 細 |
第 8 回 | Django アプリの自動起動の設定(systemd) | 詳 細 |
第 9 回 | デプロイの自動化(Fabric を活用) | この記事 |
第 10 回 | デプロイのベストプラクティス | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。