さくらのVPS上でDjangoのプロジェクトを移行し、python3 manage.py runserver
でサーバーを起動したものの、VPSのIPアドレスを使ってもページにアクセスできないという問題が発生することがあります。ローカル環境では動作するが、VPSではアクセスできない場合、いくつかのチェックポイントがあります。本記事では、その原因と解決策を詳しく解説します。
1. DjangoのALLOWED_HOSTS設定を確認
Djangoではセキュリティ上、デフォルトではローカルホスト(127.0.0.1
)以外のリクエストを受け付けません。VPSのIPアドレスやドメインを明示的に許可する必要があります。
修正方法: settings.py
の ALLOWED_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上で正常に動作させることができます。
コメント