앞선 글 에서 EC2 인스턴스에 탄력적 IP를 부여하는 방법과 ssh로 접속하는 과정까지 살펴봤다.
이제 스프링부트를 해당 서버에 띄우는법을 알아보자
우선, 서버를 가동시킬 수 있는 방법은 크게 두가지가 있는데,
1. JAR 파일을 EC2 서버로 복사해서 실행하기
2. git clone 이용하기
이 중 1번의 방법으로 실행해보려고 한다.
JAR(Java Archive, 자바아카이브)
파일이란 자바 클래스 파일 및 관련 리소스들을 하나의 파일로 모아 배포하기 위한 파일 형태이다.
프로젝트가 존재하는 폴더의 위치에서, ./gradlew clean build
를 실행하자.빌드가 완료되고 나면, build/libs
폴더 내에 {프로젝트명}-{버전}.jar
파일이 생성된 것을 볼 수 있다.
이제 이 jar 파일을 앞선 글에서 생성한 EC2 서버에 복사하자.scp 명령어는 파일 또는 디렉토리를 ssh 프로토콜을 이용해 원격지로 보내거나 가져올 때 사용한다.
scp {파일명} {원격지 계정}@{원격지IP}:{파일저장경로}
파일명
에 jar 파일명을, {원격지 계정}@{원격지IP}
대신 우리가 지정한 HOST 이름을 써주면 된다.
그럼 위와 같이 해당 파일이 잘 전송되었음을 볼 수 있다.
EC2에 접속해 확인해보자.다음과 같이 잘 복사되었음을 볼 수 있다. 이제 서버를 띄워보자.
참고로, 아직 서버에 java가 설치되어있지 않다면 먼저 java 설치를 진행한다.
sudo apt-get update
sudo apt-get install openjdk-11-jdk # 원하는 버전으로 설치
이제 서버를 띄워보자.
java -jar {jar파일명}
( 만약 서버를 중단시키지 않고 백그라운드로 실행하려면 nohup java -jar {jar파일명} &
)
다음과 같이 우리가 로컬에서 띄우는것처럼 서버가 잘 띄워진 것을 볼 수 있다!
기존 프로젝트에 데이터베이스 관련 설정이 되어있다면 현재 서버에 DB를 설치하지 않았기 때문에 오류가 뜰 것이다.
각자 DBMS에 맞는 설정을 추가로 해주자. MySQL인 경우 이 글 참고 !! (우선 아래 보안그룹 설정 먼저!)
4) 보안그룹 설정하기
이 때, 추가적으로 EC2 서버에 해주어야할 작업이 있다.
띄워진 서버의 TomcatWebServer
관련 로그를 보면 8080 포트
로 시작되었음을 볼 수 있다. (따로 포트를 지정했다면 해당 번호로 뜰 것이고 그렇지 않으면 디폴트로 8080이다)
즉, 해당 서버로 오는 요청들은 모두 8080 포트
를 통해 보내질 것이며, 따라서 해당 포트를 사용할 수 있도록 설정해주어야 한다.
인바운드 규칙
이란 외부에서 해당 인스턴스로 들어올 수 있도록 하는 규칙들을 의미한다.8080 포트
로 들어오는 요청들을 허용해야하므로 이를 추가해준다. 그리고 SSH
와 http
, https
도 함께 추가한다.이렇게 JAR 파일을 복사해 EC2 서버에서 띄우는 방법을 알아봤다.
하지만 이 경우, 만약 코드에 변경이 생긴다면 그때마다 jar 파일을 복사해 보내고, 재실행해주어야한다는 단점이 있다.
따라서 빈번하게 코드가 수정되고 머지된다면 git clone을 이용해 관리하는 것이 낫다. (제 생각.. 입니다 또 다른 방법이 있으면 말씀해주세요~!)
끝 ~