백엔드 공부를 시작한지 어언 1년이 다 되어가지만 백엔드 CI/CD를 구축한 경험이 딱 한 번밖에 없었던 나였기에,,
졸업 캡스톤 개발이 시작되면서 처음으로 제대로 된(?) CI/CD를 구축해보게 되었다.
맨날 yml 파일 긁어온 뒤에 EB에 대충 배포하던 나 자신 반성해..
물론 여러 번 도전을 해봤지만 괴랄한 에러들과 맞써 싸워 이긴 경험이 많이 없어서 ci/cd 소리만 들어도 수많은 에러 로그들만 내 머리를 스쳐지나갈 뿐이었다.
하지만 이제 피할 수 없다고 생각했기에 그동안 성장했을 것이란 믿음을 갖고 천천히 VPC에 EC2를 올리는 단계부터 진행해보겠다!

우선 vpc를 만들어보자!
이름은 캡스톤 팀명인 구름모아로 설정해주고 IPv4 CIDR은 10.0.0.0/16으로 설정한다.
vpc는 이 정도로만 설정해주고 바로 vpc에 연결할 서브넷을 생성해보자!

아까 만들었던 vpc를 선택해야한다.
서브넷 이름은 뭐 아무렇게만 짓지 않으면 된다. 어떤 vpc에 연결할 건지 식별 가능한 정도로만 작성하자 (ex. 9roomMoa_subnet)
가용 영역은 아시아 태평양(서울) / ap-northeast-2a를 선택했다.
많이 사용하는 요금제인 t2.micro는 a와 c영역에서만 지원되기 때문에 이런거 신경쓰고 싶지 않다면 t3.micro를 사용해도 된다.
IPv4 서브넷 CIDR 블록은 10.0.1.0/24로 설정했다.
서브넷을 추가할 때는 10.0.2.0/24 이런식으로 만들면 된다. (서브넷 마스크의 크기가 24이므로)

인터넷 게이트웨이는 이름만 정해주고 vpc에 연결만 하면 되기 때문에 이 과정은 생략하겠다.

라우팅 테이블을 편집하여 외부 ip가 목적지인 경우, 인터넷 게이트웨이를 통하도록 설정해주면 된다.

보안그룹의 인바운드 규칙이다.
인바운드 규칙을 설정해주지 않으면 어떤 트래픽이 인스턴스에 도달할 수 있는지 정의하지 않는 것이기 때문에 원하는 요청이 우리 인스턴스에 도달하지 못하게 된다.
일단 mysql과 mongoDB 중 어떤 것을 사용할지 정해지지는 않아서 3306번 포트와 27017번 포트 둘 다 열어놓았다.
이제 VPC에 대한 설정이 끝났으니 바로 EC2를 올려보자.

역시 ec2 친구도 이름을 설정해주고 나는 Ubuntu OS 이미지를 선택했다.
예전에 UMC할 때도 Ubuntu만 썼던 것 같아서,, 아 그리고 이번에 ec2를 생성할 때는 24.04 LTS를 선택했는데 22.04를 추천한다.
레거시는 자료가 많기 때문에 22.04도 뭐,, 이제는 레거시라고 치자..
라떼(2년 전)는 20.04가 국룰이었는데ㅋ.ㅋ
키페어는 기존에 만들어 놓은 것이 있으면 그거 쓰고 없으면 새로 만들자.
나는 새로운 마음가짐으로 초심으로 돌아갔기 때문에 새 키 페어까지 생성해주었다.
위와 같이 rsa 알고리즘 + .pem 파일 형식으로 만들었다.
ED25519는 한 번도 안써봐서 그냥 쓰던거 썼다.

네트워크 설정을 할 때는 이전에 만들었던 VPC를 가져오면 된다.
편집 버튼을 누르지 않고 default vpc가 설정된 채로 서브넷과 보안그룹을 검색하면 기존에 만든 것들이 나오지 않을 수도 있으니 당황하지 말고 꼼꼼히 체크하자.
그리고 퍼블릭 IP를 자동 할당 해주어야 배포된 이후에 서버에 로컬이 아닌 퍼블릭 IP 주소로 접근할 수 있으니 이 부분도 유의해서 체크하자.
이제 EC2 생성이 끝이 났다.
만든 인스턴스에 접속해서 nginx를 다운받고 서버에 올려보자.
나는 vscode에 config 파일을 작성하고 연결하는 방식을 사용했다.
config 파일은 아래와 같다.
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 9roommoa-ec2
HostName {할당받은 퍼블릭 IP}
User ubuntu
IdentityFile /{키파일 경로}/{key-name}.pem

원격 접속이 완료되면 아래의 명령어들을 차례로 입력하여 nginx를 설치하자.
sudo apt update
sudo apt install nginx --no-install-recommends -y
apt update를 통해 패키지 목록을 최신 버전으로 업데이트하고 이후에 설치되는 패키지들을 최신 버전에 맞게 설치되게끔 해준다.
그 다음에, --no-install-recommends 옵션으로 nginx를 설치해주는데 이 옵션은 기본적으로 설치되는 추천 패키지를 설치하지 않도록 지정한다.
즉, 일반적으로 필요한 최소한의 패키지만 설치하게끔 해주는 것이다.
이 과정을 모두 거치면 public IP주소로 접속했을 때, 아래와 같이 nginx가 잘 올라가 있는 것을 볼 수 있다.

만약 위 화면이 뜨지 않는다면 인바운드 규칙에서 80번 포트가 잘 열려있는지 확인해보자!
Github Actionflows 설정은 다음 글에서 작성해보도록 하겠다.