프로젝트를 진행하며 서버를 배포해야 하는 경우가 많다. 이때, Docker와 같은 컨테이너를 사용해도 되고, 사용하지 않아도 되지만 이 전에 배포를 했었을 때는 Docker을 사용하지 않아 사용해 보기로 했다.
진행 순서는 다음과 같다.
1. EC2 인스턴스 생성
2. EC2 인스턴스 구성
3. Route53 도메인 구매
4. ALB 구성
5. ALB & Route53 연결
6. 배포 완료 및 CI/CD 구성
6번 작업의 경우 별도 포스트를 통해 따로 설명하도록 하고, 오늘은 5번까지 어떤 순서로 진행되었는지 천천히 알아보자!!
(너무나도 당연하게 AWS 계정은 본인이 만들도록 하자.)
1. EC2 인스턴스 생성
먼저 ec2 인스턴스를 어떤 Region에 생성할지를 선택해야 한다.
aws 콘솔 화면의 우측 상단부에 존재하며, 본인이 원하는 지역으로 선택해주면 된다.
만약, 어떤 Region을 골라야할지 모르겠거나, Region이 뭔지 AZ가 뭔지 이해가 부족하다면 https://to-travel-coding.tistory.com/193의 글을 참고하여 알아보는 것도 좋다고 생각한다.
대표적으로는 사진과 같은 아시아 태평양(서울)을 사용하면 된다.
검색칸에 EC2를 검색하고, 인스턴스를 눌러 Launch instances를 눌러주자!
EC2에 대해서는 https://to-travel-coding.tistory.com/200의 글을 참고하면 자세한 내용을 알 수 있지만 여기서는 마찬가지로 대표적인 토이 프로젝트에 대한 배포를 알아보자.
이름을 먼저 설정해 준다. 구분을 위해 ec2-test와 같이 앞에 구분자를 넣어주는 것이 좋다.
이후 내가 빌리고자 하는 ec2(일종의 컴퓨터)가 어떤 운영체제를 가지면 좋겠는지 선택하면 된다. 필자의 경우 Ubuntu를 선택할 것이다.(이때 본인이 프리티어로 진행할 것이면 프리티어를 지원하지 않는 운영체제도 있으니 잘 알아보도록 하자.)
현재 단계에서는 나머지 부분에 대한 선택은 건너뛰고, 아래로 내려주자.
Instance type의 경우 어느 정도의 컴퓨팅 파워를 내는 지를 고르는 것이다.
일단 t2.micro를 선택하였다.
Key pair의 경우 필수적인데, 만약 없었다면 Create key pair을 눌러보자.
이름을 지어준 뒤 create key pair을 눌러주자! 이렇게 되면 pem파일이 하나 다운로드하여지는데 이 파일은 절대 분실하면 안 된다. 무엇보다 함부로 어딘가에 업로드하거나 누군가에게 주면 안 된다!!(본인의 비밀번호라고 생각하면 쉽다!)
네트워크의 경우 VPC와 subnet을 골라야 하는데 VPC는 아무거나 눌러준 뒤, subnet가 없다면 edit를 눌러 create new subnet를 통해 만들어주자. 이 부분에서 주의할 점은 혹여나 VPC가 여러개 생성되어 있는 경우 꼭 본인이 생성하려는 VPC에 맞춰 subnet를 생성해야 한다. 안 그러면 만들어도 안 뜬다!!
Create security group를 선택한 뒤 다음과 같이 만들어주자.
SSH의 경우 SSH 쉘을 통해 접근하는 것을 말하며, HTTP에 대한 설정을 풀어주어야 api로의 접근이 가능하다.
-> 이 경우 후에 보안 그룹 수정을 통해 HTTPS를 위한 ALB로만 접근 가능하게 변경해 주는 것이 좋다!
마지막으로 30기가까지 프리티어에서 지원하므로 30으로 변경한 뒤 Launch instance를 눌러주자!
잠시 기다리면 다음과 같이 제대로 Running가 된 것을 알 수 있다.
2. EC2 인스턴스 구성
EC2 인스턴스에 먼저 들어가자.
들어가는 방법은 1. 터미널을 이용하여 ssh에 접근 or 2. aws에서 간편하게 접속인데 빠른 접근을 위해 aws에서 접속해 보자.
instance id에 있는 것을 눌러준 뒤 connect를 누르고, connect using ec2 insatnce connect가 되어 있는 그 상태 그대로 connect 버튼을 다시 눌러주자!
그렇게 되면 터미널 창이 짜자잔 하고 뜨게 된다!
이후에 EC2에 도커와, 깃, 자바 17을 설치해 주자.
1. sudo apt update
- 시스템의 패키지 관리자(apt)가 사용하는 패키지 정보 목록을 최신 상태로 갱신하는 명령어이다.
- 이를 통해 새로운 버전의 소프트웨어와 업데이트된 패키지 정보를 받을 수 있다.
2. sudo apt upgrade -y
- 업데이트된 패키지를 설치하여 시스템을 최신 상태로 업그레이드하는 명령어이다.
- y 옵션은 사용자 입력 없이 자동으로 "Yes"로 응답해 설치를 진행한다.
3. sudo apt install -y docker.io
- Docker의 오픈소스 버전인 Docker Engine을 설치하는 명령어이다.
- Docker는 컨테이너 기반 가상화 플랫폼으로 애플리케이션을 격리된 환경에서 실행할 수 있다.
- y 옵션은 설치 과정 중의 질문에 자동으로 "Yes"로 응답한다.
4. sudo systemctl start docker
- Docker 데몬(서비스)을 시작하는 명령어이다.
- Docker를 설치한 후 컨테이너를 실행하려면 데몬이 활성화되어 있어야 한다.
5. sudo systemctl enable docker
- Docker 서비스를 시스템 부팅 시 자동으로 시작하도록 설정하는 명령어이다.
- 시스템 재부팅 후에도 Docker 데몬이 자동 실행된다.
6. sudo usermod -aG docker ubuntu
- 사용자를 docker 그룹에 추가하여 Docker 명령을 sudo 없이 실행할 수 있도록 하는 명령어이다.
- 여기서 ubuntu는 대상 사용자 이름이다.
- 변경 사항이 적용되려면 로그아웃 후 다시 로그인해야 한다.
7. sudo apt install -y docker-compose
- Docker Compose를 설치하는 명령어이다.
- Docker Compose는 여러 컨테이너를 정의하고 실행하는 YAML 파일(docker-compose.yml)을 기반으로 애플리케이션을 관리하는 도구이다.
8. sudo apt install -y git
- Git 버전 관리 시스템을 설치하는 명령어이다.
- Git은 소스 코드 버전 관리와 협업을 지원한다.
9. sudo apt install -y openjdk-17-jdk
- Java Development Kit(JDK) 17 버전을 설치하는 명령어이다.
- Java 기반 애플리케이션 개발과 실행에 필요한 도구와 환경을 제공한다.
추가 정보
- sudo: 관리자 권한으로 명령을 실행하는 데 사용된다.
- apt: Ubuntu 및 Debian 계열의 패키지 관리 시스템이다.
- y: 설치/업데이트 진행 중 사용자 확인을 건너뛰고 자동으로 진행하는 옵션이다.
여기까지 완료했다면 EC2 인스턴스 구성이 끝난다!
'지식 정리 > AWS' 카테고리의 다른 글
[AWS] S3 폴더 구조 생성 (0) | 2025.03.11 |
---|---|
[AWS] EC2 + Docker 을 이용한 Spring Boot 배포(2) (0) | 2025.01.21 |
[AWS] CI/CD 배포 전략 (0) | 2025.01.20 |
[AWS] AWS ELB (0) | 2025.01.15 |
[AWS] Amazon EFS (1) | 2025.01.03 |