-
Spring Study 3주차 8장BackEnd/Spring 2022. 5. 1. 22:28
Spring Boot와 AWS로 혼자 구현하는 웹 서비스 8장 : EC2 서버에 프로젝트 배포
⭐추가 기록사항
7장 부분의 IntelliJ에서 RDS 연결하는 부분이 말썽이었는데, Intelli J 자체에서 연결하면 RDS 인바운드 규칙에 내 IP 주소를 등록해놨음에도!! 계속 연결이 거부되었다.
✅ 그래서 그냥 MYSQL WorkBench를 이용하였다.
이걸로 접속하면 성공한다. 워크벤치 버전이 상이한 탓에 warning은 뜨지만...
이런식으로 책에 나오는 쿼리등을 입력하고 결과를 확인할 수 있다.
Intelli J RDS연결 오류는 구글링해도 많이 나오는데 intellij ultimate 버전 사용이 부담스러우면 워크벤치는 무료니까 이거 쓰는것도 하나의 해결법이다.
8.1 EC2에 프로젝트 Clone 받기
✅ EC2에 배포하기 위해 putty로 EC2 서버에 접속해서 git 명령어를 설치해주고, 원하는 디렉토리를 생성하여 깃허브로부터 clone받아온다.
sudo yum install git git clone 깃허브 주소
잘 받아졌으면 테스트를 검증하는데, 처음엔 권한이 없다는 메시지가 떠서 chmod (권한 부여)도 입력.
chmod +x ./gradlew ./gradlew test
✅ gradle을 설치하진 않았으나 gradletest는 수행이 가능하다?
-> 프로젝트 내부에 gradlew파일이 존재하기 때문. 이 파일은 환경이나 버전이 다른 상황에서도 설치하지 않고 해당 프로젝트에 한해 gradle을 쓸 수 있도록 지원하는 wrapper 파일이다.
8.2 배포 스크립트 만들기
📌 작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다.
📌 배포할 때마다 개발자가 하나하나 명령어를 실행하는 것은 불편하니, 하나의 쉘 스크립트로 작성하자.
vim 으로 deploy.sh 생성후 편집 위에서처럼 deploy.sh에 실행권한을 추가하고 실행하면 아래 화면처럼 나온다.
vim으로 nohup.out파일을 열어보면 아래처럼 failed 메시지가 기록되어있다.
✅ 우리가 gitignore로 github에 올리지 않았던 각종 설정 파일들이 존재하지 않기 때문이다!
8.3 외부 Security 파일 등록하기
gitignore에 있던 설정들을 가상 서버내에 직접 만들면 된다.
-> application-oauth.properties 파일을 step1이 아닌 app 디렉토리에 생성하고, 로컬에서 작업한 내용을 복붙!
-> deploy.sh 파일이 이 properties를 사용하도록 수정하고 다시 실행
nohup.out 파일을 확인해보면 정상적으로 실행된 것을 확인할 수 있다!
8.4 스프링 부트 프로젝트로 RDS 접근하기
책과 다르게 위에 언급했듯, MYSQL 워크벤치 사용해서 작업하였다.
rds 테이블들을 먼저 생성한다.
use firstspring; create table posts ( id bigint not null auto_increment, created_date datetime, modified_date datetime, author varchar(255), content TEXT not null, title varchar(500) not null, primary key(id) ) engine=InnoDB; create table user ( id bigint not null auto_increment, created_date datetime, modified_date datetime, email varchar(255) not null, name varchar(255) not null, picture varchar(255), role varchar(255) not null, primary key(id) ) engine=InnoDB;
그리고 프로젝트 설정에 mariadb 드라이버 build.gradle에 등록하고, application-real.properties라는 파일을 생성, 깃허브에 push 한다.
implementation('org.mariadb.jdbc:mariadb-java-client')
spring.profiles.include=oauth,real-db spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.session.store-type=jdbc
EC2에도 deploy.sh가 real profile을 사용할 수 있도록 수정하고 deploy.sh를 다시 실행한다.
curl localhost:8080에서 html코드 잘 뜨는것도 확인!
8.5 EC2에서 소셜 로그인하기
-> naver, google에 ec2주소 등록하기
'BackEnd > Spring' 카테고리의 다른 글
Spring Container (0) 2022.07.31 Spring 입문 강의 섹션 0 ~ 섹션 3 (0) 2022.07.29 Spring Study 2주차 ~ 6장, 7장 (0) 2022.04.07 Spring Study 2주차 ~ 5장 (0) 2022.04.06 Spring Study 1주차 ~ 4장 (0) 2022.03.31