EC2 Ubuntu로 인스턴스를 만들어준뒤
보안그룹을 만들어서
일반접속을 위한 8080과
내가 EC2서버를 만지기위해 SSH를 활성화
DB를위해 MYSQL를 활성화했다
pem 키를 저장해주고
이걸 git bash로 열어서
ssh -i (pem 파일 경로) ubuntu@( 퍼블릭 IPv4 DNS) 로 접속해준뒤
sudo apt-get install git
git --version
cd ~/.ssh
ssh-keygen -t rsa -C gitbut이름@github.com
cat id_rsa.pub로
키복사해서 깃허브 설정페이지에 가서 ssh에 new ssh key 에 저장
git clone ssh주소 로 EC2서버에 깃허브 프로젝트를 가져와준다
sudo apt install openjdk-17-jdk (+ jre도)
로 자바를 깔아주고 (나는 17버전으로 프로젝트를 진행해서 같은 17버전으로 맞춰줌)
chmod +x gradlew
./gradlew clean build
하면 끝~ 이지만
org.json.simple 파일 이랑
DB연동이 아직 안되서 당연히 Error
DB연동
https://woojin.tistory.com/37
https://hello-gg.tistory.com/56
위에 두글을 참고해서 DB연동을 진행했다
연동은 완료
프로젝트 private파일에서 DB연동할때 사용했던
ser이름 비번이랑 같이 맞춰주는게 편할듯 해서 새로 유저등록하고 권한을 모두 부여했다.
이제 gradlew를 build하면 json-simple 에러만남겠지! 하고 실행하는순간
EC2서버가 멈춰버렸다...
'
서버 모니터링을 보니 Build를 하는순간 CPU 할당량이 부족해 멈춰버린것
일단 데드락에 걸려버린 서버를 풀어야하니 인스턴스를 중지시킨후 재시작 했다.
중지하는데도 10초정도 소요가되는느낌 강제중지는 뭔가 불안해서 안누름
그 후 접속해보려니 이번엔 ssh접속 Timeout이 뜬다
여러 해결방법이있던데 인바운드 규칙 문제는 아니였고 (참고: https://babe-dev.tistory.com/103)
Public IP를 탄력적 IP로 할당해보라길래
[네트워크 및 보안] - 탄력적 IP에 가서
새로운 탄력 IP를 할당했다 (옵션은 건들 필요도 없음)
했더니 퍼블릭 IP가 변경되있고 그걸로 접속해보니 잘됨
프리티어의 CPU문제는 아래 글을 통해서 해결해 보았다
su로 root권한으로 바꾼뒤 다시 .gradlew를 빌드해봄
이번엔 CPU 데드락 없이 잘실행됬지만 아까 말했던 json 파일 오류가 남아있음
원래는 이런 jar파일을 따로 다운받아서
이런식으로 수동으로 추가했었는데
우분투에선 방법을 못찾아서 그냥
build gradle 파일을 vi에디터로 편집했다
저렇게 한줄 추가함
:그리고 다시 build했는데 또 에러가뜸!
에러는 HTML파일로 로그가 남아있길래 열어보니
찾아보니
build.gradle 마지막줄에
이렇게 생긴친구를
이렇게 바꿔서 완료
하지만 같은에러가 떳다! 해결방법을 찾아보니
bootRun으로 실행하면 잘 돌아간다 (참고 :https://gamzzang.tistory.com/126)
스프링부트 테스트 어노테이션을 제거해도되지만 이방법으로 일단 진행해봄
이젠 빌드는 성공했으나 어떠한 이유로 서비스가 종료됨 읽어보니
[Error creating bean with name 'entityManagerFactory' defined in class path resource]
DB생성 관련 문제가 생기는거 같아 또 구글링
build.gradle에 다음 한줄을 추가하고
implementation group: 'org.javassist', name: 'javassist', version: '3.15.0-GA'
./gradlew clean build를 했으나 여전히 해결이안되
찾아보니
여기서 mysql://localhost 에서 //가아니라 /로 해야 에러가 안뜬다함
바꿧는데도 해결 X -> 해결에 도움이안되니 다시 //두개로 복구
그다음으로 applcation.properties에서
spring.jpa.hibernate.ddl-auto=update를
spring.jpahibernate.hbm2ddl.auto= update 로 변경하라함
-> 해결또 안됨
보안을위해 application-private.properties를 github에 안올라가게 설정해놓고
git에서 클론을 받은것
ㅋㅋㅋ 이런 바보같은실수 때문에 정장 3시간을 날려먹음~
빌드를 했더니
83퍼에서 멈췄고 검색해서
sudo apt-get install lib32stdc++6
sudo apt-get install lib32z1
두개 install 해주고 다시실행해서 (참고: https://stackoverflow.com/questions/32360632/gradle-build-gets-stuck-at-executing-tasks-appgeneratedebugsources-appgen)
이번엔 실행이 됬다!!!는 이젠 DB연동오류가 발생
camping 스키마에 CAMPING테이블이 없단다.. 왜지 해서 mysql접속해서 테스트해보니
대소문자를 구분하네?....
/etc/mysql/mysql.conf.d 파일을 수정해서 대소문자 구분을 없앴다 (다음부턴 처음 만들때 부터 생각해야겠다)
(참고:https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html)
read only파일이라 관리자권한으로연뒤 강제저장 해줬다 :w!q
그후에는
이런 에러가 떠서
application.properties 파일에
spring.jpa.properties.hibernate.boot.allow_jdbc_metadata_access=false
를 한줄 추가해줬고
[오류]
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'entityManagerFactory' defined in class path resource
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
[PersistenceUnit: default] Unable to build Hibernate SessionFactory;
nested exception is org.hibernate.exception.JDBCConnectionException:
Unable to open JDBC Connection for DDL execution [Communications link failure]
그 뒤에 뜨는 오류는
spring.datasource.url=jdbc:mysql://localhost:3306/camping
spring.datasource.url=jdbc:mysql:/localhost:3306/camping
apllication.properties private버전 파일 내용을 위의 내용을 아래처럼 바꿔서 수정
그리고 남은 에러가
jdbc의존성에 관한 에러였는데
아래글을 참고해서 해결했다
(참고글: https://bool-flower.tistory.com/79)