스프링부트 히로쿠에 배포하기
Spring cloud config를 공부하던 중에 Git의 webhook 기능을 써보고 싶었다.
webhook 기능을 사용하려면 로컬 서버가 아닌 원격에 서버를 띄워야 한다(?)는 글을 보고 급하게 배포하는 방법을 찾아보고 정리하기로 했다.
무조건 원격이어야 하는지는 아직 확실하지 않지만 겸사겸사 배포를 한다.
예전에 개인프로젝트를 할 때는 AWS에 무료 인스턴스를 생성해서 했었다.
1년간 무료로 제공해주는 것을 사용했었는데 AWS에 등록한 카드 결제가 한번 이루어진 이후로 무서워서 heroku의 무료 서버를 이용해본다.
히로쿠 배포 가이드 따라하기
1. 히로쿠(heroku) 사이트에 가입을 한다.
오른쪽 상단에 sign up을 누르면 나오는 화면인데 특별한 것 없이 간단한 정보만 입력하고 가입하면 된다.
2. 히로쿠 사이트에 로그인을 하고 대시보드에서 새로운 애플리케이션을 만든다.
오른쪽 상단에 "Create new app"을 선택하면 새로운 애플리케이션을 생성할 수 있다.
애플리케이션을 생성한다는 것은 배포를 위해 히로쿠가 관리하는 인스턴스가 생성되었다고 이해하면 된다.
정확하게는 모르겠지만 실제로 AWS의 EC2처럼 가상머신 인스턴스가 생긴건 아닌것 같다...
3. 생성한 애플리케이션의 Deploy 탭에 들어가 heroku CLI를 설치한다.
애플리케이션이 온전히 생성되었다면 빨간색으로 표시해둔 Deploy 탭으로 들어가서 가이드를 따라하면 된다.
다운로드 링크도 제공하고 있으니 가서 윈도우면 윈도우의 것으로 설치하면 된다.
* 참고로 이미 애플리케이션이 생성되었으므로 오른쪽 상단에 "Open app" 버튼을 누르면 내가 생성한 서버의 화면을 볼 수 있다. (아래 그림 참조)
4. 히로쿠 가이드 따라하기
heroku CLI를 설치하는 것을 완료했으면 명령프롬프트(커맨드창)를 띄운다.
- 히로쿠에 로그인하는 명령어 "heroku login" 입력
- 입력하면 웹으로 연결되면서 로그인할 수 있게 해준다.
- 로그인하고 커맨드창으로 오면 로그인이 되어있다.
- 웹으로 연결되지 않으면 커맨드창에서 히로쿠 이메일과 패스워드를 쳐서 로그인할 수 있다.
- 로그인한 후 커맨드창에서 적절한 디렉토리로 가서 "git init" 입력
- 내 PC의 로컬 git repository를 생성한다.
- heroku는 git 프로젝트를 통해 배포서비스를 지원하기 때문에 어렵게 생각하지말고 git으로 관리할 프로젝트를 올린다 생각하고 가이드를 따라하면 된다.
- 여기까지하면 내가 지정한 directory에 .git 디렉토리가 생겼을 것이다.
- .git이 있는 디렉토리에서 "heroku git:remote -a <애플리케이션 이름>" 명령어를 입력한다.
- 아마 .git 내부 파일에 원격 디플로이 장소 값을 변경해준 것 같다.
- ex) "heroku git:remote -a jeong-pro" 각자가 heroku에 app을 만들었을 때 지은 이름을 넣어주면 된다.
- .git이 있는 디렉토리에 기존에 작성한 스프링부트 프로젝트의 모든 내용을 가져온다.
- 아래 그림같이 그냥 전체다 복사해서 .git이 있는 디렉토리로 복사 붙여넣기 하면 끝.
- "git add ." 입력
- 이제는 git 사용법과 동일하다.
- .git이 있는 디렉토리에 변경이 생겼으니 변경사항 모두를 반영하라는 것이다 stage에 올리는 것.
- 윈도우같은 경우 에러가 날 수 있다. CRLF 에러가 나는데 문제의 원인은 윈도우는 줄바꿈문자를 CRLF로 사용하고 유닉스(리눅스)의 경우에는 줄바꿈문자를 LF로 쓴다. (\r\n vs \n) 이문제를 git이 혼동한것이다.
- CRLF 문제가 나면 "git config --global core.autocrlf true"로 설정을 바꿔주면 에러가 안난다. 다시 add하자.
- "git commit -m "first commit" " 입력
- stage에 올렸으면 커밋하면 된다. -m옵션으로 커밋메시지까지 정의하고 커밋하도록 하자.
- "git push heroku master" 입력
- 끝났다. 스프링부트 애플리케이션이 heroku 애플리케이션으로 잘 올라갔을 것이다.
- 이상하다 싶으면 view logs를 눌러서 로그상태를 확인해서 문제되는 상황에 대처한다.
애플리케이션에 들어가 more의 view logs를 누른 화면이다. 애플리케이션이 나타내는 로그를 확인해서 처리한다.
* 참고로 애플리케이션의 Resources탭에 가서 add-ons 설정을 통해 DB같은 것들도 생성해서 사용할 수 있다.
무료로 조금만 이용해볼 수도 있고 이용료를 내고 사용하는 것도 있다. 간단하게 아래 그림과 같이 정리한다.
가이드를 잘 따라했다면 잘 떠있는지 확인해보는 것만 남았다.
개인적으로 테스트용도이기 때문에 별다른 설정은 하지 않았다. DB연동같은 것들. 아래는 테스트화면이다.
간단하게 RestController 하나달고 루트경로와 /profile 경로에 텍스트와 오브젝트를 리턴하게 해놨는데 잘된다. 만족...
* 내부적으로 연구해야할 것들이 남았다. 임베디드 톰캣이나 아이피 포트같은 설정을 어떻게 알고 적용해줬는지 특별히 설정 들어가는건 어떻게 해야하는지등... heroku를 좀더 알아봐야겠다.
참고사이트