Search

쉽고 빠르게 EC2 서버 배포해보기

Tags

개요

사이드 프로젝트를 진행하면서 배포를 진행하게 되었습니다! 개인적으로 AWS 설정이 정말 어렵다고 생각했는데 이번 배포를 진행하면서 많이 익숙해지는 계기가 되었던 것 같습니다 :) 해당 과정들을 기록하고 공유해보고자 쉽고 빠르게 따라할 수 있는 배포에 대해 작성해보고자 합니다.

빌드

본 포스팅에서는 스프링 프로젝트를 배포한다고 가정하고 진행하겠습니다. 우선 프로젝트 파일을 빌드하여 .jar 파일을 생성해야 합니다. 빌드 명령어는 다음과 같습니다.
./gradlew build
Java
복사
만약 gradlew permission denied 오류가 발생한다면 gradlew의 접근 권한을 변경해주어야 합니다. 명령어는 다음과 같습니다.
chmod +x gradlew
Java
복사
위와 같이 빌드하는 방법 뿐만 아니라 테스트를 제외하고 빌드하는 방법도 존재합니다.
./gradlew build -x test ./gradlew assemble
Java
복사
명령어를 정상적으로 실행하게 되면 .jar 파일은 다음과 같은 경로에 생성됩니다.
[project path]/build/libs

EC2 생성하기

배포할 빌드 파일을 만들었다면 이제 클라우드 환경의 서버를 만들어야 합니다. EC2를 사용하여 가상 서버를 만들어봅시다.
AWS Console로 접속한 뒤, EC2의 인스턴스에서 인스턴스 시작을 클릭합니다.
인스턴스 설정의 대부분은 기본 설정 값으로 진행하는 것이 좋습니다. 잘못된 설정은 막대한 비용 청구로 이어질 수 있습니다
가볍게 제 설정을 요약하자면 Amazon Linux 2023 AMI는 Amazon Linux로, 인스턴스 유형은 t2.micro 등으로 설정합니다. (별도의 설정이 없었다면 기본으로 적용되어 있습니다.)
개인적으로 처음 AWS를 사용했을 때 헷갈렸던 부분이 키 페어(로그인) 부분입니다.
새 키 페어 생성을 클릭하면 다음과 같은 화면이 나타납니다.
모든 항목을 채워넣게 되면 [키 페이 이름].pem이 생성되는데, 이는 EC2 서버에 접근하기 위한 열쇠라고 생각하면 됩니다.
인스턴스를 성공적으로 생성하였다면 다음과 같은 정보가 나타납니다.
이제 public IPv4 주소와 .pem 을 이용하여 EC2 서버에 접속할 수 있습니다.
.pem 권한이 부여되지 않아 접속이 안되는 경우가 존재합니다. 이 때는 chmod 600 ~.pem 으로 권한을 변경해야 합니다.
접속은 ssh 명령어를 사용하여 진행합니다.
ssh -i [pem 경로] ec2-user@[public IPv4]
Java
복사

로컬에서 원격 서버로 파일 옮기기

이제 빌드를 통해 생성된 .jar 파일을 EC2 서버로 옮겨야 합니다. 다음과 같은 명령어가 존재하는데 이번에는 scp를 사용해서 진행해보겠습니다.
scp
rsync
해당 명령어는 .jar 파일이 위치한 /build/libs에서 진행합니다.
scp -i [pem 경로] [jar 파일] ec2-user@[IP주소]:/home/ec2-user
Java
복사
파일이 성공적으로 전송되었는지는 EC2 서버에 접속하여 ls -a 명령어로 확인할 수 있습니다. 하지만 아직 빌드를 하기에는 무리가 있는데요, EC2 서버를 막 생성했다면 java 설치가 안되어 있기 때문입니다.

EC2에 자바 설치하기

자바는 yum 명령어를 사용해서 설치할 수 있습니다.
우선 다음 명령어를 통해 설치할 수 있는 자바 목록을 출력합니다.
yum list java*
Java
복사
다음과 같은 목록이 나타나는데, 여기서 원하는 자바 버전을 선택하여 설치하면 됩니다.
java-17 버전을 설치한다고 가정하겠습니다.
sudo yum install java-17-amazon-corretto.x86_64
Java
복사
설치가 정상적으로 되었다면 다음과 같이 .jar 파일을 실행해줍니다.
java -jar [.jar 파일]
Java
복사

프로세스 유지하기

빌드 파일을 실행했다면 유지를 해야겠죠! 이는 nohub 명령어를 통해 가능합니다.
nohup java -jar [.jar 파일]
Java
복사
만약 해당 명령어를 실행하고 다른 작업을 진행하고 싶다면 백그라운드 환경에서 파일이 돌아가고 있게 설정해야 하는데요, 이는 뒤에 간단하게 &를 붙여주면 됩니다.
nohup java -jar [.jar 파일] &
Java
복사
+추가 인바운드 규칙 추가
8080 포트 추가

AWS RDS 접근을 로컬에서 막아놓았다면

무조건 ./gradlew build -x test 로 진행해야 합니다.
빌다 서버 배포 용
scp -i ~/.ssh/villian-die.pem bilda_server-0.0.1-SNAPSHOT.jar ec2-user@13.125.112.91:/home/ec2-user
Java
복사

java 종료 하는 법

ps aux | grep java
Shell
복사
kill -9 PID
Shell
복사

8080 포트 제거하기

Web server failed to start. Port 8080 was already in use.
sudo lsof -i :8080
Java
복사