반응형
1. 개요
- AWS 서버에 스프링 부트 프로젝트를 jar파일 배포한다.
2. 준비
- Amazon Linux 2 서버
- Spring Boot + gradle 프로젝트
- JDK 설치
- Git 설치 및 Source Clone
3. JDK 설치
- 프로젝트를 배포하기 전 AWS 서버에 JDK를 설치해야합니다. SpringBoot의 build.gradle 파일의 sourceCompatibility를 확인해봅시다. sourceCompatibility는 현재 프로젝트에 호환된 Java 버전을 의미합니다.
- 필자의 경우 java 1.8 이므로 aws서버에 openJDK 1.8 버전을 설치를 위해 다음 명령어를 입력하겠습니다.
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
- 설치가 완료되었다면 인스턴스의 Java 버전을 8로 변경해야합니다. 다음 명령어를 입력 후 인스턴스에 적용할 java 버전의 번호를 입력합니다.
sudo /usr/sbin/alternatives --config java
- 필자의 경우 방금 설치한 java 버전만 있고, Selelction이 1로 지정되어 있으므로 입력창에 1을 입력합니다.
- 설정이 완료되면 서버의 java 버전을 확인합니다.
java -version
- 설정한 Java 버전이 조회된다면 스프링 부트 jar 배포에 대한 기본적인 준비는 끝났습니다.이제 배포를 해봅시다!
4. Git 설치 및 Clone
- 프로젝트 파일이나 빌드된 파일을 AWS 서버로 전송 해야합니다. 이 과정에 대해 채택할 수 있는 방법은 FTP가 될수도 있지만 필자의 경우 Git Clone을 통해 프로젝트 파일을 AWS 서버에서 받은 후 서버 내에서 빌드를 하는 방식을 채택했습니다.
- 다음 명령어를 입력해 AWS 서버에 git을 설치 및 확인합니다.
sudo yum install git // git 설치
git --version //git 설치(버전) 확인
- 설치가 완료되면 clone 될 디렉토리를 생성한다. 필자의 경우 홈 디렉토리 기준으로 "app" 폴더를 생성하여 그 안에 git에서 clone한 소스를 넣겠습니다.
mkdir ~/app //app 폴더생성
- 폴더 생성이 완료되면 본인의 깃허브 웹페이지에서 주소를 복사합니다.
- AWS 서버에 다음 명령을 입력하여 clone을 진행합니다.
git clone 복사한 주소
- clone이 정상적으로 완료되면 app 폴더 안에 프로젝트 소스들이 들어갔을겁니다. 이제 배포를 진행할 차례입니다.
5. 배포
- 프로젝트 경로로 들어가 다음 명령어를 입력해 jar 빌드합니다.
./gradlew bootjar
- build가 완료되면 자동적으로 build/libs 폴더 내에 "프로젝트 명/버전.jar" 형식으로 파일이 생성됩니다. 배포는 간단합니다. 이 파일을 실행시켜주면 됩니다. 스프링 부트는 jar 파일 빌드 시 tomcat 서버가 내포된 형태로 빌드되기 때문에 별도의 tomcat 서버가 필요없습니다.
java -jar jar파일 명
- 배포가 완료되었습니다. 배포된 서버로 접속하기 위해 '퍼블릭 DNS:포트'를 입력해봅시다.
- 퍼블릭 DNS는 AWS 인스턴스 상세정보로 들어가면 확인할 수 있으며 포트는 배포 로그의 마지막 부분에서 확인할 수 있습니다.
- 짜잔~ 다음과 같이 정상적으로 접속이 되었습니다.
- 만약 접속이 되지 않으신다면 AWS내에 설정한 보안 그룹에 해당 포트가 오픈되어있는지 확인해봅시다. 필자의 경우 해당 포트가 열려있지 않아 최초에 접속이 되지 않았습니다.
- 인스턴스 세부정보 > 보안 > 인바운드 규칙에 8090포트를 추가해줍시다.
6. 마치며...
- Git 연동 및 클론, 빌드, AWS 배포를 해보았습니다. 되게 간소하게(?) 진행했지만 AWS 서버에 배포를 해본건 처음이라 감회가 새로웠다. 다음 목표는 Jenkins를 연동하여 git commit이 있을 때 자동으로 AWS 서버에 수정된 코드가 배포되도록 하는 것이다. 이 작업이 끝나면 본격적인 서버 로직을 작업할것이다
반응형
'AWS' 카테고리의 다른 글
[AWS] NAT Gateway란? (0) | 2024.08.16 |
---|---|
[AWS] 서브넷이란? / 퍼블릿 서브넷 / 프라이빗 서브넷 (5) | 2024.07.25 |
[AWS] Amazon VPC 란? / 리전(Region) / 가용영역(AZ) / 라우팅 테이블 (0) | 2024.07.24 |
[AWS] Window / 프리티어로 EC2 서버 생성 (2) | 2021.10.20 |