티스토리 뷰
스프링부트 애플리케이션을 히로쿠에 배포하기
동아리에서 진행하게된 springboot기반 애플리케이션을 히로쿠에 배포하는 역할이 주어졌다 .
클라우드 플랫폼은 aws 프리티어 인스턴스만 생성해봐서 히로쿠 사이트에 들어가서 배포하는 방법을 찾아보고 정리하기로 했다.
참고로 heroku의 무료 서버를 이용하였다.
히로쿠 배포 가이드 따라하기
1. 히로쿠(heroku) 사이트에 가입 그리고 로그인 실행
먼저 양식에 따라 회원가입 후 로그인을 진행한다
회원가입은 별거없다 aws 가입보다 덜 복잡함 ㅎ
2. 로그인 후 상단의 Create new app을 통해 애플리케이션을 생성한다
오른쪽 상단에 "Create new app"을 선택하여 새로운 애플리케이션을 생성한다.
애플리케이션을 생성한다는 것은 배포를 위해 히로쿠가 관리하는 인스턴스가 생성되었다고 이해하였다.
3. 생성한 애플리케이션의 Deploy 탭을 눌러 heroku CLI를 설치한다
히로쿠 명령어를 터미널에서 사용 가능하도록 Heroku CLI를 설치 후 완료했으면 커맨드창을 띄운다
-
히로쿠에 로그인하는 명령어 "heroku login"을 입력
-
입력하면 웹으로 연결되며 로그인버튼이 나오고 버튼을 누르게 되면 로그인이 된다
-
로그인이 완료되면 커맨드 창에서 히로쿠 명령어를 사용하능하게 된다
-
-
-
로그인 후 커맨드 창에서 배포하고싶은 애플리케이션의 디렉토리로 접근 후 "git init" 입력
-
heroku는 git 프로젝트를 통해 배포서비스를 지원하므로 git으로 관리할 프로젝트를 올린다고 생각하고 가이드를 따라가자
-
성공하였다면 디렉토리에 .git 디렉도리가 생성된다
-
-
.git이 있는 디렉토리에서 "heroku git:remote -a <생성한 애플리케이션 이름>" 명령어를 입력
-
원격 장소값을 설정해주는 명령어이다
-
-
git 원격 저장소에 프로젝트 올리는 명령어와 동일하게 입력
-
"git add ." 명령어로 모든 변경사항 반영
-
만약 CRLF 에러가 나는경우 (줄바꿈 오류) 나같은 맥의 경우 LF로 바꿔쓴다
-
"git config --global core.autocrilf flase"로 설정을 바꿔주면 에러가 나지않음!
-
-
"git commit -am "커밋 메세지 입력""입력
-
변경사항을 올린 스테이지를 커밋한다
-
-
"git push heroku master"입력
-
실질적으로 heroku 인스턴스에 애플리케이션을 올린다 - 끄읕-
-
-
멀티모듈 프로젝트 배포시 오류 해결
역시나 인생은 쉽지 않았다.
하라는대로 다했는데 로컬에서도 잘 빌드되는데 heroku에 올리고 브라우저를 들어가니 app crashed 라는 에러 로그가 계속 띄워졌다.
"view logs"로 상세로그를 확인해 보니.....
"Unable to access jarfile build/libs/myapp.jar" ............
jarfile 경로를 못 찾아 일어난 오류같았다. 해당 프로젝트가 gradle을 이용한 멀티모듈 구조로 생성되어있어서 아마 메인 클래스가 있는 모듈의 경로를 못 찾았던 것 같다. 열심히 구글링 후 다행이 해결방법을 찾아 해결할 수 있었다 눙물
**)해결방법 참고 - https://stackoverflow.com/questions/34228907/spring-boot-gradle-app-on-heroku-unable-to-access-jarfile
1. 루트 프로젝트의 build.gradle 파일에서 메인 클래스가 있는 모듈 명시하는 코드 작성
jar {
baseName = 'heroku-api'
version = '0.0.1'
}
2. Procfile 생성 후 코드 작성
web: java $JAVA_OPTS -jar heroku-api/build/libs/heroku-api.jar
이렇게 코드 추가 후 브라우저에 들어가니 잘 들어가졌다 !!
다음시간에는 Gradle 멀티모듈에 대하여 정리해보고 배포시 필요한 파일들에 대하여 찾아본 것들을 정리하여야겠다.