Django 開発中に python manage.py runserver を実行したら、次のようなエラーに遭遇しましたか?
Bash
Error: That port is already in use.これは ポート(例:8000番)を別のプロセスが使っている ために起きるエラーです。
原因を特定できれば簡単に解決できますが、初心者のうちは「何を止めればいいの?」となりがち。
この記事では、同じ状況で迷った人向けに 一番シンプルで確実な解決方法 をまとめました。
Contents
エラーの原因は「ポートの占有」
Django の開発サーバーは通常 8000 番ポートを使用します。
ところが、次のような理由でポートが塞がっている場合があります。
- 前回の runserver がバックグラウンドに残っている
- VSCode やターミナルを閉じたがプロセスは生きている
- 別アプリが同じポートを使用している
これではDjango が起動できません。
4つの対処法
方法1:ポート8000を使っているプロセスを探して kill
次の手順で、すでに動いているプロセスをkillします
Bash
# ポート8000を使用しているプロセスIDを取得
kill $(lsof -ti:8000)
# 取得したプロセスIDを使って、犯人を探す(PDID=12345の場合)
ps -p 12345 -f
# 強制終了モード (-9) で kill する
kill -9 $(lsof -ti:8000)これが最も汎用的で、9割は解決します。
方法2:runserver プロセスを直接探して kill
もし runserver が残っているだけならこちら。
Bash
# runserver のプロセスIDを取得
ps aux | grep runserver
# 表示されたプロセスIDを kill
kill <プロセスID>方法3:ポート8000を使用中のプロセスを一括 kill(強制版)
ちょっと強引ですが、確実に止まります。
Bash
lsof -ti:8000 | xargs kill -9方法4:起動中の runserver ターミナルがある場合は Ctrl+C
単純ですが、意外と忘れがちな基本の手順です。
ターミナル上で Django が動いている場合は、次のキーで安全に止まります。
Bash
Ctrl + Cまとめ
最後に、本記事の内容をまとめます。
| 方法 | 目的 |
|---|---|
| 方法1 | まず最初に試す。8000番ポートを使うプロセスを kill |
| 方法2 | runserver が残っているか調べたい時 |
| 方法3 | プロセスをまとめて強制停止したい時 |
| 方法4 | そもそもターミナルで動作中の runserver を止める時 |

コメント