본문 바로가기
개발 공부하면서 오류 해결

첫 배포 경험

by chogigang 2023. 3. 19.

6일의 헤딩 동안 AWS ec2+docker를 통해서 드디어 배포를 성공했다.

 

정보들이 너무 조각조각 흩어져 있어서 정말 힘들었다 정말 너무 힘들었다.

 

보이는 거와 같이 위에 서버 포트가 보인다. 

 

 

로그인 화면은 500이 뜬다 이상하다 분명 개발할 때는 잘되었는데

 

 

 

 

 

AWS 배포 쪽은 로그인 화면이 안 넘어가진다   개인적으로 프로젝트 만든 것은 잘 넘어온다. 

 

그냥 이번은 배포를 성공으로 했다는 거에 포커스를 잡았다 아직 공부해야 할 것이 너무 많다. 

 

이번주 동안 언어적으론 정채 된 느낌이 들어서 다시 언어 공부를 개시할 생각이다.

 

 

 

첫 번째로 순수 구글링의 정보로 공통된 정보를 추합하고 gpt에 예상하는 문제가 맞는지 확인 절차를 가지면서

 

5일이 걸렸다. 헤딩하면서 docker에 대해 정말 발끝으로 

 

 

그저 코드치고 컴파일러로 돌아가면 된다는 생각을 가지고 쭉 책 예제를 보면서 코딩하다가

 

개발 외쪽으로의 문제를 처음 직면했다.    이쪽 정보들은 진짜 업데이트하면서 너무 많이 바뀌었고

 

주변의 지인들도 이 문제를 모두 몰랐다.    아직도 풀리지 않은 것들도 있긴 하다 

 

생각보다 오래 안 걸리는걸 난 여기저기 정보를 주워 담아 이것도 해보고 저것도 해보고 하면서

 

수많은 오류를 맞이했다 대부분의  jar를 활용한 docker 배포는 hello world 하나 만들고 jar파일을 docker로 업로드한 다음

 

서버 포트치고 배포 완료를 하니     내가 만든 jpa로 연동된 jar는 가기 싫다고 때를 엄청 쓰던지..    db를 어떻게 연결하면

 

좋을지 감잡는대 좀 오래 걸렸던 거 같다. 결국 학우가 했던 프로젝트 db를 AWS로 했다고 말한 게 문뜩 떠올라 하루동안 

 

구글링 하고 오류를 몸으로 맞으면서 결국 연결을 성공시켰다 그 후는 좀 빠르게 구현 진도가 나간 거 같다.  

 

서버 인스턴스를 만들고 지우고 만들고 지우고 40번 정도 한 거 같다. putity도 다운로드 용량이 초과해서 그런지 몇 번이고

뻑나가고 그럴 때마다 다시 서버 인스턴스를 만들었다 다른 방법이 있다고 하긴 했는데. 그것도 공부하기엔 난 지금 첫 배포

에 눈이 멀어서 그럴 생각은 전혀 없었다.

 

특히 제일 날 화나게 하는 것은 bash4.4# 였다. 이건 날 정말 미치도록 만들었다.

 

https://okky.kr/questions/1415806#answer-660786

 

OKKY - java ec2+docker 배포중 4일동안 막혀서 질문합니다..

구글링을해도 도저히 해결이 안되서 다시 여기로 질문 드립니다 exet -it /bash를 사용해서 mysql 로 접속 할려고 합니다. 스크린샷 보시는 거와 같이 bash-4.4# 이 뜨는대이게 'ls' 빼고 모든 멍령어가 co

okky.kr

혼자 구글링 하다 안돼서 교수님 한태 질문하고 옆 학우 한태 물어보고 근처 지인한태 물어보고 커뮤니티에 올려봤고

gpt에다가도 처봤지만 아직도 이건 왜 이런지 그 누구도 이 문제를 안다고 하지 않았다.

 

좀 돌아가서 결국 mysql 서버 포트를 외부에서 가져가는 형식으로 바꿔서 갔지만 이건 왜 아직도 저렀는지 모른다 

 

추후 docker +리눅스를 공부하면서 저 현상을 한번 다시 찾아봐서 원인이 뭔지 확인을 해야 할 거 같다.

 

이제 ec2 +docker 지금까지 내가 파악한 배포의 흐름은

 

웹 만들기 ->외부 db 연결 (AWS RDS 인스턴스 생성 및 연결)-> e c2 인스턴스 생성-> 배포 때 사용될 db 연결되고 jar 파일 잘 실행되는지 확인 -> dockerfile작성-> 이미지화->도커 컨테이너화-> ec2 리눅스 접속 -> 리눅스 안에서 업데이트, 업그레이드 -> docker 설치 -> jar파일 도커 이미지 불러오기-> 컨테이너화 -> 서버포트 부여하면서 docker run -> 완료

 

내가 이해한 건 이렇게 다. db가 필요 없는 것들은 배포가 더 훨씬 쉬울 거 같고 jpa랑 뭐 db가 많이 연결될수록 골치 아파질 거 같다.. 

 

Failed to load resource: the server responded with a status of 401 ()
접근 권한은 조금씩 시간내면서 해결을 해볼 생각이다 또 이것만 잡고 해결을 하기엔 언어 핸들링을 너무 놓고 있는 느낌이 들어서 잠시 보류를 할 생각이다.

 

오류를 찾긴 했다. Thymeleaf 오류다 
 ERROR 1 --- [nio-8080-exec-4] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-4] Exception processing template "/member/memberLoginForm": Error resolving template [/member/memberLoginForm], template might not exist or might not be accessible by any of the configured Template Resolvers

일단 찾긴 했다. 조금 더 시간을 가지면서 해결해 보자

 

문제 해결은 했다.

 

1. thymeleaf 가 리눅스로 갔을 때 맨 앞에 /가 먼저 있으면 인식 못하는 문제가 생겼다 컨트롤러 파트에서 

 

return "/member/memberLoginForm";
return "member/memberLoginForm";

 

수정을 했다 

 

결국 고쳤고 최종적으로 배포는 성공적으로 끝났다.

 

 

해당글의 참고 서적  http://www.yes24.com/Product/Goods/103453774

 

스프링 부트 쇼핑몰 프로젝트 with JPA - YES24

스프링 부트와 JPA를 활용하여 실제 이커머스 업계에서 활용되는 쇼핑몰 기술들을 직접 구현해볼 수 있게 구성하였다. JPA와 Thymeleaf에 대한 간단한 예제로 기본 개념과 사용법을 익히고