일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리챌린지
- 비트마스킹
- multipart upload
- Navigation
- react
- FlatList
- 창의충전소
- web view
- 해외 대외활동
- 상속 관계 매핑
- 이영직
- 폴더구조
- 백준 1992
- springboot
- ReactNative
- 버튼 활성화
- 휴대폰 기기
- 구현
- 오블완
- Project Bee
- React Natvive
- 완전탐색
- bfs dfs
- 자료구조
- React Native
- service 테스트
- BFS
- 노마드코더
- 경우의 수
- 원복
- Today
- Total
유미의 기록들
[최종 프로젝트] SpringBoot 프로젝트 EC2 배포 본문
깃허브에 있는 프로젝트를 AWS EC2 우분투 환경에서 git clone으로 내려 받아 jar 파일을 빌드하여 서버를 배포하려고 한다
1. AWS 세팅하기
1) AWS Region 설정
리전 (Region)
인프라를 지리적으로 나누어 배포한 각각의 데이터 센터
EC2를 통해 컴퓨터를 빌려서 원격으로 접속하는데, EC2를 통해 빌려서 쓸 수 있는 컴퓨터들이 전 세계적으로 분포해 있는 위치를 리전(Region)이라고 한다
리전을 선택하는 기준
애플리케이션의 주된 사용자들의 위치와 지리적으로 가까운 리전을 선택하는 것이 유리하다. 따라서 한국 유저들이 주로 사용할 서비스이기 때문에 아시아 태평양 (서울)로 선택할 것이다
2) 인스턴스 생성하기
EC2 대시보드에서 `인스턴스 시작`을 눌러 인스턴스를 생성한다
원하는 인스턴스 명 지어주기
기능 별로 서버를 나누거나, 개발용, 배포용 등 여러 가지 서버를 EC2 인스턴스를 만들 수 있는 데 이를 식별할 수 있는 이름을 적는다
OS 설정
어떤 OS를 쓰는 컴퓨터를 쓸 것인 지 선택하는 것이다
Window와 Mac에 비해 성능이 좋고 가벼운 Ubuntu 64비트(x86) 으로 진행을 할 것이다.
인스턴스 유형
컴퓨터 사양을 선택하는 것
프리티어에서 사용가능한 t2,micro 를 사용할 예정이다.
키 페어 생성하기
EC2 컴퓨터에 아무나 접근하면 안되기 때문에 접근할 때 사용하는 비밀번호라고 보면 된다 따라서 EC2 인스턴스에 원격으로 접속하기 위해 필수적으로 필요하기 때문에 생성해야 한다
키 페어를 생성하면 다운로드 받아지는데 키 페어는 한번 생성하면 다시 다운 받을 수 없기 때문에 잘 보관해야 한다
네트워크 설정
보안그룹
AWS 클라우드에서의 네트워크 보안
EC2 인스턴스를 집이라고 한다면, 보안그룹은 접근해도 되는 요청인 지 검사하는 대문이라고 생각하면 된다
EC2 인스턴스 주위에 방화벽 역할을 할 보안 그룹을 만들고 보안 그룹에 규칙을 지정한다
보안 규칙에는 인바운드 트래픽과 아웃바운드 트래픽에서 어떤 트래픽만 허용할 지 설정할 수 있다
*인바운드 트래픽 : 외부에서 EC2 인스턴스로 보내는 트래픽
*아웃바운드 트래픽 : EC2인스턴스에서 외부로 나가는 트래픽
보안그룹 설정할 때는 허용할 IP 범위와 Port 를 설정할 수 있다
ssh : EC2에 원격 접속하기 위한 경로
어떤 컴퓨터의 IP에서든 EC2에 접근할 수 있다
백엔드 서버를 80번 port로 띄울 예정이라 HTTP 추가해주고 모든 IP 사용자의 접근을 허용하기 위해 인바운드 보안 그룹 규칙을 아래와 같이 추가한다
스토리지 구성
EC2로 여러 파일을 저장할 저장공간이 필요하다 이를 EBS(Elastic Block Storage)라고 부른다. 일종의 하드디스크라고 생각하면 된다. EBS와 같은 저장 공간을 더 포괄적인 용어로 스토리지(Storage), 볼륨(Volume)이라고 부른다
프리티어인 경우, 최대 30GiB까지 지원해주기 때문에 30으로 설정했다
인스턴스 최종 생성
`인스턴스 시작`을 눌러서 최종 생성한다
EC2대시보드 > 인스턴스(실행중) 으로 가보면 인스턴스가 생성되어 있는 것을 확인할 수 있다
2. EC2 우분투 콘솔에 접속하기
EC2 생성을 완료했으니 Ubuntu에 접속을 해야 한다
접속하는 방법에는 2가지 방법이 있다
1. EC2 생성할 때 다운받은 ssh 키를 이용해서 원격 접속하기
2. EC2 대시보드에서 접근 ✔️
인스턴스 요약에서 연결 클릭
연결을 눌러 Ubuntu와 연결하기
EC2가 생성한 컴퓨터에 들어왔다
3. 탄력적 IP 연결하기
EC2 인스턴스를 생성하면 할당 받는 IP는 임시적인 IP이다. EC2 인스턴스를 중지하고 다시 실행하면 IP가 바뀐다. 따라서 고정 IP를 할당 받아야 한다 그것이 탄력적 IP이다
`탄력적 IP 주소 할당` 을 클릭한다
작업 > 탄력적 IP 주소 연결
4. 우분투 콘솔에서 git ssh 연동후 git clone 하기
정적 파일 배포는 방식이 2가지가 있다
1. EC2에서 프로젝트 git clone 후 실행하기 ✔️
2. 로컬 머신에서 jar 파일하여 EC2에 복사 후 실행하기
우리의 웹 프로젝트는 github를 사용하고 있어서, 1안으로 진행하겠다
Ubuntu 환경에서 git 설치
sudo apt-get install git
잘 설치되었는 지 확인
git --version
Ubuntu 환경에서 JDK 17 설치
시스템 패키지 업데이트 & 자바(17버전) 설치
$ sudo apt update && /
sudo apt install openjdk-17-jdk -y
잘 설치되었는 지 확인
java -version
Github로부터 Spring Boot 프로젝트 clone하기
git clone 깃허브 주소
위의 명령어로 깃허브에 있는 파일을 불러온다
프로젝트 이동 후 빌드
git clone에 성공하면, 해당 파일로 이동한 후 빌드를 진행한다
cd 프로젝트 이름
./gradlew clean build
기존 빌드된 파일을 삭제하고 새롭게 JAR로 빌드한다
서버 실행시키기
빌드가 성공적으로 끝나면 build → libs 디렉토리가 생성되고, jar 파일이 생성되어 있을 것이다
2개의 파일이 존재하는 데 오른쪽 파일을 실행하면 된다
cd ~/[프로젝트 이름]/build/libs
sudo java -jar [프로젝트 이름]-0.0.1-SNAPSHOT.jar
스프링 서버가 실행된다
'대외활동 기록 > 내일배움캠프' 카테고리의 다른 글
[최종 프로젝트] Signed URL 적용 (0) | 2024.11.13 |
---|---|
[최종 프로젝트] CDN 적용하여 강의 컨텐츠 조회 성능 최적화 (1) | 2024.11.12 |
[최종 프로젝트] Reflection을 이용한 테스트 코드 (1) | 2024.11.10 |
[최종 프로젝트] AWS Multipart Upload로 대용량 파일 업로드 (0) | 2024.11.09 |
[최종 프로젝트] 생성자 대신 정적 팩토리 메서드 (0) | 2024.11.08 |