Spring Boot ERROR 해결 과정
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 책을 따라 스프링 부트 프로젝트를 만들고 EC2 서버에 올린 후 배포 자동화 구성을 하던 중 꽤 오랫동안 에러에 시달렸다. 거의 지난 한 달간 고통받았다.
앞으로 돌아가 차근차근히 오타를 바로잡고 났음에도, 나를 기다린 건.. org.springframework.boot.web.server.PortInUseException
이었다.🤣
이 에러를 마주한 대부분의 경우 해결책은 매우 간단하다.
1. cmd 창에서 netstat -ano | findstr 8080을 시행
2. 8080 port를 사용하고 있는 task의 id를 기억해뒀다가tastkill /F /PID (task의 id)
를 시행
그러나 내 경우에는 netstat -ano | findstr 8080
을 시행했을 때 아무런 task도 검색되지 않았다! 혹시나 명령이 먹히지 않았나 싶어 눈으로 샅샅이 찾았음에도 8080 port를 쓰고 있는 task는 눈씻고 찾아볼 수가 없었다. 정말 미치고 팔짝 뛸 노릇이었다.
상식적으로 이해가 안 가는 오류였지만, 내가 참고하고 있는 책의 깃허브 issue에 검색을 해보니, port 8080 is already in use 에러가 떠도 다른 것이 원인인 경우가 꽤 있는 듯 했다.
아무래도 이전에 시행되고 있는 애플리케이션의 pid를 찾아 삭제하는 부분이 제대로 이루어지지 않는 것 같아 putty에 그 부분의 명령어를 하나 하나씩 입력해보고 나서야 원인을 알 수 있었다.
pgrep -fl springboot-aws-webservice | grep jar | awk '{print $1}'
로 현재 구동되고 있는 애플리케이션의 pid를 받도록 해놨는데, pgrep 부분만 시행해보니 jar이 아니라 java여서 grep jar을 붙이니 현재 구동 중인 애플리케이션이 있어도 검색이 제대로 되지 않는 것이었다.
이 이슈를 참고해 코드를 pgrep -fl springboot-aws-webservice | grep java | awk '{print $1}'
로 바꾸었고, 무사히 실제 배포 과정 체험을 끝마칠 수 있었다.
혹시나 나와 같은 오류에 빠져 허우적대고 있을지도 모르는 사람들과, 미래에 또 다시 이 오류에 빠질지도 모르는 나를 위해 정리하였다.
'WEB > Spring & Spring boot' 카테고리의 다른 글
Spring boot와 SMTP로 이메일 발송 기능 구현하기 (0) | 2022.01.12 |
---|---|
Gradle 버전에 따른 lombok 추가 방법 - Gradle 6 이상 버전에서도 lombok 오류 나지 않게 하려면 (0) | 2021.04.24 |