현재 EC2 와 RDS 인스턴스를 생성하고 설정까지 마친후에 이제 내가 만들어놓은 프로젝트를 EC2 에 배포하는 과정이다. cmd로 EC2에 SSH 방법을 이용해서 접근하는 것까지는 완료했고 GITHUB에 있는 프로젝트를 EC2에 클론까지 완료. 자바를 EC2에 설치해주는 것 까지는 완료했으나
빌드와 테스트 하는 과정에서 오류 발생
jdk 를 설치해서 적용했지만 java와 javac 의 버전이 다르다 javac 버전을 수정해야하는데 아직 방법을 찾지 못했고 일단 진행
클론해온 프로젝트 폴더로 이동후 파일 확인
There were failing tests. See the report at: file:///home/ec2-user/app/git/board_project/build/reports/tests/test/index.html
라는 오류를 발생해서 해당 파일을 확인해보자.
파일을 확인해보니
./index.html: line 1: syntax error near unexpected token `newline'
./index.html: line 1: `<!DOCTYPE html>'
라고 서있었다.
블로그를 참고해서 알아보니 test 에서 오류가 발생하였고 알아보니 단위 테스트가 작성되지 않았는데 빌드가 되면서 난 에러였다.
그래서 build.gradle 에서 아래 테스트 구문을 제거해보았다.
정상 적으로 빌드가 되는 모습을 볼 수 있다.
이전에 쉘 스크립트를 사용해서 작성했던 deploy.sh 파일도 정상적으로 실행되는지 실행시켜보자
정상적으로 실행된다.
쉘 스크립트 내용은 ->
git clone 혹은 git pull을 통해 새 버전의 프로젝트 받음
Gradle / Maven을 통해 프로젝트 Test & Build
EC2 서버에서 해당 프로젝트 실행 및 재실행
일반적인 배포의 과정이다
이제 쉘 스크립트도 요류없이 무사히 실행되었고 이제 AWS 로 다시 돌아가서 EC2의 인스턴스에 들어가서 퍼블릭 IPv4 DNS 주소로 들어가지는지 확인하면 된다.
위와 같이 8080포트를 열어주고 접근 했는데 오류가 발생했다...
보안 그룹의 인바운드 규칙은
위와 같이 설정되어있기때문에 8080으로 접근이 가능하다고 알고있는데 오류가 발생햇다 해결해보자!
보통 이런 오류는 보안 그룹의 인바운드 규칙에서 대부분의 오류가 발생한다고 하니 일단 인바운드 규칙부터 살펴보자.
인바운드 규칙에는 문제가 없어서 다른 방법을 찾아보았다
찾아보니까 우리가 사용한 쉘 스크립트는 nohup명령으로 jar 파일을 진행하는데 이때 결과물로 nohup.out 파일을 만들어주게된다.
이 파일을 살펴보니
이 오류를 살펴보니 접근할 Dialect해결정보는 null일 수 없습니다.
'hibernate.dialect'이 세팅되지 않았다. 라는 뜻이였다.
검색해봤더니 application.yml 파일에 JPA 부분에
database: mysql # 추가 해준 부분
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect # 추가 해준 부분
이 문장을 추가로 작성해주게되면 해결된다고한다.
따라서 코드를 수정하고 다시 푸쉬해준다음에 deploy.sh 파일을 실행해보자.
여전히 같은 오류가 발생한다.
언제나 그랬듯이 해결할 수 있을것이다. 내일 이어서 해결해보자