AWS EC2로 서버 환경을 만들어보자

짱J·2022년 7월 5일
1

AWS

목록 보기
1/6
post-thumbnail

이제 기본적인 게시판 구축은 완료되었다.
이제 AWS의 EC2와 RDS를 사용해서 프로젝트를 배포해보자!
그 첫 단계로, EC2 인스턴스를 생성하여 서버 환경을 만들어보자.
🍏 M1 맥북을 기준으로 작성하였습니다. 🍎

만약 AWS 계정이 없다면 아래 사이트로 들어가 가입하자.
https://aws.amazon.com/ko/


EC2 인스턴스 생성

EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버이다.

그러나, AWS는 무료 서비스가 아니다. 프리티어라는 플랜만 무료로 사용할 수 있는데, 프리티어에는 아래 두 가지 제한이 있다.

  • t2.micro만 가능 (1 Core, 메모리 1GB 사양)
  • 월 750시간 제한
    • 24시간 * 31일 = 744
    • 1대의 t2.micro만 사용 가능 (2대 이상부터는 요금 부과)

가입이 완료되었다면, 헤더에서 닉네임 옆 리전(region)을 확인해보자.
리전은 AWS의 서비스가 구동될 지역을 이야기한다.
만약 서울이 아닌 다른 나라가 선택되었다면, 서버가 작동하지 않거나 매우 느릴 수 있으므로 꼭 ‼️서울‼️로 바꿔준다

이제 EC2 인스턴스를 생성해보자.
서비스 중 EC2를 찾아 클릭하거나, 검색 창에 검색하여 EC2 대시보드로 들어가서 인스턴스 시작 을 눌러준다.

이름을 적고, AMI를 선택해준다.

  • AMI (Amazon Machine Image) - 필요한 정보를 이미지로 만들어둔 것

책에서는 Amazon Linux AMI를 사용하지만, 나는 Ubuntu Server 22.04 LTS, SSSD Volum Type 을 선택하였다.

인스턴스 유형은 앞에서 말한 t2.micro 로 하고, 키 페어를 선택해준다. 키 페어가 없다면 '새 키 페어 생성'을 눌러 키 페어를 생성해주자.

  • 이름은 원하는대로
  • 키 페어 유형 - RSA
  • 프라이빗 키 형식 - .pem

‼️ pem 키는 EC2에 접근하는 마스터키이므로 절대 !! 유출되면 안된다 ‼️

다음으로 보안 그룹과 스토리지를 선택해주었다.
나는 추후 다른 인스턴스에서도 범용적인 보안 그룹을 사용할 수 있도록 기존 보안 그룹 중 default를 선택하였고, (앞으로 채워나갈 예정)
스토리지의 경우 프리티어 플랜에서 30GB까지 무료 사용 가능하므로, 최대인 30으로 설정해주었다.

고급 세부 정보는 건드리지 않았다.
이제 인스턴스 설정이 마무리되었고, 인스턴스 시작 버튼을 눌러 인스턴스를 생성하자.

다음과 같이 인스턴스가 생성된 것을 확인할 수 있다.


보안 그룹 설정

인스턴스 ID 클릭 > 보안 > 보안 그룹 클릭 > 인바운드 규칙 편집 으로 들어가 아래 네 가지를 추가한다.

  • SSH - AWS EC2에 터미널로 접속했을 때
    • 지정된 IP에서만 ssh 접속이 가능하도록 하는 것이 안전!
    • 본인 집의 IP를 기본적으로 추가하고, 카페와 같이 다른 장소에서 접속할 때 해당 장소의 IP를 추가하는 것이 안전하다.
  • 0.0.0.0/0 으로 설정한 이유는 집이 아닌 외부에서도 EC2에 접근할 수 있도록 한 것이다.
  • 8080 포트를 추가하였고,
  • HTTP와 HTTPS도 추가해주었다.

탄력적 IP 할당

인스턴스 생성 시 새 IP가 할당된다. (IP 주소 입력하면 서버 접속 가능)
그러나, 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다.

이는 매우 번거롭기 때문에, IP가 매번 변경되지 않도록 고정 IP를 가지도록 해주자.

왼쪽 카테고리 중 '탄력적 IP'를 클릭한다.
탄력적 IP 할당 > 주소 연결 과정을 통해 탄력적 IP를 만들고 인스턴스에 연결해주자.

💥 탄력적 IP를 생성하고 EC2 서버에 연결하지 않으면 비용이 발생한다 💥

생성한 탄력적 IP는 꼭 인스턴스에 연결하고, 인스턴스 삭제 시 탄력적 IP도 꼭 함께 삭제해주도록 하자.

이것 때문에 몇 달 동안 3000원 가량 자잘하게 AWS한테 돈 뜯겼었다 ^_ㅠ


EC2 서버 접속

로컬(내 컴퓨터)에서 아까 만든 EC2 서버에 접속해보자.

아까 받은 키페어 pem 파일을 ~/.ssh/ 로 복사하자.
pem 파일을 ~/.ssh/ 에 옮겨 놓으면 ssh 실행 시 pem 키 파일을 자동으로 읽어 접속을 진행하게 된다.

cp (pem 키 파일) ~/.ssh/

~/.ssh/ 디렉토리로 이동하여 확인해보면 잘 복사된 것을 볼 수 있다!

pem 키 권한을 변경하고, ~/.ssh 디렉토리에 config 파일을 생성한다.

config 파일의 내용이다.
혹시나 vim을 모르는 사용자를 위하여...!
i를 눌러 INSERT 모드로 변경해야 타이핑이 가능하다.
내용을 다 입력했으면 ESC 키를 누르고 :wq를 입력하면 저장 및 종료가 가능하다 :)

  • Host - 앞으로 접속할 키 값
    • ssh (Host에 입력한 내용) 을 터미널에 입력하면 이제 EC2 서버에 접속 가능하다.
  • HostName - 탄력적 IP 주소
  • User - AMI별 user name

생성된 config 파일에도 실행 권한이 필요하므로 권한을 변경해주자.

이제 EC2 서버에 접속해보자.

WoW !!


서버 생성 시 꼭 해야 할 설정들

  • Java 8 설치 (또는 각자 프로젝트에 맞게)
  • 타임존 변경
    • 기본 서버의 시간은 미국 시간대이다.
  • 호스트네임 변경 (현재 접속한 서버의 별명을 등록)
    • 실무에서는 수십 대의 서버가 작동하는 데, IP만으로는 어떤 역할을 하는지 구분할 수 없다.
    • 구분하기 쉽도록 호스트 네임을 등록하자.

Java 8 설치

sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version

타임존 변경

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

date 명령어로 확인했을 때 타임존이 UTC에서 KST로 변경된 것을 확인할 수 있다.

Hostname 변경

sudo vim /etc/hosts

네모 친 부분을 원하는 이름으로 변경해준다.

sudo vim /etc/hostname

아까와 동일하게 이름을 변경해준다.

sudo reboot

재부팅이 끝나고 다시 접속하면 호스트 네임이 잘 변경된 것을 확인할 수 있다 ^ㅅ^ bb


🍰 레퍼런스

https://velog.io/@banjjoknim/AWS-EC2-인스턴스-생성하기Ubuntu-AMI
https://coding-wonderland.tistory.com/19
https://i5i5.tistory.com/266
https://soobarkbar.tistory.com/226

profile
[~2023.04] 블로그 이전했습니다 ㅎㅎ https://leeeeeyeon-dev.tistory.com/

0개의 댓글