사이드 프로젝트를 진행하면서 배포를 진행하게 되었습니다! 개인적으로 AWS 설정이 정말 어렵다고 생각했는데 이번 배포를 진행하면서 많이 익숙해지는 계기가 되었던 것 같습니다 :) 해당 과정들을 기록하고 공유해보고자 쉽고 빠르게 따라할 수 있는 배포에 대해 작성해보고자 합니다.
본 포스팅에서는 스프링 프로젝트를 배포한다고 가정하고 진행하겠습니다. 우선 프로젝트 파일을 빌드하여 .jar
파일을 생성해야 합니다. 빌드 명령어는 다음과 같습니다.
./gradlew build
만약 gradlew permission denied
오류가 발생한다면 gradlew의 접근 권한을 변경해주어야 합니다. 명령어는 다음과 같습니다.
chmod +x gradlew
위와 같이 빌드하는 방법 뿐만 아니라 테스트를 제외하고 빌드하는 방법도 존재합니다.
./gradlew build -x test
./gradlew assemble
명령어를 정상적으로 실행하게 되면 .jar
파일은 다음과 같은 경로에 생성됩니다.
[project path]/build/libs
배포할 빌드 파일을 만들었다면 이제 클라우드 환경의 서버를 만들어야 합니다. EC2를 사용하여 가상 서버를 만들어봅시다.
AWS Console로 접속한 뒤, EC2의 인스턴스에서 인스턴스 시작을 클릭합니다.
인스턴스 설정의 대부분은 기본 설정 값으로 진행하는 것이 좋습니다. 잘못된 설정은 막대한 비용 청구로 이어질 수 있습니다 😢
가볍게 제 설정을 요약하자면 Amazon Linux 2023 AMI는 Amazon Linux로, 인스턴스 유형은 t2.micro 등으로 설정합니다. (별도의 설정이 없었다면 기본으로 적용되어 있습니다.)
개인적으로 처음 AWS를 사용했을 때 헷갈렸던 부분이 키 페어(로그인) 부분입니다.
새 키 페어 생성을 클릭하면 다음과 같은 화면이 나타납니다.
모든 항목을 채워넣게 되면 [키 페이 이름].pem
이 생성되는데, 이는 EC2 서버에 접근하기 위한 열쇠라고 생각하면 됩니다.
인스턴스를 성공적으로 생성하였다면 다음과 같은 정보가 나타납니다.
이제 public IPv4 주소와 .pem
을 이용하여 EC2 서버에 접속할 수 있습니다.
접속은 ssh 명령어를 사용하여 진행합니다.
ssh -i [pem 경로] ec2-user@[public IPv4]
이제 빌드를 통해 생성된 .jar
파일을 EC2 서버로 옮겨야 합니다. 다음과 같은 명령어가 존재하는데 이번에는 scp를 사용해서 진행해보겠습니다.
해당 명령어는 .jar
파일이 위치한 /build/libs
에서 진행합니다.
scp -i [pem 경로] [jar 파일] ec2-user@[IP주소]:/home/ec2-user
파일이 성공적으로 전송되었는지는 EC2 서버에 접속하여 ls -a
명령어로 확인할 수 있습니다. 하지만 아직 빌드를 하기에는 무리가 있는데요, EC2 서버를 막 생성했다면 java 설치가 안되어 있기 때문입니다.
자바는 yum 명령어를 사용해서 설치할 수 있습니다.
우선 다음 명령어를 통해 설치할 수 있는 자바 목록을 출력합니다.
yum list java*
다음과 같은 목록이 나타나는데, 여기서 원하는 자바 버전을 선택하여 설치하면 됩니다.
java-17 버전을 설치한다고 가정하겠습니다.
sudo yum install java-17-amazon-corretto.x86_64
설치가 정상적으로 되었다면 다음과 같이 .jar 파일을 실행해줍니다.
java -jar [.jar 파일]
빌드 파일을 실행했다면 유지를 해야겠죠! 이는 nohub
명령어를 통해 가능합니다.
nohub java -jar [.jar 파일]
만약 해당 명령어를 실행하고 다른 작업을 진행하고 싶다면 백그라운드 환경에서 파일이 돌아가고 있게 설정해야 하는데요, 이는 뒤에 간단하게 &를 붙여주면 됩니다.
nohub java -jar [.jar 파일] &
+추가 인바운드 규칙 추가
8080 포트 추가
감사합니다. 이런 정보를 나눠주셔서 좋아요.