맥에서 개발을 하다 보면 5000번 포트 충돌 문제를 자주 마주하게 됩니다. 이는 여러 개발 도구와 프레임워크가 기본적으로 5000번 포트를 사용하기 때문입니다.
5000번 포트를 사용하는 주요 애플리케이션
- Logstash: ELK 스택의 데이터 수집 도구
- Flask: Python 웹 프레임워크 (기본 포트: 5000)
- AirPlay Receiver: 맥의 기본 기능
문제 상황
제 경우는 Docker를 이용해 ELK 스택을 사용하던 중 Logstash가 동작하지 않는 문제가 발생했습니다.
문제의 원인을 찾아보니, Logstash가 기본적으로 5000번 포트를 사용하는데, Mac에서는 AirPlay Receiver가 기본적으로 5000번 포트를 점유하기 때문이었습니다. 처음에는 Docker 네트워크 설정을 변경해보기도 했지만, 결국 이는 Mac의 시스템 설정 문제였습니다.
포트 충돌을 확인하기 위해 다음 명령어를 사용할 수 있습니다.
|
|
이 명령어를 실행하면 5000번 포트를 사용 중인 프로세스를 확인할 수 있습니다.
해결 방법
계속해서 포트가 점유되는 문제를 해결하기 위해서는 시스템 설정에서 AirPlay Receiver를 비활성화해야 합니다. 다음과 같은 단계로 진행할 수 있습니다.
- 시스템 설정(Settings)을 열기
- 일반(General) 탭 선택
- AirPlay & Handoff 설정으로 이동
- AirPlay Receiver를 비활성화
대체 해결 방법
만약 AirPlay Receiver를 비활성화하기 어려운 상황이라면, 다음과 같은 대체 방법들을 사용할 수 있습니다.
애플리케이션 포트 변경
- Flask의 경우:
app.run(port=5001)
로 포트 변경 - Logstash의 경우: 설정 파일에서
http.port
값 변경
- Flask의 경우:
다른 포트 사용
- 개발 서버를 3000, 8000, 8080 등의 다른 포트로 실행
- 예:
flask run --port=5001
포트 포워딩 사용
- 로컬에서 다른 포트로 실행하고, 필요한 경우 포트 포워딩 설정
추가 정보
- 이 설정을 변경한 후에는 Mac을 재시작할 필요가 없습니다.
- AirPlay Receiver를 비활성화해도 다른 AirPlay 기능(예: iPhone에서 Mac으로 화면 미러링)은 계속 사용할 수 있습니다.
- 개발 환경에서는 가능한 5000번 포트를 피하고, 다른 포트를 사용하는 것이 좋습니다.
이렇게 설정을 변경하면 5000번 포트가 해제되어 애플리케이션이 정상적으로 동작할 수 있습니다.