post-custom-banner

프로젝트의 목적은 취업 준비를 위한 포트폴리오입니다. 배포의 목적이 저와 같으신 분들은 참고해주세요.
AWS EC2, RDS, ECR, Docker, GitHubAction을 사용하여 CI/CD 자동 배포를 구축해보겠습니다.

EC2 생성하기

Amazon EC2(Elastic Compute Cloud)는 아마존 웹 서비스(AWS)가 제공하는 클라우드 컴퓨팅 서비스입니다. 이 서비스를 통해 사용자는 가상 서버 인스턴스를 온디맨드로 생성하고 관리할 수 있으며, 이를 통해 다양한 컴퓨팅 작업을 클라우드에서 실행할 수 있습니다. EC2는 확장성이 뛰어나고 사용자가 필요한 만큼 컴퓨팅 리소스를 쉽게 확장하거나 축소할 수 있기 때문에 '탄력적'이라는 표현이 사용됩니다.

1. EC2 콘솔 대시보드에 있는 인스턴스 시작

AWS console로 접속하여 EC2에 들어가 오른쪽 상단의 인스턴스 시작을 클릭합니다.

2. 이름 및 태그 입력, 애플리케이션 및 OS 이미지 설정

이름 및 태그 - 생성할 인스턴스의 이름을 지어주는 칸입니다.
애플리케이션 및 OS 이미지 - 생성할 인스턴스의 내부 OS를 정하는 것입니다. 저는 ubuntu를 선택했습니다. ubuntu가 보편적이고 ubuntu를 사용한 블로그 글, 유튜브 영상 등이 많아 참고하기 쉬웠기 때문입니다.

3. 인스턴스 유형

인스턴스 유형 - 프리티어를 이용하고 있기 때문에 t2.micro를 선택했습니다.
키 페어(로그인) - 기존 키페어가 있다면 키페어를 선택해주고 없다면 오른쪽 '새 키 페어 생성'을 클릭합니다.

4. 키페어 생성

키페어 생성 - 키 페어 이름을 원하는 대로 작성해주고 위 설정 그대로 키 페어 생성을 클릭하면 다운로드 폴더에 .pem 파일을 저장합니다.

주의: 키페어 없이 진행하면 안됩니다. 키 페어를 설정하지 않으면 인스턴스에 접속할 수 없습니다.

5. 네트워크 구성

네트워크 구성 - 생성할 인스턴스에 접근할 수 있는 IP를 설정하는 보안 규칙을 설정하는 칸입니다. 없다면 새로 생성해주세요.기존에 보안 규칙을 설정한 것이 있다면 '기존 보안 그룹 선택'을 해주시면됩니다.

보안 그룹에서는 인바운드 규칙과 아웃바운드 규칙을 설정할 수 있습니다.
인바운드 규칙은 외부에서 서버로 들어오는 네트워크 트래픽을 제어합니다. 예를들어, 웹서버를 운영 중인 경우, HTTP와 HTTPS 프로토콜을 통해 들어오는 트래픽을 허용하도록 인바운드 규칙을 설정할 수 있습니다.
아웃바운드 규칙은 서버나 리소스에서 외부로 나가는 네트워크 트래픽을 제어합니다. 기본적으로 많은 네트워크 환경에서는 모든 아웃바운드 트래픽을 허용하는 설정이 되어 있지만, 보다 엄격한 보안 정책을 적용하고자 할 때는 이를 제한할 수 있습니다.

6. 스토리지 구성

스토리지 구성 - 생성할 인스턴스의 저장 용량을 설정하는 칸입니다. 프리티어는 총 30GB를 지원하므로 30GB로 설정해주세요. 8GB는 너무 작습니다.

7. 인스턴스 시작

요약 - 인스턴스 개수는 해당 설정과 동일한 인스턴스를 몇개 생성할 것인지를 뜻합니다. 프리 티어는 EC2 인스턴스에 한달 동안 750시간을 지원합니다. 이는 1개의 인스턴스를 1개월 동안 사용할 수 있는 시간입니다. 그러므로 저는 1개만 생성했습니다. 인스턴스 2개를 사용하면 하나 당 한달 동안 375시간을 사용할 수 있고 그 이상은 비용이 청구됩니다.

마지막으로 인스턴스 시작을 클릭해주세요. 그 후, 'pending' 상태를 기다리면 인스턴스가 '실행 중'으로 변할 것입니다.

EC2 SSH 접속하기

Window, MacOS 공용으로 사용할 수 있는 https://termius.com/ 프로그램을 추천합니다.
위 프로그램을 설치 한 후에 아래 방법을 따라 SSH 접속을 해보겠습니다.

1. Terminus 실행

왼쪽 상단의 톱니 바퀴를 클릭해주세요.

2. key 등록

Keychain > KEY > Import from key file
EC2를 생성하며 다운 받았던 키페어를 Import 해줍니다.

EC2 접속

Hosts > NEW HOST
Address는 퍼블릭 IPv4 주소를 입력해줍니다.
사용자 이름은 ubuntu
Key는 우리가 등록했던 key pair를 등록하고 Connect를 클릭합니다.

성공적으로 접속한 모습입니다.

EC2에서 apt update 안되는 에러

만약 EC2 인스턴스를 시작하고 인바운드 규칙으로 22, 80, 433 포트를 열었지만 ubuntu를 업데이트 하는데, 아래와 같은 에러가 발생한다면 다음 방법을 따라해보세요.

Ign:1 http://archive.ubuntu.com/ubuntu noble InRelease               
Ign:2 http://security.ubuntu.com/ubuntu noble-security InRelease     
Ign:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Ign:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease

위와 같은 에러가 발생하는 이유는 sudo 명령을 실행할 때, 현재 시스템의 호스트 이름을 DNS에서 찾을 수 없기 때문입니다.

1. 호스트 이름 확인

먼저, 시스템의 호스트 이름을 확인합니다.

hostname

이 명령은 ip-172-31-38-242와 같은 호스트 이름을 반환할 것입니다. 이 호스트 이름을 기록해두세요.

2. /etc/hosts 파일 수정

/ect/hosts 파일을 열고 현재 호스트가 올바르게 설정되어 있는지 확인합니다. 파일을 열기 위해 다음 명령어를 사용합니다.

sudo nano /etc/hosts

3. 호스트 이름 추가

/etc/hosts 파일 안에서 다음 줄을 찾거나 없으면 추가합니다.

127.0.0.1   localhost
127.0.1.1   ip-172-31-38-242

여기서 ip-172-31-38-242는 '1. 호스트 이름 확인'에서 확인한 호스트 이름으로, 이를 자신의 호스트 이름으로 바꾸어야 합니다. 127.0.1.1은 일반적으로 ubuntu에서 자신의 정규 호스트 이름에 사용됩니다. 저의 경우는 1번째 줄은 적혀있었고, 2번째 줄만 추가했습니다.

4. 파일 저장 및 종료

변경 사항을 저장하고 nano 편집기를 종료합니다. Ctrl+x를 누르고, 변경 사항을 저장할 것인지 묻는 메시지에 Y를 입력한 다름, Enter를 누릅니다.

5. 시스템 네트워크 재시작

변경 사항을 적용하기 위해 네트워크 서비스를 재시작할 수 있습니다.

sudo systemctl restart systemd-networkd

6. DNS 변경 다시 시도

이제 /etc/hosts 파일이 수정되었으므로 다시 DNS 설정을 변경해봅니다.

echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf > /dev/null

이제 이 명령을 실행했을 때, 이전의 sudo 관련 에러가 발생하지 않아야 합니다.

post-custom-banner

0개의 댓글