Infra/aws

Spring Boot jar 빌드와 aws ec2 배포

최-코드 2024. 5. 18. 23:05

클라우드 컴퓨팅 서비스인 ec2를 만든 다음 배포를 시작해보자.

그러기 위해선 aws 홈페이지에 들어가 ec2 서비스에 접근한 다음 인스턴스 시작을 해주면된다.

os는 ubutu로 설정해주고 키페어를 생성해주면 된다. 기본적으로 RSA 키 페어 유형과 .pem 키 파일 형식을 골라준다.

네트워크 설정에서는 다음에서 SSH 트래픽 허용를 꼭 체크해주면 된다.

 

생성이 되면 spring boot 프로젝트의 포트번호인 8080애 대해 접근할 수 있도록 인바운드 규칙을 추가해주어야 한다. 인바운드 규칙이란 외부에서 해당 클라우드 컴퓨팅으로 접근할 때의 규칙을 정하는 것으로 이와 반대의 개념인 아웃바운드 규칙도 존재한다.추가할 인바운드 규칙에는 포트번호를 8080으로 설정하고 anywhere ipv4를 선택한다.

 

이제 클라우드 컴퓨팅을 실행하면 된다. 연결을 하는 방법은 사용할 인스턴스에 오른쪽 클릭 후 연결에 들어간 다음 SSH 클라이언트 탭에 들어가면 상세하게 나와있다. 이 때 bash shell을 써야한다

 

이제 빌드하고 난 후 만들어진 jar 파일을 실행시키기만 하면 배포가 완료되는데, 먼저 jar 파일을 실행하려면 자바가 설치되어 있어야 한다. java -version을 통해 자바가 깔려있는지 확인과 동시에 설치가 안 되어있을 시에는 설치에 필요한 명령어를 보여준다.

 

빌드를 하려면 먼저 git clone 혹은 pull로 프로젝트를 가져온 후 프로젝트 폴더로 들어간 다음 ./gradlew build를 해주면 된다.예를 들어 git clone을 통해 SBStudy라는 폴더를 생성되면 SBStudy 폴더에 들어가 ./gradlew build를 한다.

 

이제 jar파일을 실행해주면 된다. 빌드하고 난 jar파일은 SBStudy/build/libs/에 있다. jar파일을 실행할 명령어는 sudo java -jar 빌드파일명와 같이 해주면 된다. 이제 접속을 하려면 ec2의 ip주소:8080을 입력하면 된다.

이 명령어의 경우 문제점으로는 백그라운드에서 실행이 안 된다는 점이다. 즉, bash shell을 종료하면 그대로 프로젝트 서버도 종료된다.

 

이를 위해 sudo nohup java -jar 파일이름.jar &와 같이 명령어를 입력하면 된다.

만약 백그라운드에서 실행되는 서버를 종료하면 싶으면 먼저 pid를 알아야 하는데 이는 ps -ef | grep 파일이름.jar 명령어를 통해 알 수 있다. 이후 sudo kill -9 맨위에_pid_번호 명령어를 통해 서버를 종료시킬 수 있다.