이 글은 Spring Boot
프로젝트를 AWS EC2
에 배포하는 방법을 정리한 글이다. 개인적으로 이번에 배포를 하며 약 5개의 EC2인스턴스를 만들고 지웠던것 같다. 글의 시작에 앞서 배포할때 한대의 클라우드 서버에 DB서버와 API서버를 같이 두는 등의 방법을 사용한다. 이는 학습용으로 참고해주었으면 좋겠다.
빌드 도구로는 gradle
을 사용하였다. 또한 DB는 MySQL
을 사용하였고, ubuntu
환경에서 배포하였다. github
을 통해 버전관리를 하였다.
기본적으로 ubuntu
환경의 EC2를 받으면 된다. EC2를 받는 부분이 주요 내용이 아니므로 이 부분은 건너뛰도록 하겠다. 간단한 방법은 아래를 참고하면 될것 같다.( src/test/java/~ 안에 있는 .java파일이 빌드시 문제가 되어 제거한 상태이다)
1. AWS EC2-ubuntu 환경의 클라우드 서버를 받음
2. 8080포트가 열린 보안그룹을 적용
3. putty를 통한 접속
EC2
는 기본적으로 git이 다운되어 있다. github에서 클론을 받는 방법은 자신의 github 저장소에 접속한다.
해당 저장소의 clone or download
를 선택한후 보이는 url을 복사해주면 된다.
그 후 아래의 명령어를 사용하여 클론받는다.
(이후 나오는 명령어의 중괄호는 무시하면 된다)
$ git clone {복사한 URL}
이렇게 되면 root
안에 방금 clone
받은 폴더가 생기게 된다.
이후 MySQL
, jdk
를 다운로드 받아야 한다.
$ sudo apt-get update
$ sudo apt-get install mysql-server
$ sudo apt-get install openjdk-8-jdk
중간 중간에 나오는 [Y/n]에서 Y를 입력해주면 된다.
MySQL
을 통해 해당 DB를 만들어 주어야 한다.
나는 DB의 root
가 아닌 새로운 user
를 통해 접속할 생각이라 새로운 user
를 만들어 주었다.
$ sudo mysql -u root -p
이후 password
를 입력하라고 하는데 딱히 설정해준 것이 없다면 Enter
를 통해 접속할 수 있다.
create user '{유저이름}'@'localhost' identified by '{유저비밀번호}';
grant all privileges on *.* to '{유저이름}'@'localhost';
create database {DB이름} default character set utf8 collate utf8_general_ci;
위의 과정 이후 빌드/실행 시키면 된다. 하지만 작성자는 .gitignore
를 통해 application.properties
를 빼 DB 정보, 암호화 비빌번호등을 작성해 주어야 한다.
위와 같이 main
으로 이동한 후 아래의 명령어를 통해서 resources
폴더를 생성한고 resources
폴더로 이동한다.
$ mkdir resources
$ cd resources
이후 application.properties
파일을 만들어 주었다.
$ vim application.properties
vim
의 사용법을 다루기에는 글이 길어질것 같아 다른 문서를 참고하면 좋을 것 같다.
root/{프로젝트}
로 이동을 한다.
그리고는 빌드를 진행한다.
$ sudo chmod 777 ./gradlew
$ sudo ./gradlew build
빌드가 되고 나면 root/{프로젝트}/build/libs
안에 .jar
파일이 생기게 된다. 위의 경로로 아래의 명령어를 통해서 실행시킬 수 있다.
$ nohup java -jar ${해당 .jar파일} &
위의 명령어는 putty
의 접속이 끊겨도 백그라운드 실행이 되는 명령어이다.
위와 같은 방식으로 Spring Boot 프로젝트를 EC2에 올려보았다. node
서버와 크게 다른점은 없는 것 같다.