[Server/AWS] AWS를 이용한 Spring Boot 서버 배포 - EC2 인스턴스 생성 및 설정

HAEN·2023년 3월 4일
0

서버 배포 때문에 엄청 고생했기에... 직접 AWS를 이용한 서버 배포 레퍼런스를 작성해보게따 ^_ㅠ
(AWS 프리티어 기준)


1. EC2 인스턴스 생성

(1) 회원가입 및 region 변경

https://aws.amazon.com
AWS 홈페이지에 접속하여 프리티어 계정 생성 후 region을 용도에 맞게 변경해준다


(2) 인스턴스 생성


AWS EC2 메뉴에서 인스턴스 -> 인스턴스 시작 선택

인스턴스 이름을 입력하고 Amazon Machine Image(AMI)를 선택한다
보통 Amazon Linux, Ubuntu 둘 중에 하나를 많이 사용하는 것 같다
나는 Linux를 골랐고, 프리티어 사용 가능 한 AMI 중 가장 최신 버전을 선택했다

인스턴스 유형 역시 프리티어 사용 가능한 t2.micro로 선택
t2는 요금 타입을, micro는 사양을 의미한다고 한다

키 페어(로그인) 선택 란에서 새 키 페어 생성을 통해 인스턴스에 접근하기 위한 키 페어를 생성 해준다
생성 완료 하면 .pem 파일이 자동으로 다운로드 되는데, 잘 보관하도록 하자
설정을 통해 ec2 인스턴스에 쉽게 접근할 수 있는 방법은 밑에서 포스팅 하겠다

다음은 네트워크 설정을 하기 위해 옆에 있는 편집을 눌러준다

보안 그룹은 방화벽을 의미한다
보안 그룹을 생성을 선택하고 보안 그룹 이름과 설명을 입력해준다

인바운드 보안 그룹 규칙을 추가해준다
우선 첫 번째 규칙 유형 ssh, 포트 범위 22는 EC2 인스턴스에 터미널로 접근하는 것을 의미한다. 이때 pem 키를 사용하기 때문에 보안 상 소스 유형을 내 IP로 설정하는 것이 좋지만, 추후 바꿀 수 있으니 우선 모든 접근에 대해 허용해놓는다

그리고 차례대로 HTTP, HTTPS, 톰캣 서버 포트 번호 8080을 허용한다

다음은 스토리지 구성이다
프리 티어 계정에서는 최대 30GB의 스토리지를 사용할 수 있으므로 30GB 이내로 자유롭게 설정해준다


여기까지 설정을 완료하고 인스턴스 시작 버튼을 누르면 인스턴스가 생성된다

조금 기다리면 인스턴스 상태가 실행 중으로 바뀌는 것을 볼 수 있다


2. 탄력적 IP(Elastic IP) 할당

인스턴스를 생성하면 IP와 도메인이 할당되지만, 인스턴스를 중지하고 다시 시작하면 IP가 변경되는 번거로움이 발생하기 때문에 인스턴스에 고정 IP를 할당해야한다

EC2 메뉴에서 네트워크 및 보안 -> 탄력적 IP -> 탄력적 IP 주소 할당을 선택한다

네트워크 경계 그룹을 확인해주고 할당을 누르면 탄력적 IP가 생성된다

생성된 탄력적 IP 주소를 위에서 생성한 EC2 인스턴스와 연결해준다
탄력적 IP 주소를 생성하고 인스턴스에 연결하지 않으면 비용이 발생하므로 주의하자!


3. EC2 서버 접속(Linux 환경)

생성한 EC2 서버로 접속하려면 다음과 같은 명령어를 입력해야한다

ssh -i pem '키 위치' 'EC2 인스턴스의 탄력적 IP 주소'

하지만 명령어가 복잡하므로 쉽게 접속할 수 있도록 설정이 필요하다

위에서 인스턴스를 생성할 때 발급받았던 pem 키를 복사해서 옮겨준다

cp my-web-server-ec2-key.pem ~/.ssh

~/.ssh로 이동하여 ls 명령어로 잘 복사되었는지 확인하고,
pem 키의 권한을 변경해준다

chmod 600 my-web-server-ec2-key.pem

이어서 pem 키가 있는 ~/.ssh 디렉토리에 config 파일을 생성해준다

vim config

위의 예시와 같이

Host 접속 명령어

	HostName 탄력적 IP 주소

	User ec2-user

	IdentityFile pem 키 위치

를 작성한다

config 파일을 저장한 후 다음 명령어를 통해 권한을 변경해준다

sudo chown -R 'username' ~/.ssh
chmod 700 config

이제 다음 명령어로 ec2 인스턴스 서버에 접속할 수 있다

ssh 'config에 등록한 접속 명령어'


4. 서버 설정

아마존 리눅스 서버를 처음 열었다면 몇 가지 설정해야할 것들이 있는데,
Java 기반의 웹어플리케이션(톰캣, 스프링부트)가 작동하는 서버에서는 모두 필수로 해야하는 설정들이다

(1) Java 설치

웹어플리케이션에서 사용하는 Java 버전을 설치해준다
설치 과정은 따로 포스팅 하지 않겠다

(2) timezone 변경

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

이후 date 명령어로 KST로 설정이 바껴있는지 확인한다

(3) Hostname 변경

sudo hostnameclt '원하는 hostname'

이후 서버를 재부팅하면 ec2-user@'설정한 hostname' 으로 변경된 것을 볼 수 있다

이어서 다음 명령어를 통해 호스트 주소에 Hostname을 등록한다

sudo vim /etc/hosts

맨 밑 줄에 설정한 Hostname을 입력하자

잘 등록되었다면

curl '등록한 hostname'

를 입력했을 때

다음과 같이 80 포트로 접근이 안 된다는 메시지가 뜬다
이는 아직 80 포트로 실행된 서비스가 없음을 의미한다



여기까지 기본적인 AWS EC2 환경 생성 과정이었다
다음 포스팅은 AWS에 DB 환경을 구축하는 과정을 포스팅하겠다

profile
핸수

0개의 댓글