본문 바로가기

🧑🏻‍💻 Dev/SpringBoot

[Spring] Mac OS : Web server failed to start. Port 8080 was already in use 문제 해결하기

최근에 토비의 스프링 실습을 할 때 스프링 서버로 8080 서버를 사용했었다. 토비의 스프링 서버를 껐으니 당연히 포트도 닫혔겠지 했는데 웹 브라우저로 들어가보니 포트는 계속 열려있었다.

 

다른 스프링 학습을 하고 있는 도중에 아래와 같은 오류가 발생했다.

Web server failed to start. Port 8080 was already in use.

너무 직관적인 오류 내용이다. 웹 서버를 시작하는데 실패했다. 8080 포트가 이미 사용하고 있다. 음.. 인텔리제이도 모두 종료해보고 노트북도 재시동해봤지만 포트는 그대로 계속 열려있었다. 

 

1. Mac 터미널에서 문제를 해결하는 방법

# 명령어 입력

lsof -i tcp:8080

8080 포트를 사용하고 있는 프로세스를 확인

위 명령어를 입력하면 현재 8080 포트를 사용중인 프로세스를 확인할 수 있다. 다 껐다고 생각했는데 포트를 사용하고 있었다니...당연히 자동 종료하면 포트도 자동으로 닫히는줄 알았는데 너무 오래 켜놔서 그랬던건가 모르겠지만 계속 켜져있었다.

 

 

# PID 넘버를 사용해서 해당 프로세스 종료하기

sudo kill -9 {종료하려는 PID}

이렇게 명령어를 입력하면 Password를 치라는 칸이 나온다. 필자의 경우 맥북 비밀번호를 입력하니 6901 PID 프로세스가 포트 8080에서 종료된 것을 확인할 수 있었다. 

 

정상적으로 삭제되었는지 확인해보려면 다시 lsof -i tcp:8080을 쳐보면 된다. 아무것도 뜨지 않는다면 성공이다!

 

 

 

2. application.yml 설정을 변경하여 다른 포트 사용하기

이 부분은 스프링에서 application.yml 설정 파일에 다른 8080 포트 이외에 다른 포트를 사용하도록 설정할 수 있다. 

// application.yml

server:
  port: 8000

server.port: 8000으로 설정 값을 주면 해당 스프링이 이제 8080 포트에서 열리는 것이 아니고 8000 포트에서 열리는 것을 확인할 수 있다. 설정을 해주고 한번 프로젝트를 실행시킨 후 위에서 확인했던 명령어(lsof -i tcp:8000)로 한번 확인해보자.

 

8000 포트가 사용되고 있는 것을 확인

 

 

🙆🏻‍♂️ 마치며

lsof는 list open files의 약자라고 한다. 시스템에서 열려있는 파일들의 목록을 확인할 수 있는 명령어라고 한다. 예전에 Python이랑 Django 했을 때 썼던 포트가 8000이었던 거 같은데, 스프링에서도 포트를 변경해서 사용할 수 있다는 걸 알게되니 뭔가 신기했다. 지금은 위에서 설정한 application.yml대로 8000 포트를 사용해서 스프링 실습을 진행하고 있다.