티스토리 뷰
손 댄지 오래된 스프링 부트 애플리케이션을 간만에 다시 실행하려고 했는데, 다음과 같은 에러가 떴다.
8080 포트가 이미 사용중이기 때문에 실행에 실패했다고 한다.
# 해결방법 1 (사용중인 8080 포트 kill)
https://stackoverflow.com/questions/34253779/tomcat-server-error-port-8080-already-in-use
1. cmd 창 오픈, 명령어 입력
netstat -ano | findstr 8080
2. 8080 포트를 사용중인 프로세스 PID 확인 후 kill
taskkill /F /pid [PID]
근데 나같은 경우에는 8080 포트를 사용중인 프로세스가 보이지 않았다. ?? 이유가 뭘까?
# 해결 방법 2 (애플리케이션 포트 변경)
스프링 부트의 application.properties 파일에서 톰캣 서버가 사용할 포트를 8080 대신 8081과 같은 다른 포트로 변경해서 실행시키는 방법이다.
# application.properties
server.port=8081
이렇게 하니까 일단 실행은 되는데 사이트 접속이 안됐다. 왜그럴까??
# 나는 왜 안됐나?
손을 안댄지 꽤 오래된 프로젝트를 간만에 다시 실행시키려다 보니 HTTP 에서 HTTPS로 강제 리다이렉트 시키던 config 파일이 있었는데 그걸 주석처리 안하고 그냥 실행시키려다 보니 문제가 발생했던 것이었다.
여기 보면 톰캣이 8080 (http) 8080 (http) 두개의 포트가 중복되서 초기화 되는 것을 확인할 수 있다.
그렇기 때문에 실행 조차 실패했던 것.
해결방법 2와 같이 톰캣 포트를 옮겨서 실행하는 경우는 8080 포트랑 8081 포트 두개를 사용하기 때문에 실행은 정상적으로 됐으나 사이트 접속에 있어서는 문제가 발생했던 것 같다..
@Configuration // HTTP로 접근 시 HTTPS로 강제 리다이렉트 시키는 Config
public class HttpRedirectConfig {
@Bean
public ServletWebServerFactory servletContainer() {
...
}
// 아마 여기서 문제가 발생한 듯 싶다
private Connector createConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setSecure(false);
connector.setPort(8080);
connector.setRedirectPort(443);
return connector;
}
}
그래서 문제가 되는 https 관련 config 파일을 주석처리 하고 나니 정상적으로 동작하는 것을 확인했다!!!!
분명 내가 짰던 코드임에도 불구하고 오래간만에 다시 손대려고 하니까 실행부터가 쉽지 않다.. 이래서 주석을 잘 남겨야 하는건가 싶기도 하고.. 하여튼 잘 해결되어서 다행이었다.
'웹 > Spring' 카테고리의 다른 글
스프링 부트 | 상대 경로 현재 디렉토리(./)는 어디를 뜻하는 것일까? (1) | 2022.09.06 |
---|---|
application.properties 설정 파일 분리해보기 (0) | 2022.08.24 |
스프링 볶음밥 - 8, 9장 (0) | 2022.07.12 |
스프링 볶음밥 - 7장 (0) | 2022.07.11 |
스프링 볶음밥 - 6장 - AOP (2) (0) | 2022.07.08 |