デプロイのベストプラクティス

Django × VPS デプロイ入門

日付:2025年2月19日

Django アプリを VPS にデプロイする際のベストプラクティスをまとめ、安定した運用のためのポイントを解説します。

目 次

1. ベストプラクティスの重要性

Django アプリを VPS にデプロイする際、ただ動作させるだけでなく、セキュリティ・パフォーマンス・保守性を考慮した設定 を行うことが重要です。

本記事で解説するポイント

  • セキュリティ対策(SSH 設定・ファイアウォール・SSL)
  • パフォーマンス最適化(Gunicorn・Nginx・キャッシュ)
  • 保守性の向上(自動デプロイ・バックアップ)

2. セキュリティ対策

(1) SSH のセキュリティ強化

  • PermitRootLogin noroot ユーザーでの SSH 接続を禁止
  • PasswordAuthentication noパスワードログインを無効化し、SSH キーを使用
  • Port 22022 など → デフォルトの 22 番ポートを変更

(2) ファイアウォール(UFW)の設定

BASH
ufw allow 22022/tcp # SSH ポート開放 ufw allow 'Nginx Full' # HTTP & HTTPS ufw enable

(3) HTTPS の適用(Let's Encrypt)

BASH
certbot --nginx -d yourdomain.com -d www.yourdomain.com

HTTPS 化で通信を暗号化し、SEO も向上

3. パフォーマンス最適化

(4) Gunicorn のチューニング

Gunicorn の workers を適切に設定すると、処理速度が向上 します。

BASH
gunicorn --workers 3 --bind unix:/home/myuser/django_project/gunicorn.sock myproject.wsgi:application
  • workers = CPU コア数 × 2 + 1 を推奨

(5) Nginx の最適化

Nginx のキャッシュ設定を有効化。

NGINX
location /static/ { expires 7d; add_header Cache-Control "public, max-age=604800"; }

静的ファイルの配信を最適化し、ページ読み込みを高速化

4. 保守性の向上

(6) 自動デプロイの導入(Fabric)

Fabric を使ってワンクリックデプロイを実現。

BASH
fab deploy

Git Pull・パッケージ更新・マイグレーション・Gunicorn 再起動を一括実行

(7) 定期的なバックアップ

データベースを定期的にバックアップ。

BASH
pg_dump -U postgres mydatabase > /backup/db_$(date +%Y%m%d).sql

または、GitHub Actions などを活用して コードのバックアップ も自動化。

5. まとめ

これで Django アプリの 安全で安定した運用 を実現できます。