Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

파란색가운의 개발 블로그

[Mac] AWS를 통한 Spring Boot 프로젝트 배포 방법 본문

카테고리 없음

[Mac] AWS를 통한 Spring Boot 프로젝트 배포 방법

파란색 가운 2024. 6. 24. 09:57

안녕하세요 ! 

스프링부트 프로젝트를 AWS를 통해 배포하는 과정에 대해 포스팅하려고 합니다

두고두고 써먹을 것 같아서 오늘 오전에 포스팅하도록 하겠습니다 

 

1. Spring Boot 프로젝트 생성

https://start.spring.io/

전 Spring initializr이 편리해서 이거로 사용합니다

 

여기서 Dependencies -> Spring Web 추가해주었습니다. (이것은 개인별로 상이하므로 본인이 원하는 것을 사용하시면 됩니다.)

여기서 version을 너무 높은걸로 선택해주면 호환이 되지 않을 수도 있으므로 , 주의! 

저는 이 세팅으로 프로젝트 만들어주었습니다.

 

2. IntelliJ 설정

인텔리제이 상단 바에서 File -> Manage IDE Settings -> Settings sync -> 사진처럼 gradle 검색 후 Gradle JVM을 프로젝트 생성시 선택했던 Java 버전과 맞춰줍니다.

 

3. GetMapping 경로 설정

이 부분은 각자 프로젝트에 따라 다르지만 , 저는 깡통 프로젝트를 하나 먼저 만들어 배포 실습이었기 때문에 

간단하게 Main 패키지 내에 HelloController 클래스를 추가해 주었습니다.

package com.example.demoooooo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/demo")
    public String helloWorld(){
        return "Hello World!";
    }
}

4. (optional) 서버 포트번호 설정

톰캣 8080과의 충돌을 막기 위해서, application.properties에 들어가서 server.port를 8090으로 설정해주었다.

 

5. gradle build 단계

본인이 여기에서 한참 힘들었다

저기 + 오른쪽에 가서 무조건 bash 환경인지 확인하기 !! 본인은 zsh라서 이거로 하루종일 뭐가 문제인가 고민했다.

 

bash 환경인지 확인 후, 터미널에서 경로가 현재 파일인지 ls를 통해 확인해보자.

만약 경로가 잘못 되어 있다면 cd /Users/~ 본인 경로 입력으로 경로를 바꿔주면 된다.

./gradlew build

실행하기

혹시나 무엇을 하다가 꼬여서 다시 하게 된다면 

./gradlew clean build

로 다시 실행해줍시다.

-> 이전 빌드 결과물을 모두 제거하고 처음부터 build해주는 명령어입니다.

 

실행 후 jar 파일이 생기게 되면 , 성공! 

 

6. jar 파일 실행하기

 

build가 성공했다면 , 현재 파일 내에 /build/libs가 새로 생긴 것을 확인할 수 있어야 한다.(없으면 오류 발생 가능성 높음!!)

 

jar 파일을 실행할 때는, 경로를 /build/libs로 바꿔줘야 하므로

cd /를 이용해서 경로를 바꿔줍니다

터미널에 이렇게 libs가 떠있으면 경로 바꾸기 성공

 

java -jar ./프로젝트명.0.0.1-SNAPSHOT.jar

본인은
java -jar ./demoooooo.0.0.1-SNAPSHOT.jar

를 통해 jar 파일을 실행시켜준다.

 

7. 이후 경로 설정을 그대로 두고, SCP / SSH를 통한 배포

SCP : 파일을 원격 서버로 안전하게 전송하는 프로토콜로, SSH를 사용하여 암호화된 전송을 제공

SSH :원격 서버에 안전하게 접속하고 명령어를 실행하는 프로토콜 / 보안이 중요한 원격 관리를 위해 사용

 

1/ SCP 명령어를 통해 현재 가지고 있는 jar 파일을 원격 서버로 전송

 

(현재 경로가 libs에 있어야 한다)

 

scp -i /users/Sunghyun/Desktop/본인의-키.pem demoooooo(프로젝트명)-0.0.1-SNAPSHOT.jar ubuntu@본인 AWS 공개 Ipv4 주소:/home/ubuntu 입력

 

 

2/ SSH를 통해 원격 서버에 접속

 

ssh -i /Users/sunghyun/Desktop/alan-key.pem (본인의 키 파일 경로) ubuntu @(Ipv4 공개 주소)

 

8. 로그 저장

nohup java -jar 프로젝트명-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &

 

9. 오류 검사

sudo nginx -t

 

성공한 경우 

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


실패한 경우

nginx: [emerg] unknown directive "iphash" in /etc/nginx/sites-available/default:2
nginx: configuration file /etc/nginx/nginx.conf test failed

 

9. 웹 서버 재시작

sudo systemctl restart nginx