장고에서 서버를 실행할 때 아래 명령을 입력할 것이다.
$ python3 manage.py runserver
이때 아래와 같은 에러 메시지를 만날 수 있다.
Error: That port is already in use
이는 말그대로 장고가 실행하려는 8000번 포트가 이미 사용 중이라는 얘기다.
이미 띄워 둔 서버를 정상적으로 종료하지 않은 경우에 또는 다른 서비스가 8000번 포트를 사용하는 경우에 위의 메시지가 나타난다.
- 특히
Ctrl + z
를 사용하여 서버를 멈추는 경우, 다시 서버를 실행하려 할 때 위의 메시지가 나타난다.- 올바른 서버 종료를 위해서는
Ctrl + c
를 사용하자!
문제를 해결하는 방법은 간단하다. 실행 중인 8000번 포트를 종료하면 된다.
우선, 해당 포트를 어떤 서비스가 사용하고 있는지 알아볼 필요가 있다. 아래 명령을 실행하자.
$ lsof -i:8000
그 결과 아래 내용이 출력되었다. python3
라고 되어 있다면 Django
서비스가 돌고 있다고 보면 된다.
다른 곳에서 띄운적이 없거나, 종료해도 무방한 경우 강제 종료 명령을 써서 실행 중인 장고 프로세스를 종료한다.
강제 종료를 위해 아래 명령을 실행하자.
$ kill -9 [PID]
(여기서는 [PID] 자리에 1815를 작성한다.)
실행을 마치고 다시 lsof -i:8000
를 실행했을 때, 아무것도 출력되지 않으면 정상적으로 서버가 종료된 것이다.
마지막으로 원하는 서버를 실행하기 위해 아래 명령을 실행한다.
$ python3 manage.py runserver
명령을 실행했을 때 아래 화면이 나타난다면 정상적으로 8000번 포트에 장고 서버가 실행된 것이다.
python3 manage.py runserver 0.0.0.0:8001