1. EC2 셋팅하기 - 스토리지 구성
스토리지 구성
EC2도 하나의 컴퓨터이다 보니 저장 공간(하드 디스크, SSD 등)이 필요하다. 이러한 저장 공간을 EBS(Elastic Block Strorage)라고부른다. EBS와 같은 저장 공간을 조금 더 포괄적인 용어로 스토리지(Storage) 볼륨(Volume)이라고 부른다.
셋팅
gp3를 골라준 이유는 가성비가 가장 좋아서이며, 용량을 30GiB로 설정한 이유는 프리 티어에서 무료로 30GiB까지 지원해주기 때문이다.
2. EC2 접속하기
생성된 인스턴스 정보 해석하기
1) 세부 정보
- 퍼블릭 IPv4 주소: EC2 인스턴스가 생성되면서 부여받은 IP 주소이다. EC2 인스턴스에 접근하려면 이 IP 주소로 접근하면 된다.
- 인스턴스 상태: EC2 인스턴스의 상태이다. 실행 중은컴퓨터가 켜져있다는 의미이다. 우측 상단에 있는 상태에서 인스턴스를 중지, 재부팅, 종료가 있는데 주의할 점은 인스턴스 종료는 컴퓨터 종료라는 의미가 아니라 인스턴스를 제거한다는 의미라 조심해야 한다.
2) 보안(보안 그룹)
인스턴스 생성 시 설정한 보안 그룹에 대한 정보가 나옴.
3) 네트워크
퍼블릭 IPv4 주소는 생성한 EC2 인스턴스의 IP 주소를 뜻한다.
4) 스토리지
인스턴스 생성 시 설정한 스토리지에 대한 정보가 나온다
5) 상태검사
잘 안 보는 창이다.
6) 모니터링
EC2 인스턴스에 관련한 여러가지 정보를 볼 수 있는 창이다. 처음 AWS에 입문할 때는 잘 볼 일이 없는 창이지만, 나중에 실제로 서버를 운영할 때 자주 보게 되는창이다.
7) 태그
잘 안 보는 창이다.
EC2에 접속하기
3. 탄력적 IP 연결하기
탄력적 IP가 왜 필요할까?
EC2 인스턴스를 생성하면 임시 IP를 발급받는데, 이러한 임시 IP는 EC2를 중지할 때마다 새로운 IP를 할당받는다. 그래서 바뀌지 않는 IP를 할당해주어야 하는데 이게 탄력적 IP이다.
탄력적 IP 설정 방법
주의!!
탄력적 IP를 인스턴스에 연결하지 않으면 한달에 3600원 정도의 비용이 발생할 수 있다.
4. Express 서버를 EC2에 배포하기
1) Ubuntu 환경에서 Node.js 설치하는 방법
Ubuntu 환경에서 Express 서버를 실행시키려면 Node.js를 설치해야 함.
$ sudo su
$ apt-get update && /
apt-get install -y ca-certificates curl gnupg && /
mkdir -p /etc/apt/keyrings && /
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && /
NODE_MAJOR=20 && /
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list && /
apt-get update && /
apt-get install nodejs -y
2) 설치 확인
$ node -v
3) Github로 부터 Express 프로젝트 clone
$ git clone https://github.com/project/example-project
$ cd ec2-express-sample
$ npm i
4) .env 파일 직접 만들기
.env와 같은 민감한 파일은 Git으로 버전 관리를 하지 않는게 알반적이다. 따라서 .env 파일을 EC2 인스턴스에 직접 올려주거나 .env를 직접 만들어 준다. env를 직접 만들어주는 게 더 간단하다.
.env
vi .env
DATABASE_NAME=my_database
5) pm2 설치해서 서버실행
Node 기반의 서버는 pm2 를 활용해서 많이 실행시킨다.서비르를 운영하는 데 있어서 유용한 기능을 pm2가 많이 가지고 있기 때문이다.
$ sudo npm i -g pm2
$ sudo pm2 start app.js
5. Express 서버를 EC2에 배포하기
1) Ubuntu 환경에서 JDK 설치
스프링 부트의 버전은 3.x.x JDK 버전은 17 버전을 사용
$ sudo apt update && /
sudo apt install openjdk-17-jdk -y
2) 설치 확인
항상 무엇을 설치하던지 간에 중간에 한번 씩 확인을 해주어야함
$ java -version
3) Github로부터 Spring Boot 프로젝트 Clone
git clone https//github.com/test/example-project
cd example-project
4) application.yml 파일 직접 만들기
application.yml 같이 민감한 정보가 포함된 파일은 Git으로 버전 관리를 하지 않는 게 일반적이다. 따라서 application.yml 파일은 별도로 EC2 인스턴스에 올려주거나, application.yml파일을 직접 만들어준다. 직접 만들어 주는 것이 더 간단하다.
src/main/resources에 위 4-4 같이 vim application.yml 작성
5) 서버 실행시키기
$ ./gradlew clean build # 기존 빌드된 파일을 삭제하고 새롭게 JAR로 빌드
$ cd ~/example-project/build/libs
$ sudo java -jar example-project-0.0.1-SNAPSHOT.jar
참고)
$ sudo nohup java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar &
6) 퍼블릭ip:8080에 접근해서 실행됐는지 확인
'기타' 카테고리의 다른 글
[CI/CD] 일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (0) | 2024.08.04 |
---|---|
[CI/CD] 개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (0) | 2024.07.29 |
[오류] cannot open .git/FETCH_HEAD: Permission denied (0) | 2024.07.21 |
[CI/CD] 백엔드 CI/CD에 필요한 AWS 지식 1 (0) | 2024.07.15 |
[오류] fetch join 엔티티가 조회되지 않는 오류 발생 (0) | 2024.04.03 |