1. EC2 인스턴스 생성
EC2 인스턴스는 AWS에서 대여해주는 가상 머신으로 운영체제까지만 깔려있는 상태의 가상 머신이다.
여기서 우리는 80(HTTP)포트와 22(SSH)를 허용하는 상태로 가상머신을 띄울 것이다.
CLI 실습은 awsacademy를 이용해서 이루어진다.
AWS academy의 learner lab이다.
왼쪽 상단의 AWS를 누르면 우리가 잘 아는 AWS 콘솔로 이동한다.
콘솔에서 EC2를 검색해서 실행하는데 대부분 기본설정으로 하면 된다.
인바운드 규칙에서만 22(SSH)와 80(http)를 열어주는것만 주의하자
콘솔에서 EC2로 들어가서 인스턴스를 누르면 내가 생성한 인스턴스를 확인 할 수 있다.
2. SSH로 EC2 인스턴스 접속
아래 사진의 오른쪽 상단에 AWS Details 탭에서 SSH key를 show 버튼을 누르면 private 키가 생성된다.
learner lab에 CLI 창에 vockey.pem이라는 파일을 만들고 private 키를 입력해준다.
인스턴스를 키고 ssh 명령어를 입력하면 아래와같이 ec2에 접속이 완료된다.
이떄 인스턴스를 키고 끌떄마다 public IPV4 주소가 바뀐다.
AWS가 IP를 효율적으로 관리하는 방법인데, 사용자의 입장에서는 항상 새로운 IP주소를 확인해줘야한다.
3. Docker 설치
# Update the system
sudo yum update -y
# Install Docker
sudo yum install docker -y
# Start Docker service
sudo service docker start
# Enable Docker to start at boot
sudo systemctl enable docker
# Add ec2-user to the docker group to run Docker without sudo
sudo usermod -aG docker ec2-user
( 다시 접속해서 변경 적용 )
exit
ssh -i /path/to/your-key.pem ec2-user@<EC2-Instance-Public-IP>
4. NginX Docker 컨테이너 실행
nginx는 웹서버의 일종이다.
웹서버는 개발자들이 직접 비즈니스 로직을 작성하는 application server 앞쪽에 위치하여
정적인 파일들을 처리하는 서버이다.
웹서버는 어플리케이션 서버가 동적인 로직에만 집중할 수 있도록 도와준다.
여기서는 docker 에서
nginx 실행에 필요한 모든 코드를 모아놓은 '얼려놓은 이미지'를
pull 해와서 실행시킨다.
# Pull the latest Nginx image from Docker Hub
docker pull nginx
# Run Nginx container, exposing it to port 80
docker run --name mynginx -p 80:80 -d nginx
Nginx 컨테이너를 백그라운드에 연결 시키고
EC2 인스턴스의 80번 포트와 컨테이너의 80번 포트를 연결 ( 도커 시스템에서 컨테이너는 포트를 가진다 )
5. NginX에 접속해서 확인하기
http://<EC2-Instance-Public-IP>로 브라우져로 접속하면 확인 가능하다.
6. docker nginx 로그 확인해보기
nginx docker 로그 확인해보기
[ec2-user@ip-172-31-91-238 ~]$ docker logs mynginx
( 기본 설정 과정 -> 서버 정보 -> HTTP 접속 로그 ) 순서로 로그가 나온다.
7. cli로 EC2 인스턴스 종료시키기
.aws 폴더를 만들고 그 안에 credetials 안에 AWS CLI 비밀번호를 붙여넣으면 CLI로 인스턴스를 종료할 수 있다.
Learner Lab의 AWS Details에서 비밀번호를 얻을 수 있다.
이렇게 CLI에서 인스턴스를 종료하고 AWS 콘솔에서도 종료된 것을 확인 가능하다.
'Backend' 카테고리의 다른 글
DayPalatte : 3. API 명세서 user, auth (0) | 2025.04.14 |
---|---|
백엔드 게시판 : 코딩 자율학습 스프링부트3 자바 벡엔드 개발 입문 Part1 스프링 부트 개요 (0) | 2025.03.26 |
백엔드 4. User Domain 구현하며 흐름 잡기 (0) | 2025.02.13 |
백엔드 3. Spring Boot 아키텍쳐 (0) | 2025.02.07 |
백엔드 2.ERD 그리기 (0) | 2025.02.07 |