[Spring] Spring Boot jar 파일을 AWS EC2에 배포하는 법
Spring Boot EC2에서 배포하는 법
이번 글에서는 Spring Boot
jar 파일을 AWS EC2
에서 배포하는 법에 대해서 정리해보겠습니다. 지금은 많이 경험해보았기 때문에 많이 익숙하지만, 스프링을 처음 다루어 서버에 배포할 때는 항상 헷갈렸기에 다른 처음 해보시는 분들에게 정보를 공유하기 위해 한번 정리해보려 합니다.
먼저 Spring Boot
프로젝트, AWS EC2 인스턴스 설정은 다 되어 있다고 가정하고 글을 시작해보겠습니다.
maven
mvn package
만약에 maven
프로젝트를 사용하고 있다면 위와 같이 mvn package
명령어를 사용하면 jar
파일이 만들어집니다.
그러면 위와 같이 target
디렉토리 아래에 jar
파일이 만들어진 것을 볼 수 있습니다.
1. java -jar 파일이름.jar &
ex) java -jar demo-0.0.1-SNAPSHOT.jar &
이렇게 만들어진 jar 파일로 위와 같이 실행하면 Spring Boot를 그냥 실행한 것처럼 똑같이 실행되는 것을 볼 수 있습니다.
gradle
$ ./gradlew clean build
$ sudo chmod 777 ./gradlew (위의 명령어가 안된다면)
만약 gradle 기반으로 Spring Boot 프로젝트를 만들었다면 ./gradlew clean build
명령어를 통해서 jar 파일을 만들 수 있는데요. 빌드가 성공적으로 되면 위와 같이 build/libs
디렉토리 아래에 jar 파일이 만들어지는 것을 볼 수 있습니다.
이번에도 java -jar *.jar
형태로 jar 파일을 실행하면 Spring Boot가 실행되는 것을 볼 수 있습니다.
이제 이렇게 빌드가 성공된 jar 파일을 EC2로 옮겨서 EC2에서 실행하는 것을 해보겠습니다.
FileZila를 통해서 EC2 jar 배포하기
본인이 사용하는 EC2 운영체제에 따라 조금씩 차이는 있겠지만, 위와 같이 하면 EC2
로 jar 파일이 전송할 수 있습니다.
EC2 jar 파일 배포하는 법
sudo netstat -tnlp
위의 명령을 통해서 현재 EC2에서 실행 중인 것들을 볼 수 있습니다.
sudo kill -9 pid
ex) sudo kill -9 15212
sudo nohup java -jar server.jar &
그리고 sudo kill -9
를 통해서 실행 중인 프로세스를 죽이고 전송한 jar 파일을 다시 실행하면 됩니다. 이번에는 nohup
명령어를 사용한 것을 볼 수 있는데요.
nohup 명령어는 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어입니다
nohup 명령어의 의미는 위와 같습니다. 그리고 마지막에 &를 추가하면 jar 파일이 백그라운드로 실행될 수 있게 합니다.