✅ 개요
백엔드 서버 개발이 완료되었기 때문에 배포를 해야한다.
AWS EC2를 통해 백엔드 서버를 배포해보겠다.
✅ EC2 인스턴스 생성
⚙️ OS 설정
- OS는 우분투를 사용하였다.
🔐 보안그룹 설정
인바운드 규칙
- 20번 포트(SSH): 내 로컬 PC에서 EC2에 원격 접속하기 위해 필요한 프로토콜이다. 내 로컬 PC에서만 접근할 수 있도록 하였다.
- 8080번 포트: 스프링부트 서버가 동작할 포트번호이다.
생성이 정상적으로 완료되었다.
📲 탄력적 IP 할당
생성된 인스턴스에 탄력적 IP를 할당하였다.
✅ EC2에 Spring boot server 배포하기
1️⃣ EC2에 SSH로 접속하기
나같은 경우 Mac 터미널에서 제공되는 SSH 기능을 활용하였다.
AWS EC2 인스턴스에 접속하기 (MAC)
인스턴스에 접속하기 인스턴스에 접속하기 위해서는 우선 인스턴스를 생성해야 한다. EC2 인스턴스 생성하기 여기서는 윈도우가 아닌 MAC OS에서 기본으로 제공하는 터미널을 이용하여 인스턴스
soobarkbar.tistory.com
해당 포스트를 참고하였다.
$ ssh aws-practice-ec2
정상적으로 접속이 잘되었다.
2️⃣ JDK 설치
우선 Spring boot 서버를 배포하기전 EC2에 JDK를 설치해야한다.
나는 jdk17 버전을 사용해서 개발했으므로 17을 설치하였다.
$ sudo su # 루트 권한획득
$ apt-get update && apt-get upgrade # 최신버전으로 업그레이드 가능한 패키지 리스트들을 가져오고 그 패키지들을 최신 버전으로 업그레이드
$ sudo apt install openjdk-17-jdk -y # jdk 17 다운
- apt-get update: 최신버전으로 설치 가능한 패키지들의 리스트를 가져온다.
- apt-get upgrade: 최신버전으로 업그레이드한다.
설치확인
$ java -version
3️⃣ Spring boot 프로젝트 Git Clone하기
GitHub - jhk01007/aws_practice-backend: AWS 실습 백엔드 서버
AWS 실습 백엔드 서버. Contribute to jhk01007/aws_practice-backend development by creating an account on GitHub.
github.com
$ git clone https://github.com/jhk01007/aws_practice-backend
$ cd aws_practice-backend
4️⃣ application.yml 파일 추가
application.yml은 깃허브에 올라가면 안되는 파일이기 때문에 올리지 않았었다.
따라서 ec2에서 별도로 작성을 해줘야 한다.
$ vi application.yml
5️⃣ 환경변수 추가
데이터 소스에 대한 url, username, password를 환경변수로 관리했었기 때문에 그 부분도 추가해줘야 한다.
$ vi ~/.bashrc
다음 내용 추가
export DB_PASSWORD=
export DB_USER=
export DB_DATABASE=
export DB_URL=
변경사항 적용
$ source ~/.bashrc
$ printenv # 적용 확인
6️⃣ 서버 빌드
$ ./gradlew clean build # 기존 빌드된 파일을 삭제하고 새롭게 JAR로 빌드
🚨 오류발생
테스트를 돌리던 중 오류가 발생했다.
이는 데이터베이스 연결에 실패했기 때문이다.
당연한 결과이다.
개발환경에서는 localhost에 있는 데이터베이스를 사용했기 때문에 ec2로 외부에 배포한 상황에서는 당연히 접근할 수가 없다.
✅ 마치며
따라서 데이터베이스도 배포를 해줘야 한다.
나는 RDS를 통해 데이터베이스를 배포할예정이다.
다음 포스트에서 이어서 진행하겠다.
'AWS' 카테고리의 다른 글
[AWS 실습 프로젝트] 7. RDS를 통해 MySQL 서버 배포하기 - (2) RDS MySQL 데이터베이스 만들기 (2) | 2024.09.17 |
---|---|
[AWS 실습 프로젝트] 6. RDS를 통해 MySQL 서버 배포하기 - (1) 안전하고 저렴하게 배포하기 위한 VPC도입 (0) | 2024.09.17 |
[AWS 실습 프로젝트] 4. Spring boot로 S3에 이미지 업로드 및 수정 비즈니스 로직 구현하기 (0) | 2024.09.17 |
[AWS 실습 프로젝트] 3. Spring Boot와 S3 연동해서 이미지 업로드하기 (0) | 2024.09.17 |
[AWS 실습 프로젝트] 2. 이미지 업로드를 위한 AWS S3 인프라 구성 (1) | 2024.09.17 |