00. AWS 콘솔 로그인 후 AWS Region 설정
다른 Region에 인스턴스를 생성하면 서울 Region에서는 확인이 불가능하기 때문에 서울로 설정합니다.

01. 인스턴스 시작
AWS 콘솔 탭 > EC2 검색 > EC2 대시보드 > 인스턴스 시작

02. 인스턴스 이름 및 태그 설정
EC2 이름 및 태그를 작성합니다. 저는 [MyWebServer]라고 해놨는데 구분가능한 이름으로 설정하면 됩니다.

03. AMI (Amazon Machine Image) 세팅 & 인스턴스 유형 선택
어떤 종류의 서버로 구성할지 선택합니다.
OS 원하는 것이 있다면 원하는것으로 해주시면됩니다. 저는 프리티어가 제공하는 UbuntuLTS 버전으로 진행하겠습니다.
다양한 사양에 따라 요금제를 선택할 수 있는데, 프리티어 외 항목으로 선택하면 과금 요소가 추가될 수 있습니다.


04. 키 페어(로그인) 선택 및 생성
키 페어는 EC2 인스턴스에서 원격으로 접속하기 위해 필수적으로 필요합니다.
또한, 키 페어는 한 번 생성하면 다시 다운로드 받을 수 없기 때문에 잘 보관하고 있어야 합니다.
키 페어가 이미 존재할 경우에는 기존 키 페어를 선택하고, 그렇지 않을 경우에는 새 키 페어 생성을 클릭합니다.


키 페어 이름을 작성하고 생성 버튼을 누르면, 키 페어가 로컬 PC에 다운로드 됩니다.
05. 네트워크 설정
VPC와 서브넷 등은 AWS 서비스들의 네트워크 환경을 구성합니다.
ssh 터미널을 통해 인스턴스에 접근하려면 인바운드 보안 그룹 규칙에 추가해서 사용합니다.

06. 스토리지 구성
스토리지란, 인스턴스의 디스크 용량입니다. 프리티어는 최대 30GiB까지 지원하기 때문에 기존 8GiB에서 30GiB으로 설정합니다.

07. 인스턴스 시작
지금까지의 설정을 마친 후에 우측 탭에 있는 인스턴스 시작 버튼을 클릭해 새 인스턴스를 생성합니다.

인스턴스가 생성되면 상태가 실행중으로 확인됩니다.

08. 인바운드 규칙 설정
AWS 에서 제공하는 방화벽으로 인바운드 규칙, 아웃바운드 규칙이 존재합니다.
인바운드 규칙(inbound) : 외부에서 EC2나 RDS 등의 내부로 접근할때 사용되는 방화벽 규칙
아웃바운드 규칙(outbound) : EC2나 RDS 등의 내부에서 외부로 접근할때 사용되는 방화벽 규칙
보안 그룹에서 인바운드 규칙을 설정해 줍니다.

09. 인스턴스 연결
EC2 인스턴스를 체크한 후에 우측 위에 연결 버튼을 클릭합니다.


위 SSH 클라이언트 연결 방법대로 따라해줍니다.
키 페어 파일을 다운 받은 디렉토리에 접근 후 터미널을 켜주고, 명령어로 권한을 바꿔줍니다.
chmod 400 myWebServerKey.pem
권한을 바꿔주고 난 후, ssh 명령어로 EC2 인스턴스에 접속합니다.
ssh -i "myWebServerKey.pem" ubuntu@ec2-54-180-201-63.ap-northeast-2.compute.amazonaws.com

EC2 unbuntu에 접속했습니다.
10. git 설치
아래 명령어로 git을 설치해 줍니다.
sudo apt-get install git
설치 후 버전 확인을 통해 잘 설치 되었는지 확인합니다.
git --version

11. SSH KEY 생성
해당 명령어를 통해 .ssh 디렉터리로 이동합니다.
cd ~/.ssh
이동 후, 키페어를 생성합니다.
ssh-keygen -t rsa -C [github 계정 메일]

다음 처럼 id_rsa.pub 파일이 생성됨을 확인할 수 있습니다.
12. SSH KEY git 연동 & git clone
다음 명렁어를 통해 파일 소스를 복사하여 깃허브 ssh에 저장합니다
cat id_rsa.pub
깃허브에 접속해서 settings 클릭 후 SSH ans GPG keys에서 New SSH key 버튼을 클릭한 후, 타이틀은 자유롭게 설정하고 Key 부분에 복사한 Key를 붙여넣기 해줍니다.

github 레포지토리에서 SSH 탭에 있는 주소를 복사해줍니다.

복사한 주소를 EC2 접속한 터미널에 git clone 해줍니다.
git clone [repository SSH 주소]

13. Java 설치 및 빌드
EC2에는 기본적으로 자바가 설치되어 있지 않기 때문에 다음처럼 자바를 설치합니다.
저는 저장소 목록을 먼저 업그레이드 후 설치했습니다.
sudo apt-get update
sudo apt install openjdk-17-jdk

자바 설치 후에 클론받은 프로젝트로 접근 후 jar 빌드 파일을 생성해 줍니다.
./gradlew build

빌드가 성공적으로 진행되면 build/libs 디렉토리가 생성되고 ls 명령어를 통해 jar 파일이 생성됨을 확인할 수 있습니다.

14. 프로젝트 실행
생성된 jar 파일을 실행합니다.
java -jar Spring-diary-0.0.1-SNAPSHOT.jar

스프링 서버가 제대로 실행된 것을 확인할 수 있습니다.
인스턴스에 있는 퍼블릭 IPv4 주소를 통해 접근할 수 있습니다.
http://[퍼블릭 IPv4 주소]:[포트번호]

주소창에 URL 입력하여 접근하면 이렇게 정상적으로 동작함을 확인할 수 있습니다.

마무리
이렇게 AWS EC2 세팅부터 간단하게 git clone을 통한 서버 배포까지 다뤘습니다.
위에서 배포한 서버는 https를 열어주지 않았기 때문에 http통신만 가능하기때문에 https는 로드밸런서, ACM를 따로 보셔야합니다.
또한 서버 IP가 고정 IP가 아닌 유동적 IP이기 때문에 고정적 IP를 사용하려면 탄력적 IP 주소를 사용해야합니다.
탄력적 IP 주소는 다음 포스팅에서 진행합니다 :)
[AWS] EIP(탄력적 IP) 개념, 세팅 및 삭제
Elastic IP (탄력적 IP)EIP(Elastic IP Address)는 인터넷을 통해 접속할 수 있는 고정적인 IP 주소를 할당하고, 인스턴스에 연결할 수 있는 서비스다.모든 인스턴스 또는 네트워크 인터페이스에 탄력적 IP
jiy0ung.tistory.com
참고 자료
'# Study > AWS' 카테고리의 다른 글
[AWS] AWS EC2 배포 후 Ubuntu 서버 백그라운드 실행 (0) | 2024.11.13 |
---|---|
[AWS] EIP(탄력적 IP) 개념, 세팅 및 삭제 (0) | 2024.11.13 |