
서울로 선택
인스턴스 시작

서버 이름 짓기

os선택하기 ami는 프리티어로

[2025.10 업데이트]
프리티어 6개월 + 200USD 크래딧으로 바뀌면서 AMI선택 범위가 늘어났다.

그렇지만 DeepLearning은 아직 써보진 않았기때문에 24.04또는 22.04 를 선택.
두가지의 차이는 아래와 같다
22.04 LTS
24.04 LTS
인스턴스 유형은 t2.micro 프리티어 선택

keypair 생성


VPC설정은 기본값 그대로. 보안그룹도 설정된 값 그대로. 나중에 추가할것임


스토리지는 최대 30GB를 지원해주기때문에 30으로 해주기

결과적으로

만들기

단축키: command + shift + P

필자는 root directory에 awsSSH를 모아놓고 관리하는 편이다.

이런식으로 복붙하면 편하다

Permission Denied뜨면 .pem권한 바꿔주기

% chmod 400 myKey_250523.pem
접속 성공

인스턴스를 껐다가 키면 public IP가 변경된다. 이를 방지하기 위해 고정 IP를 받는것이다. 이 기능은 원래 무료였으나, 2024년 2월부터 과금 대상이 되었다.
aws 공식지원 홈페이지

정말 슬프게도 계속 서비스를 돌릴 계획이면 한달에 약 5천원(0.005 USD × 24시간 × 30일 = 3.6 USD/월) 정도 나오는 셈이다. 무료티어인듯 무료티어 아닌 무료티어인 셈이다.
그래서 필자가 운영 중인 Wepin 서비스도 개발과 운영 두 개의 서버를 분리하여 사용하고 있었지만, 어느 순간부터 퍼블릭 IP 사용에 대한 과금이 발생하는 것을 확인하고, 운영 서버의 퍼블릭 IP는 과감히 해제하고 터널링 방식으로 전환하게 되었다.
그럼에도 불구하고 설정해보자


전부 기본값으로 셋팅하고 할당받기


방금 생성한 인스턴스 선택하고 연결
먼저 git설치하기
$ sudo apt-get install git

ssh키 만들기
$ ssh-keygen -t rsa -C github계정 메일(mygitgubid@github.com)
만든 id_rsa.pub을 cat 명령어로 확인 후 github의 setting에 추가하기
$ cat id_rsa.pub

그리고 git clone 을 해줍니다.
$ git clone 레포지토리ssh주소

jdk-17.0.1을 사용했기때문에 서버에도 똑같은 버전을 받아줍니다.
wget으로 다운로드
압축 해제
$ tar -xvzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz
/usr/lib/jvm 폴더로 이동시키기
$ sudo mv jdk-17.0.1+12 /usr/lib/jvm/jdk-17.0.1
java 설정
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17.0.1/bin/java 1100
java 버전 확인하기
$ java -version
application.yml 와 같은 민감한 정보가 포함된 파일은 Git으로 버전 관리를 하지 않는게 일반적이다. 따라서 application.yml 파일은 별도로 EC2 인스턴스에 올려주어야 한다.
src/main/resources/application.yml 경로에 만들어주도록 하자.

작고 소중한 서버의 Ram용량을 늘려주지않으면 빌드중 서버가 먹통이 될 수 있다. 1GB를 4GB로 늘려주자.
$ sudo fallocate -l 4G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo swapon --show
위 명령어들을 차례대로 실행해주자

정상적으로 스왑이 되었는지 확인
$ free -m

혹시나 재부팅 할 경우가 생길수도 있으니 부팅 되었을때 자동으로 스왑 되도록 설정
$ sudo vi /etc/fstab
맨 마지막줄에 아래 한줄 추가하고 저장
/swapfile swap swap defaults 0 0

RDS검색해서 데이터베이스 생성하기

자신이 사용하는 DB선택하기

엔진 버전은 로컬MariaDB와 맞추면 좋겠지만 현재 로컬은 11.7.2이므로 제일 높은 버전으로 선택

db이름 적어주고 자체관리 체크

암호 지정해주기

인스턴스 구성 기본값 해주기

스토리지 기본값 해주기

연결도 기본값으로 셋팅하고 퍼블릭 엑세스만 예 체크



데이터베이스 인증, 모니터링 기본값 해주기

생성후 DB전용 인바운드 규칙 만들기
ec2 > 보안그룹 > 보안그룹 생성

다시 RDS로 와서 DB인스턴스 수정을 클릭하고 3306 인바운드가 들어가있는 보안그룹 추가

파라미터 그룹 추가


생성후 편집 클릭 > character검색어에 쳐서 아래 속성들 utf8mb4로 설정
character_set_clientcharacter_set_connectioncharacter_set_databasecharacater_set_filesystemcharacater_set_resultscharacter_set_server
collation검색어에 쳐서 아래 속성들 utf8mb4_unicode_ci로 설정
collation_connectioncollation_server

Asia/Seoul로 설정
DB인스턴스 수정해서 파라미터 그룹을 방금 만든 그룹으로 설정

DBeaver로 잘 연결되나 확인


api 포트를 8080으로 했기때문에 인바운드 규칙에 8080을 추가

TCP, 8080, 0.0.0.0/0 (또는 허용된 IP 범위) 으로 추가해주기
$ ./gradlew clean build
$ cd build/libs/
$ java -jar anything-0.0.1-SNAPSHOT.jar

https는 아직 설정을 안해주었기때문에 http로 접속해야한다.
