본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/AWS

AWS 이용해서 웹사이트 만들기 - DB 설정하기

by dazwischen 2022. 6. 14. 00:02
반응형

aws-웹사이트-구축-db-설정-썸네일-이미지이다.
aws 웹사이트 구축 db 설정

테이블 생성

H2가 자동으로 생성해 주던 테이블들을 보안을 위해 직접 만들어야 한다. 이를 위해서 IntelliJ에서 RDS에 처음 접속했을 때 TEST 테이블은 만든 방식으로 두 개의 테이블을 만들 것이다.

Entity 테이블

IntelliJ에서 Application을 실행하면 콘솔창에 Hibernate와 함께 자동 실행됐던 쿼리문들이 나온다. Hibernate를 제외한 순수 쿼리문만을 복사한다.

intelliJ에서-애플리케이션-실행시-자동으로-작동하는-hibernate-모습이다.
intellij hibernate

엔터티 테이블이 여러개라면 위 처럼 여러개의 Hibernate가 나왔을 것이다. 하나하나 다 만들어 주면 된다. 데이터베이스 탭에서 QL 아이콘을 눌러서 New Query Console을 실행한다.

데이터베이스에서-QL-아이콘을-클릭한다.new-query-console을-실행
데이터베이스에서 새로운 콘솔을 실행

쿼리가 여러개라면 여러개를 복사해서 붙여 넣어주면 된다. 줄은 띄고 해도 되고 이어서 해도 된다. 다만 각 쿼리문 끝에 세미콜론(;)을 넣어줘야 한다. 그리고 모든 쿼리를 한 번에 실행하기 위해선 모든 쿼리를 블록설정하고 왼쪽 위 실행 버튼이나 command + enter를 눌러주면 된다.

hibernate에서-복사한-쿼리를-콘솔창에서-실행한다.
query 실행

성공적으로 생성되었다면 데이터베이스 탭에서 생성된 테이블 리

쿼리-실행후-성공적으로-생성된-테이블-목록이다.
테이블 리스트

스트를 확인할 수 있다.

 

Session 테이블

스프링 세션 관리를 위해 필요한 세션 테이블을 생성해야 한다. 세션 관리를 위한 테이블 생성 쿼리문은 schema-mysql.sql 파일에서 확인할 수 있다. 애플리케이션 실행을 진행한 IntelliJ에서 Command + Shift + O (윈도우에선 Ctrl + Shift + N)을 실행한다. 여기서 File 탭에서 schema-mysql.sql 파일을 검색하여 실행한다.

schema-mysql-파일을-intelliJ에서-검색한다.
schema-mysql

파일을 실행하면 아래와 같은 쿼리문을 볼 수 있다. 이 쿼리문 전체를 복사하여 위에 엔터티 테이블 생성과정과 동일하게 실행한다.

session-테이블을-생성하는-쿼리문이다.
session query

쿼리가 정상적으로 실행되었다면 데이터베이스 테이블 목록에서 SPRING_SESSION과 SPRING_SESSION_ATTRIBUTES 테이블을 확인할 수 있따.

세션-테이블들이-생성된것을-확인할-수있다.
테이블 목록

DB 세팅

본 포스트는 Gradle과 Spring Boot를 이용해서 작성한 웹사이트를 개시하고 있다. 로컬에서 작업할 때 아직 설정해 두지 않았던 MariaDB 설정을 마무리 지을 것이다.

build.gradle 수정

build.gradle 파일에 아래의 의존성을 추가해준다.

compile("org.mariadb.jdbc:mariadb-java-client")

application-real.properties 생성

/src/main/resources/ 위치에 application-real.properties 파일을 생성해준다. 보안 정보는 따로 없는 아래의 정보만을 입력해준다.

spring.profiles.include=oauth,real-db
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.session.type.store-type=jdbc

작성이 완료 된 후 이 두 파일을 github에 푸쉬해준다.

EC2 서버 세팅

이제 RDS 접속 정보를 OAuth 프로퍼티 파일과 같은 방식으로 EC2 서버에 직접 작성해 줄것이다. 직접 작성하는 이유는 역시나 보안상 안전성을 높이기 위함이다.

application-real-db.properties

EC2 서버에 터미널 접속 후 ~/app/ 위치에 application-real-db.properties 파일을 생성한다.

$ vim ~/app/application-real-db.properties

이 프로퍼티 파일에 다음의 내용을 자신의 정보를 추가하여 작성한다.

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mariadb://rdsAddress:PortNumber/databaseName
spring.datasource.username=dbId
spring.datasource.password=dbPassword
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

rdsAddress는 RDS 인스턴스의 엔드포인트를 말한다. AWS에 접속 후 RDS페이지에 들어가 해당 RDS의 인스턴스를 클릭하면 연결 & 보안 정보에서 앤드포인트와 포트정보를 확인할 수 있다. 이 두 정보를 rdsAddress와 PortNumber에 작성해주면 된다. databaseName은 RDS 인스턴스의 이름을 작성해 주면 된다.

연결-보안-정보에서-앤드포인트와-포트정보를-확인할-수있다.
RDS 인스턴스 정보

dbId와 dbPassword는 모두 RDS를 생성할 때 정한 정보를 작성해주면된다. 작성을 마친 다음에는 역시나 "esc", ":wq" 명령어를 실행해 저장 종료한다.

:wq

deploy.sh 수정

역시나 properties 파일을 사용할 수 있도록 deploy.sh의 nohup 부분을 수정해 줄 것이다.

nohup java -jar \ -Dspring.config.location=classpath:/application.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties,classpath:/applicationnohup java -jar \
    -Dspring.config.location=classpath:/application.properties,classpath:/application-real.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties \
    -Dspring.profiles.active=real \
    $JAR_NAME > $REPOSITORY/nohup.out 2>&1 &real.properties \ -Dspring.profiles.active=real \ $REPOSITORY/$JAR_NAME 2>&1 &

성공적으로 작동 한다면 아래 명령어를 입력했을 때 메인페이지의 html 내용을 볼 수 있다.

 

반응형

댓글