본문 바로가기

만들고 싶은거 만들기

광고 수익을 창출할 웹사이트 만들어보기 3-4(AWS EC2 서버 빌리기)

지난편에서 리액트서버는 버셸에서 배포가 완료되었기 때문에 이번엔 Flask 서버를 배포해 보겠다. 

나는 azure만 좀 많이 사용해보고 AWS는 5년전에 테스트용으로 사용해보고 기억이 아무것도 나지 않는다.

그래도 일단 진행해본다.

진행시켜

AWS배포는 여러 단계로 나눠서 진행할 예정이다.

일단 이번편에서는 서버를 빌리는 단계까지 진행해 볼것이다.

글 하나가 너무 길어지면 내가 작성하기 힘들어서 그렇다.


일단 내가 사용할 AWS 서비스는 EC2다. 

EC2가 서버인건 아는데 이게 뭘 의미하는건지는 모른다.

이제 알아봐야 된다.

 

어음 그렇구나 물리적인 서버를 빌려주는거구나 어 알았어.

이름이 궁금해서 좀 찾아봣는데 Elastic Compute Cloud = 탄력적 컴퓨팅 클라우드 

 

필요한 리소스를 유연하게 늘리거나 줄일 수 있는 기능이여서 일래스틱이라는 말을 쓰는거였다.

 

이제 서버를 빌려 접속해보자.


웹사이트에 들어가 로그인 해줘야 하는데 AWS의 경우 루트사용자계정과 IAM사용자계정 두개로 나뉜다.

리눅스나 윈도우의 계정에 대해 잘 알고있는 사람은 어느정도 익숙한 구조이지만, (그래도 하나로 관리하는게 편하긴 함)

일반적인 사용자 입장에서는 불편하게 다가올수도 있다.

 

두개의 차이점은 아래와 같다.

루트사용자는 웬만하면 그냥 두고 일상적인 AWS서비스를 사용하는걸 권장한다는 건데

 

문제는 4년전에 썼던것같은  IAM사용자 계정 로그인정보가 기억이 나지 않는다.

(그때는 프로그래밍 공부를 처음 시작할 때라 아무것도 모른채 수업 따라가는게 전부여서 기억안남............)

 

아무튼 IAM유저 계정을 찾아 로그인해보자....

루트계정은 일단 로그인이 가능하니 루트계정으로 로그인 후 검색창에 IAM 콘솔을 들어가본다.

나는 이런걸 만진 기억이 없는데...?

 

이전에는 그냥 루트계정으로 빌렸나보다.

아무튼 보안을 위해 IAM 계정을 만들어 로그인을 진행해보자.

IAM콘솔로 접속해서 사용자 > 사용자 생성에 들어가 계정을 생성한다.

일단 admin으로 만들고 다음을 눌러보면 권한을 설정해야 하는데 그룹을 만들어 사용자를 그룹에 추가하는 방식으로 진행해보겠다.

그룹생성 버튼을 누르면 그룹이름과 권한 정책을 설정할 수있는 창이 보이는데

너무 많아서 뭐가 뭔지 잘 모르겠으니 EC2 인스턴스만 제어할 수 있도록 정책을 적용했다.

그럼 아래처럼 생성이 완료된다.

이제 URL로 로그인하거나 URL에 포함되어있는 12개의 숫자를 가지고 로그인이 가능하다.

이제 로그인을 해보면 생성한 IAM user로 로그인이 가능하다!

로그인 후 EC2를 검색해서 콘솔로 진입해준다.

 

인스턴스 시작 버튼을 누르면 EC2 인스턴스를 시작할수있다.

이름은 플라스크서버용이기때문에 flask-ec2로 하겠다.

OS의 경우 리눅스서버 중 프리티어 사용가능이면서 직직피티선생님의 추천인 Amazon Linux 2로 설정해주었따.

인스턴스 유형 역시 프리티어 사용 가능한 t2.micro로 사용하겠다.

그 후 키페어(서버에 접근하기 위한 로그인 정보를 담은 키)를 사용해야 하는데 생성을 눌러보면 어려운 말이 많지만 

대략 설명하자면 이렇다.

RSA vs ED25519

  • RSA:
    • 더 널리 지원되며, 호환성 면에서 안전한 선택.
    • 최신 소프트웨어가 아닌 시스템을 다룬다면 RSA 추천.
  • ED25519:
    • 빠르고 안전하며, 최신 프로젝트에 적합.
    • 클라우드 서버, 최신 SSH 클라이언트 등에서 사용하는 것이 일반적.

PEM vs PPK

  • PEM:
    • Linux, macOS, OpenSSH 환경에서 사용.
  • PPK:
    • Windows + PuTTY를 사용할 경우 필요.

 

  • 호환성을 중시: RSA + PEM
  • 최신 보안 및 성능: ED25519 + PEM
  • Windows + PuTTY 사용: PEM을 PPK로 변환해 사용

 

PPK는 윈도우용으로 보여 리눅스를 사용할 나는 RSA와 pem키로 생성했다.

그럼 pemkey를 내려 받을수 있게 다운로드창이 나오는데

이 pem키가 있어야 서버에 접근이 가능하니 꼭 따로 저장해두자!

서버의 문을 여는 열쇠~

다음으로 네트워크 설정이다.

위 정보는 기본사항으로 두고

방화벽의 경우는 보안그룹을 생성해야 하는데 

 

나는 버셸로 배포된 내 React서버와 통신하기 위해 https통신의 경우 0.0.0.0/0으로 

내 PC에서만큼은 모든 통신이 가능하게끔 모든트래픽으로 설정해주었다.

스토리지 구성과 세부설정은 기본값으로 두고 만들어보겠다.

 

스토리지는 최소 8GB로 잡혀있었는데 딱 맞추는게 기분이 좋기 때문에 10GB로 맞춰줬다.

 

나머지 세부설정의 경우 기본값으로 둘꺼다.

이제 인스턴스 생성을 만들어 주면 ~

EC2 서버 만드는데 성공했다!!

인스턴스의 상태를 보면 실행중이라고 나온다.

 

이제 아까 받아둔 pemkey로 서버에 접근해보자.

나의경우 ssh 접근할때 putty를 사용하지않고 mobaxterm이라는 프로그램을 애용하는 편인데

UI가 간편하게 되어있어 보기 편하다. (사실 직장에서 일할때 다 이거 쓰길래 나도 이거쓰다보니 편해진거임)

 

MobaXterm은 Windows 환경에서 SSH, SFTP, 원격 데스크톱 등 다양한 원격 접속 기능을 한 인터페이스에서 제공하는 통합 터미널/리모트 데스크톱 도구입니다.
리눅스 명령어, 텍스트 편집, 파일 전송 등 개발에 필요한 다채로운 기능을 지원하여 서버 관리 및 원격 접속을 편리하게 해줍니다.

 

이게 윈도우 리눅스 둘 다 붙을수있고 많은 서버를 관리하는데 편리한 기능이 많아 이걸 쓰겠다.


실행중인 인스턴스의 퍼블릭 IPv4 DNS를 확인해서 정보를 넣어주고

Username(사용자명)의 경우 Amazon Linux 또는 Amazon Linux 2 AMI의 경우 ec2-user가 기본적으로 설정된다.

Use private key를 통해 아까 받아놓은 pem키를 넣어주면 된다.

 

짜라란~~ ec2 서버 접속 완료!

서버까지 접근 완료했기 때문에 다음편은 서버에 실제 flask 배포 작업을 진행해보겠다.


이번 편은 삽집이 좀 많다.

하지만 삽질은 매우 중요한 공부다.

회사 다니다보면 맨땅에 헤딩할 일이 많은데, 이게 진짜 중요한 경험이 되고 피와 살이된다.

그래서 나는 삽질이나 맨땅헤딩 좋아하는 편임

 

~끝~

 

..다음편에 케속....