𝑨𝑾𝑺

[AWS] 서버 구축부터 배포까지 - # 5 JAR 파일 생성 및 EC2 서버에 배포

기누 2022. 11. 8. 06:02

# 5 jar 파일 생성 

jar 파일과 war 파일의 차이점 은 이전 포스팅으로 알았으니 이제 JAR 파일을 생성해보자! 

1) JAR 파일 빌드 (Maven) 

터미널에서 프로젝트 디렉토리로 이동한 뒤, 아래 명령어를 입력해준다.

mvn package

그리고 프로젝트 디렉토리 안의 target 폴더 안에 가면, 

위와 같이 .jar 파일이 만들어진 것을 볼 수 있다.

그럼 이제 터미널 창에서 target 디렉토리 안으로 이동한 뒤, 아래 명령어를 입력해보자.

 

java -jar 빌드한파일이름.jar 
// java -jar lastfresh-0.0.1-SNAPSHOT.jar
// 저의 경우 프로젝트 명이 lastfresh 여서 파일 이름이 위와 같습니다!

ㅓㅁㄲ

JAR 파일을 실행하면, 위와 같이 Spring Boot 를 실행했을 때와 동일한 화면이 뜨게 된다!

 

2) JAR 파일 빌드 (Gradle) 

그래들의 경우도 동일하게 터미널에서 프로젝트 디렉토리로 이동한 뒤 아래 명령어를 입력해주자

./gradlew clean build

빌드가 성공했다면, 프로젝트 디렉토리 안의 build/libs 디렉토리 아래에 JAR 파일이 만들어진 것을 볼 수 있을 것이다. 

Maven 과 마찬가지로 아래 명령어를 통해 Spring Boot 를 실행할 수 있다. 

java -jar 빌드한파일이름.jar

 

이렇게 Maven / Gradle 에서 JAR 파일의 빌드가 끝났다! 

이제 이렇게 빌드에 성공한 JAR 파일을 AWS EC2 서버로 옮겨서 실행을 해야한다. 

 

3) FileZila를 통해 EC2 에 JAR 파일 전송 

먼저 EC2 서버에 파일을 전송하기 위해서는 FileZila 를 설치해야한다. 

https://filezilla-project.org/download.php?type=client 

위 링크를 통해서 FileZila 를 다운로드 해주자! 

 

FileZila 를 실행하고 나서, 먼저 맨 왼쪽 상단의 1 을 클릭해 사이트 관리자 연결을 시작하자.

먼저 2 프로토콜을 SFTP - SSH File Transfer Protocol 로 설정해주고,

3 호스트 에는 EC2 에서 할당받은 탄력적 IP를 적어준다.

로그온 유형은 키파일로 설정하고  4 사용자 서버 접속을 위해 만들었던 config 파일에서의 User (서버의 username)을 적어준다.

5 키 파일  서버 접속 시 만들었던 pem 파일의 경로를 설정해주면 된다.

그리고 오른쪽 아래의  연결  버튼을 누르면,

 

이렇게 위 사진 처럼 오른 편에 리모트 사이트 (EC2 서버!) 가 생성된 것을 볼 수 있다! 

이제 로컬 사이트의 위치를 빌드한 JAR 파일이 있는 경로로 이동한다. (나의 경우 Maven 을 이용해 프로젝트 디렉토리 안의 target 디렉토리로 이동했다)

 

이제 빌드한 JAR 파일을 드래그해서 오른쪽의 리모트 사이트에 드랍하면 EC2 서버로 파일이 전송되게 된다! 

 

4) EC2 서버에 JAR 파일 배포 

터미널을 실행시킨 뒤 아래 명령어를 통해  서버 접속 을 해주자!

ssh Host이름
// Host 이름은 config 파일에서 설정했던 서버에 접속할 때 사용할 Host 이름이다. 
// 잘 기억이 나지 않는다면 #3 서버 접속 편을 참고하자!

 

그리고 아래 명령어를 통해 서버에 어떤 파일이 있나 확인해보면, 방금 우리가 FileZila 를 통해 전송한 JAR 파일이 서버에 있는 것을 확인할 수 있다! 

ls

이 다음부터는 간단하다. 서버 터미널에서 아래 명령어를 통해 서버에서 JAR 파일을 실행하면 된다! 

java -jar 빌드한파일이름.jar

이렇게 서버에서 JAR 파일을 실행하게 되면 Spring Boot 가 실행되게 되고 배포가 성공적으로 끝난 것이다! 짝짝짝 👏👏👏

 

5) 브라우저로 접속하기!

이제 브라우저에서 

http://localhost:포트번호/... 대신 

http://탄력적IP주소:포트번호/... 

을 통해 로컬이 아닌 다른 환경에서도 접속할 수 있다! 

 

 

 

이렇게 배포가 끝이 났다! 와아아~ 👏👏

지금 우리가 한 방식은 수동 배포 방식인데, 다음 시간에는 자동 배포를 배워보도록 하자!