[aws] EC2 서버 만들고 배포해보자
열심히 개발을 공부하고 삽질해가며 드디어 웹 사이트를 만들었다!
localhost:8080을 통해 멋지게 구현한 내 웹 사이트를 이리저리 만져보며 흡족해하고 있는 와중에 이 웹 사이트를 친구들에게도 자랑하고 싶어졌다
나 : (localhost:8080을 던져주며) 여기 들어가봐 내가 만듦 ㅋㅋ 어때 쩔지?
친구1 : 아무것도 안 나오는데?
친구2 : 흰 배경 잘 만들었네 ㅋ
나 : ??
당연히 보일 줄 알았던 내 웹 사이트가 친구들에게는 보이지 않는 것이다
나 : 뭐지? 왜 친구들한테는 안 뜨지?
이때 해결할 수 있는 방법 중 하나인 aws ec2 서비스의 사용법을 알아보자
일단 사용법부터 익히고자 하므로 aws 기능에 대한 네트워크 동작 원리에 대해서는 추후 공부하자
준비
1. aws 프리 티어 계정
2. EC2 서버에 접근하기 위한 SSH 클라이언트
3. 키 페어
프리 티어 계정을 만들었다면 키 페어 카테고리로 들어가서 키 페어 생성을 클릭해준다
1. 임의의 키 페어 이름을 설정
2. 키 페어 유형은 RSA
3. 키 파일 형식은 .pem
4. 키 페어 생성
생성된 키 파일은 본인이 원하는 곳에 두면 된다
따로 키 파일들을 모아두면 좋음
준비물이 다 있다면 이제 EC2 인스턴스를 생성해보자
aws 웹 사이트에 프리 티어 계정으로 로그인하고 인스턴스 카테고리로 이동해 인스턴스 시작을 누른다
인스턴스 이름은 아무거나 입력해주면 된다
인스턴스 AMI은 Amazon Linux를 선택해주고 프리 티어 사용 가능한 것을 선택하자
AMI 설정은 서버의 OS를 선택해준다고 생각하고 넘어가자
인스턴스 유형은 프리 티어 계정은 무료인 t2.micro를 선택
제한이 없는 것은 아니다 일단 서버 1대 기준 한달동안 24시간 풀로 돌렸을 땐 무료이다
CPU, 메모리 성능에 따라 가격이 천차 만별이므로 과금을 맞지 않기 위해 본인의 상황에 맞게 선택해주자
키 페어 설정에는 처음 생성한 키 페어를 선택해준다
네트워크 설정에서 HTTP 트래픽 허용을 체크해줘야
나중에 EC2에 서버를 만들고 해당 서버에 HTTP 주소로 접근할 수 있다
스토리지 구성에는 기본 값인 8 GiB, gp3을 선택하고 인스턴스 시작 버튼을 누르면
나만의 서버(EC2 인스턴스)가 생성된다!
인스턴스 카테고리로 돌어가 인스턴스의 상태가 실행 중이면 잘 생성된 것이다
인스턴스 생성 : 설정 했던 CPU, 메모리, AMI에 해당하는 컴퓨터를 aws를 통해 빌린 것
인스턴스 상태를 살펴보자
실행 중 : 빌린 aws의 컴퓨터가 켜져 있음
인스턴스 중지 : 빌린 aws의 컴퓨터의 동작을 멈춘다. 그러면 과금을 책정하는 사용 시간이 멈추게 된다. 프리 티어의 경우 EC2 인스턴스 1개는 한 달 내내 켜도 과금이 발생하지 않으나 다른 서비스는 정책이 다르므로 서비스를 사용하기 전에 잘 알아보고 사용하자
인스턴스 재부팅 : 사용해보지 않았으나 인스턴스를 재시작하는 것 같다
인스턴스 종료(삭제) : EC2 인스턴스를 삭제. 주의
이제 우리가 생성한 EC2 인스턴스에 접속해보자
먼저 EC2 인스턴스에 접속할 수 있는 방법이 크게 두 가지가 있다
1. aws 페이지에서 제공하는 콘솔을 통해 접속
2. SSH 클라이언트를 통해 접속
둘 중 편한 방법으로 EC2 서버에 접속하면 된다
먼저 aws 콘솔을 통해 접속하는 방법에 대해서 보자
인스턴스 ID를 클릭한 후 연결 버튼을 누른다
그럼 다음과 같은 화면이 나온다
기본 값 설정 그대로 연결 버튼을 누르면
다음과 같이 우리가 생성한 EC2 인스턴스, 즉 aws 컴퓨터에 CLI(Command Line Interface)로 접속할 수 있다
다음으로 SSH 클라이언트를 통해 접속해보자
SSH 클라이언트 옵션 탭을 누른 후 해당 버튼을 클릭해 다음 명령어를 복사해준다
- ssh -i "키 페어 저장 경로" 본인 ec2 인스턴스 주소
여기서 키 페어는 우리가 처음에 만든 키 페어이다
SSH 클라이언트에 들어가 복사한 명령어를 입력해주면 EC2 서버 접속에 성공하는 것을 확인할 수 있다
필요한 프로그램 설치
이제 EC2 서버에 우리가 사용할 Java, Git 등을 설치해보자
Java 설치
- sudo yum install java-17-amazon-corretto-devel (JDK 설치)
- sudo yum install java-17-amazon-corretto (JRE 설치)
JDK, JRE이 무엇인지에 대한 것은 여기를 참고
Y 입력
Git 설치
- sudo yum install git -y
뒤에 -y를 붙여주면 따로 Y를 입력하지 않아도 된다
이제 배포를 하기 위해 필요한 것들을 모두 설치했으니
배포 테스트를 위해 아무런 프로젝트를 git clone 해보자
- git clone "클론할 프로젝트 주소"
프로젝트를 빌드하기 위해 gradlew 파일의 실행 권한을 변경해주자
- sudo chmod 777 gradlew
해당 명령어를 실행하면 gradlew 파일의 색깔이 바뀌게 된다
연습이기에 모든 권한(읽기, 쓰기, 실행)을 열어주었지만 실전에서는 이렇게 하면 안 된다
깔끔하게 clean & build 해주자
- ./gradlew clean
- ./gradlew build
성공적으로 빌드되었다면 스냅샷 파일이 build디렉토리의 lib디렉토리 안에 있다
스냅샷 파일을 실행하면 애플리케이션이 실행되어 EC2 서버 퍼플릭 ip주소의 8080 포트로 열리게 된다
- java -jar "build/libs/스냅샷 파일"
aws 웹 페이지로 돌아가서 퍼블릭 ip 주소를 확인해보자
이대로 웹 브라우저에 퍼블릭 ip주소:8080 로 접속하면 오류 페이지가 나온다
EC2 서버의 8080 포트를 열어주지 않았기 때문이다
EC2 서버의 8080 포트를 열어주자
aws 웹 페이지에서 보안 그룹 카테고리를 클릭해 EC2 서버의 보안 그룹을 확인할 수 있다
보안 그룹 ID를 클릭해 상세 페이지로 들어가면
기본으로 22, 80 포트가 열려있다
8080 포트를 추가하자
성공적으로 추가한 후 다시 퍼블릭 ip 주소:8080 로 접속하면
짠!!
배포에 성공한 것을 확인할 수 있다!
이제 이걸 완성한 프로젝트에 적용하면 나의 프로젝트를 친구들도 볼 수 있게 된다
끝.