글을 쓰기 앞서 해당 과정은 AWS에서 무료로 제공하는 프리티어 플랜에서의 서버구축입니다.
1️⃣EC2인스턴스 생성
EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수있는 서버입니다.
-AWS홈페이지에서 EC2를 검색해줍니다.
-인스턴스 시작을 눌러서 인스턴스 생성 설정을 해줍니다.
-인스턴스 시작 설정을 해주겠습니다.
먼저 AMI(Amazon Machine Image)를 선택해줍니다. 인스턴스라는 가상 머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지라고 생각하면 됩니다.
아마존 리눅스 2를 사용해보겠습니다.
-인스턴스 유형을 선택합니다. 프리터어로 표기된 t2.micro를 사용하겠습니다.
-스토리지 선택을 합니다. 스토리지는 서버의 디스크를 이야기합니다. 쉽게 서버의 보조기억장치라고 생각하시면 됩니다.
기본값은 8GB인데 프리티어사용시 30GB까지 가능하니 30GB로 늘려줍니다.
-태그를 등록해줍니다. spring-test로 지정해봤습니다. 쉽게 인스턴스의 이름이라고 생각해주세요.
-보안그룹설정입니다. 보안 그룹은 방화벽을 이야기하는데, '서버로 80포트 외에는 허용하지 않는다' 라는 역활을 하는 방화벽이 aws에서는 보안 그룹으로 사용됩니다.
네트워크설정 > 편집 > 보안 그룹 이름에 유의미한 이름으로 변경해주고 아래와 같이 보안 그룹 규칙을 설정해줍니다.
SSH이면서 포트 범위가 22인 경우 AWS EC2에 터미널로 원격 접속을 할때를 말합니다.
어차피 pem키가 없으면 접속이 안 되니 전체 오픈(0.0.0.0/0,::/0)하는 경우가 있으나, 이렇게 되면 깃허브 등에 실수로 pem 키가 노출되면 가상화폐채굴서버가 되는 등 많은 금전피해를 줄수 있으니 조심하여 주세요.
pem 키 관리와 지정된 ip(ex 본인 집 ip) 에서만ssh 접속이 가능하도록 구성하는 것이 안전합니다.
장소가 바뀔때는 해당 장소의 ip를 다시 ssh규칙에 추가하는 방법이 안전합니다.
-pem키 할당하기.
인스턴스로 접근하기 위해서는 pem키(비밀키)가 필요합니다.
인스턴스는 지정된 pem키와 매칭되는 공개키를 가지고 있어서 해당 pem키 이외에는 접근을 허용하지 않습니다.
따라서 절대 유출되면 안됩니다.
기존의 pem키를 가지고 있으면 사용하시면 되고 없으시면 생성해주세요.
spring-test pem키를 생성해 보겠습니다. 생성과 동시에 pem키가 다운 받아집니다.
-인스턴스 생성하기
인스턴스 시작을 눌러 인스턴스를 생성해 주세요.
-성공적을 인스턴스를 생성된것을 확인할 수 있습니다.
2️⃣탄력적 ip 할당
인스턴스를 중지하고 다시 시작할 때면 새 ip가 매번 할당이 됩니다. 다시말해서 요금을 아끼기 위해 인스턴스를 중지하고 다시 시작하면 ip가 새로 할당되는 것을 볼수있죠
우리는 그래서 고정ip 즉 탄력적 ip를 생성 하고 할당해 주겠습니다.
-탄력적ip 발급받기
ec2 인스턴스 페이지 왼쪽 카테고리 > 탄력적 IP > 탄력적 IP 주소 할당 > 할당
-탄력적 ip와 ec2주소의 연결
탄력적 ip는 생성하고 ec2 서버에 연결하지 않으면 비용이 청구됩니다. 따라서 생성후 바로 ec2에 연결하여야 하고 사용할 인스턴스가 없으면 탄력적 ip는 꼭 삭제해주세요.
탄력적 ip에 인스턴스id가 연결 되지않은 것을 볼 수 있습니다.
작업 > 주소 연결 > 인스턴스 와 프라이빗 IP입력 > 연결
인스턴스 정보에 탄력적 IP가 잘 연결되었음을 확인할 수 있습니다.
3️⃣EC2 서버에 접속
ec2로 접속을 해보겠습니다.
해당 방법은 윈도우 유저가 ssh를 통해서 서버에 접속하는 과정임을 알려드립니다.
먼저 윈도우에서는 ssh접속하기위해 putty 와 puttygen프로그램이 필요합니다.
-putty.exe와 puttygen.exe설치
putty 공식 홈페이지에 가셔서 download를 하시면 됩니다.
-puttygen을 통해서 pem키를 ppk파일로 변환하기
putty는 pem키를 직접 사용이 안되며 ppk파일로 사용해야 합니다.
따라서 아까 pem키를 발급받으면서 download됐던 pem 키를 ppk파일로 변경해주겠습니다.
import key > pem키를 선택하여 변환해줍니다.
-putty로 실행하기
각 항목을 입력해줍니다.
HostName: <username>@<public_ip>
Amazon Linux는 ec2-user가 username입니다. public_ip에는 인스턴스에 할당시켜준 탄력적 ip 주소를 등록해줍니다.
Port: ssh의 접속포트인 22를 등록해줍니다.
Connect type: SSH로 선택해주세요.
왼쪽 카테고리> Connection > SSH > Auth > Browse 에서
puttygen으로 만들어준 ppk 파일을 선택해서 불러옵니다.
-다시 Session 탭으로 돌아와서 Saved Session에 현재 설절들을 저장할 이름을 등록 후 save를 하여 저장해주고, open버튼을 클릭하여 서버에 접속을 해줍니다.
-SSH 접속이 성공 하였습니다.
📔참조
해당 포스팅은 이동욱님의 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스" 서적을 인용하였습니다.
스프링 부트와 AWS로 혼자 구현하는 웹 서비스
'개발 > DevOps' 카테고리의 다른 글
AWS - 스프링 프로젝트 AWS를 이용해서 배포해보기 (0) | 2022.08.25 |
---|---|
Docker - 도커에 Spring Boot(Gradle) 구축하기 (0) | 2022.08.13 |