AWS RDS 생성, EC2 연결 (프리티어)

wish17·2023년 4월 21일
0
post-thumbnail

rds 생성방법

  1. db 엔진 선택

  1. 프리티어 선택

  1. db 설정
  • db 인스턴스 이름 설정 (엔드포인트에 자동으로 들어가 있어서 기억안해도 됨)
  • 사용자 이름 설정 (환경변수로 넣어줘야 하기 때문에 기억해야 함)
  • 암호 설정 (자동생성 하지 말자~ 기억하기 귀찮다.)

3.1(선택사항) 인스턴스 구성 선택

  • t2 or t3 고르면 됨
  • t2가 성능 더 안좋음
    • 과금 무서워서 성능 안좋은 것으로 선택했음

  1. 스토리지 설정
  • 프리티어 20GB까지 무료니까 기본 할당량 200 -> 20으로 변경하자.
  • 스토리지 자동 조정은 과금당하니까 해제하자.

  1. 연결 설정
  • 수동으로 연결해주기 위해서 ec2 연결 안함 선택
  • 퍼플릭 액세스 '예'
  • 보안그룹 설정 (ec2랑 같은 보안그룹으로 묶자)

5.1 모니터링

  • 돈 안드니까 선택사항~

  1. 추가구성 설정
  • 초기 데이터베이스 = 스키마 이름(pre033 기억해둬야함)
  • 자동 백업은 선택사항~

  1. 보안그룹 설정

  • java 실행을 위한 8080포트 활성화
  • mysql을 위한 3306포트 활성화

RDS 연결 방법

아래 여러 방법 중 선택하면 된다.

환경변수 적용하기

비밀번호 등 민감정보의 노출을 최소화하기 위해 환경변수 등록 방법을 적용하려고 한다.

1. 파라미터 스토어

  • 파라미터 등록
  • 애플리케이션 build.gradle 설정 추가

plugins {
	id 'org.springframework.boot' version '2.5.4'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'com.codestates.seb'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web',
			'io.jsonwebtoken:jjwt-api:0.11.2'
	implementation 'org.springframework.cloud:spring-cloud-starter-aws-parameter-store-config' // 추가
	implementation 'junit:junit:4.13.1'
	runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2',
			'io.jsonwebtoken:jjwt-jackson:0.11.2'
	compileOnly "com.fasterxml.jackson.core:jackson-databind:2.9.4"
	compileOnly 'org.projectlombok:lombok'
	compileOnly "org.springframework.boot:spring-boot-starter-security"
	runtimeOnly 'mysql:mysql-connector-java'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

dependencyManagement { // 블록 추가
	imports {
		mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Hoxton.SR12"
	}
}

test {
	useJUnitPlatform()
}

2. ec2 시스템 환경변수 추가(내가 선호하는 방법)

사용자의 홈 디렉토리에서 .bashrc 파일을 열거나 생성

vim ~/.bashrc

(원래 nano를 선호하는데 ec2에서 복붙이 이상하게 들어갈 때가 많아서 vim으로 방법을 바꿧다.)

vim 사용법

  • insert 누르고 편집 가능
  • esc 누르고
  • :wq = 저장
  • :q! = 강제 종료

파일의 맨 아래에 새로운 환경 변수를 추가하세요. 아래와 같이 환경변수 입력

// [] 괄호는 당연히 빼야함
export RDS_DATABASE_URL=jdbc:mysql://[엔드포인트주소]:3306/[스키마이름]?serverTimezone=Asia/Seoul
export RDS_DATABASE_USERNAME=admin
export RDS_DATABASE_PASSWORD=비밀번호
export ADMIN_MAIL=admin@gmail.com
export JWT_SECRET_KEY=시크릿키

URL 예시

export RDS_DATABASE_URL=jdbc:mysql://database-1.cdxszapmdz72.ap-northeast-2.rds.amazonaws.com:3306/pre033?serverTimezone=Asia/Seoul

저장 후 나온다음에 아래 명령어로 새로운 환경 변수를 적용

source ~/.bashrc

환경변수 적용 확인방법

env


자바 애플리케이션 실행

1. 서버 파일 위치에서 빌드

./gradlew bootJar

만약 권한 없다고 나오면 아래 명령어 입력해서 권한 부여

// gradlew 파일 있는 위치에서 입력
chmod 777 ./gradlew 

2. 자바 실행(서버 yml로)

서버용 yml설정과 로컬용을 따로 구분해서 만들었다.
디폴트값으로 application.yml이 적용되니 아래와 같은 명령어로 적용시킬 yml을 바꿀 수 있다.

자바 server yml 연결+실행방법

java -jar app.jar --spring.profiles.active=server

백그라운드 실행방법

nohup java -jar app.jar --spring.profiles.active=server &>/dev/null & disown

백그라운드 종료 방법

// 실행중인거 PID 찾기
ps -ef | grep java
or
sudo lsof -i :8080

// 종료
kill [PID]
// 강제 종료
kill -9 [PID]


EC2 서버 SSH 연결

  1. 우분트 홈 디렉토리에 SSH 키파일 옮기기

  1. 키파일 권한 부여
chmod 400 [my_key_pair.pem]

//예시
chmod 400 WishEC2Key.pem

  1. 실행

  • aws 홈페이지에서 알려주는 예시 명령어 그대로 복붙

  • yes 입력 후 엔터

  • 로컬 환경에서 연결 완료!

0개의 댓글