さくらのVPSでDjangoがアクセスできない原因と解決策

ネットワーク技術

さくらのVPS上でDjangoのプロジェクトを移行し、python3 manage.py runserver でサーバーを起動したものの、VPSのIPアドレスを使ってもページにアクセスできないという問題が発生することがあります。ローカル環境では動作するが、VPSではアクセスできない場合、いくつかのチェックポイントがあります。本記事では、その原因と解決策を詳しく解説します。

1. DjangoのALLOWED_HOSTS設定を確認

Djangoではセキュリティ上、デフォルトではローカルホスト(127.0.0.1)以外のリクエストを受け付けません。VPSのIPアドレスやドメインを明示的に許可する必要があります。

修正方法: settings.pyALLOWED_HOSTS にVPSのIPアドレスを追加してください。

ALLOWED_HOSTS = ['your-vps-ip-address', 'example.com', 'localhost']

また、すべてのホストを一時的に許可する場合は以下のように設定できます。

ALLOWED_HOSTS = ['*']

ただし、この設定は本番環境では推奨されません。必要なホスト名を明示的に指定するのがベストです。

2. サーバーのポート設定を確認

python3 manage.py runserver のデフォルトポートは 127.0.0.1:8000 になっているため、外部からのアクセスを受け付けません

解決策: Djangoを外部からアクセスできるように起動しましょう。

python3 manage.py runserver 0.0.0.0:8000

これにより、全てのIPアドレスからの接続が可能になります。

3. ファイアウォールの設定を確認

VPSのファイアウォール(iptables や UFW)がポート 8000 をブロックしている可能性があります。

ポートを開放する方法:

UFWを使用している場合:

sudo ufw allow 8000

iptablesを使用している場合:

sudo iptables -A INPUT -p tcp --dport 8000 -j ACCEPT

その後、変更を保存してファイアウォールを再起動してください。

4. さくらのVPSのネットワーク設定を確認

さくらのVPSでは、デフォルトで外部からの接続が制限されていることがあります。

対策: さくらのVPSの管理画面にログインし、ネットワーク設定やポート開放のルールを確認してください。

5. 本番環境向けのセットアップ

Djangoの runserver は開発用のサーバーであり、本番環境での使用は推奨されません。以下のいずれかの方法で本番環境をセットアップすることをおすすめします。

  • Gunicorn を利用する: pip install gunicorn
  • Nginx + Gunicorn で運用する
  • Apache + mod_wsgi を設定する

まとめ

DjangoのプロジェクトがさくらのVPSで動作しない場合、以下のポイントをチェックしましょう。

  • ALLOWED_HOSTS にVPSのIPアドレスを追加する
  • python3 manage.py runserver 0.0.0.0:8000 で起動する
  • ファイアウォール(UFWやiptables)でポート 8000 を開放する
  • さくらのVPSのネットワーク設定を確認する
  • 本番環境では Gunicorn や Nginx を使う

これらの設定を行うことで、DjangoプロジェクトをVPS上で正常に動作させることができます

コメント

タイトルとURLをコピーしました