이번 포스팅에서는 여러분들이 작업한 Spring 프로젝트를 AWS에 배포해서, 로컬 컴퓨터가 꺼져있더라도 언제 어디서든 웹 애플리케이션에 접근할 수 있도록 하는 방법을 순서대로 설명할 것이다.
1. 프로젝트를 Executable Jar File로 압축
- 프로젝트의 배포용 패키지 파일인 executable jar file를 생성한다. 아래 포스팅에서 설명대로 진행하고 오면 된다.
https://kimcoder.tistory.com/364
- 빌드 성공 시 출력 결과
- 빌드 성공 시 패키지 파일은 target 디렉토리에 저장된다.
2. EC2 인스턴스 접속
- (참고) 이전에 블로그를 통해 EC2 인스턴스를 생성하는 절차를 다룬 내용이 있었는데, 아래 링크를 누르면 EC2 인스턴스를 생성하는 부분으로 자동으로 이동될 것이다. 여기에서 [인스턴스 생성]만 진행하고 오면 된다.
https://kimcoder.tistory.com/377#ec2-instance
※ 여러분의 EC2 컴퓨터가 미리 준비되어 있다면 이 과정은 건너 뛰어도 좋다.
- cmd를 실행하고 다음과 같은 명령어를 입력하여 EC2 인스턴스에 접속한다.
ssh ubuntu@[Public IP DNS or Address] -i [key pair 저장 위치]
※ [Public IP DNS or Address] : 여러분의 EC2 인스턴스의 퍼블릭 IP 혹은 DNS
※ [key pair 저장 위치] : 여러분의 컴퓨터에 키페어를 저장한 위치
3. EC2 컴퓨터에 JAVA 설치
- 여러분이 프로젝트를 진행했을 때 사용했던 jdk 버전에 맞게 EC2 컴퓨터에도 jdk를 설치해야 한다.
sudo apt-get install openjdk-8-jdk
※ JDK 8 버전 기준
- 아래 명령어를 통해서 jdk 설치가 잘 되었는지 확인할 수 있다.
java -version
4. EC2 컴퓨터로 Executable Jar File 전송
- FileZilla를 통해 로컬 컴퓨터에 있는 파일을 원격 컴퓨터로 손쉽게 전송할 수 있다.
https://kimcoder.tistory.com/389
- 필자는 EC2 컴퓨터의 /var/myapp으로 executable jar file을 전송했다.
※ Permission denied 에러가 뜬다면, chmod 명령어를 통해 디렉토리에 대한 접근 권한을 변경한 뒤 다시 시도해보자.
https://kimcoder.tistory.com/274
5. Executable Jar File에 실행 권한 부여
- /var/myapp에 있는 executable jar file의 접근 권한을 보니 실행(x) 권한은 없는 상태이다.
- executable jar file에도 chmod 명령어를 통해 실행 권한을 부여해주자.
sudo chmod +x otd-0.0.1-SNAPSHOT.jar
- 실행(x) 권한이 잘 추가 되었다.
6. EC2 컴퓨터에서 Executable Jar File 실행
- 다음 명령어를 통해서 터미널 세션의 유지 여부에 관계 없이 executable jar file이 계속 실행되도록 할 수 있다.
sudo nohup java -jar [Executable Jar File 위치] &
※ nohup : 터미널 세션이 끊겨도 실행을 유지하도록 하는 프로그램
※ & : 프로세스를 백그라운드에서 동작하도록 하는 명령
- 다음과 같은 문구가 나오면 잘 실행된 것이고, 명령 수행이 종료되지 않았다면 엔터를 한번 누르면 된다.
- "sudo cat nohup.out" 명령을 통해서 웹 애플리케이션의 로그를 확인할 수 있다. 정말 익숙한 로그가 출력되었다.
- "sudo netstat -tnlp" 명령을 통해서 컴퓨터에서 돌아가고 있는 포트들의 상태를 확인할 수 있다.
- 필자의 웹 애플리케이션의 포트 번호인 8080이 보인다.
- 만약에 이미 8080포트로 실행중인 다른 프로그램으로 인해 실행이 안되었다면, 다음 명령어로 기존의 프로세스를 죽일 수 있다.
sudo kill -9 [PID]
※ PID는 바로 위에서 실행했던 netstat에서 확인할 수 있다. 예를 들어, 필자의 웹 애플리케이션의 PID는 4100이다.
7. EC2 인스턴스의 인바운드 규칙 편집
- 배포한 웹 애플리케이션의 포트에 외부 접속을 허용하는 단계이다.
- 먼저, 여러분이 생성한 EC2 인스턴스의 보안 메뉴에서 보안 그룹에 들어간다.
- 하단에 있는 인바운드 규칙 메뉴에서 [인바운드 규칙 편집]을 통해서, 아래와 같이 웹 애플리케이션에 대한 포트를 추가해주면 배포 작업은 끝난다. 0.0.0.0/0은 모든 외부 접속을 허용하는 특수 주소이다.
외부 접속 화면
+ 추가) Google Cloud Kubernetes에 배포하기 (By 백기선)
DockerFile을 사용하여 Spring Boot 프로젝트를 구글 클라우드에 배포하는 방법을 소개하는 강의
참고로 이 강의에서는 gcloud 명령어를 사용하기 때문에 Google Cloud SDK를 미리 설치해놓아야 한다.
https://www.youtube.com/watch?v=3u9PY-43Sg4&t=791s
'Spring Series > Spring Boot' 카테고리의 다른 글
[Spring Boot] 2개의 DB를 사용하는 방법 (0) | 2022.11.12 |
---|---|
[Spring Boot] Executable JAR 생성하기 (0) | 2021.08.30 |
[Spring Boot] 예제로 Lombok 쉽게 이해하기 (0) | 2021.07.22 |
[Spring Boot] MVC 패턴 (0) | 2021.07.15 |
[Spring Boot] Spring vs Spring Boot / 개발 환경 설정 (0) | 2021.07.14 |
댓글