본문 바로가기

기타

mern stack 앱을 heroku로 배포(1) - google oauth config


유튜브 영상이나 블로그들에 heroku 배포하는 방법이 친절하게 쓰인 글이 많지만, 내가 만든 앱과 구조가 똑같진 않기 때문에 따라하다보면 응? 난 왜 막히지... 하고 한참 검색을 했었다. 헤로쿠로 배포를 직접 해보면서 막혔던 부분만 간단히 정리해보자.

 
이 글은 heroku에 처음부터 배포하는 과정을 담은 튜토리얼이 아닙니다!

 

1. google api credential 등록

heroku에 config vars를 설정하는 건 되게 간단하다. mongodb uri일 경우, key에 mongo_uri, value에 uri를 넣어주면 된다.

그런데 프로젝트에서 구글 API를 사용했기 때문에, 구글의 credential 파일도 config vars에 등록해야되는데 거기서 헤맸다.

그냥 넣어주니까 안돼서 찾아봄. 

검색해보니, google credential 파일을 heroku config에 생성해주는? 그런 역할을 하는 패키지가 있었다.

 

 

https://elements.heroku.com/buildpacks/buyersight/heroku-google-application-credentials-buildpack

 

 

heroku buildpacks:set https://github.com/buyersight/heroku-google-application-credentials-buildpack.git -a your-app-name

 

이렇게 커맨드에 입력하면 된다. 근데 set으로 하면 단일 빌드팩에 대한 설정이다. 여기서 다른 빌드팩을 추가하려면 add를 해야됨. 그런데 난 이미 nodejs에 대한 빌드팩을 set 해놨으므로, add를 해서 넣었어야했는데 set으로 하니까 이미 해놨던 nodejs 빌드팩이 사라졌었던 것 같다.

 

 

https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app

 

주언어의 빌드팩이 마지막에 들어가야된다는데... cli에 heroku buildpacks를 치면 프로젝트에서 실행하는 buildpacks들을 보여주는데 난 1번이 nodejs로 되어있다. 난 잘 실행되는데???? 

여기서 주의사항은 여러 언어를 사용할 때 heroku가 기본 언어를 헷갈리지 말라고 마지막 빌드팩에 주언어를 설정하라는 것이다. 그러니까 난 사용한 2개의 빌드팩이 혼동될 일이 없으니까 잘 실행되는 듯. 저 빌드팩은 쉘로 만들어짐.
위의 예시에서 보다시피, 저건 ruby랑 nodejs를 같이 사용하니까 nodejs를 index 1로 두었다.

그래서 만약 다른 언어 빌드팩까지 사용한다면, --index 1을 넣어서 치도록 하자...

set이니 add니 명령어가 뭔지 헷갈린다면 그냥 heroku 홈페이지에 가서 내 프로젝트 - settings에서 직접 Add buildpacks를 해도 됨. 

 

아 여기서, 저 빌드팩이 아니라 procfile을 만들어서 어떻게 해서 google config를 설정해도 되는 것 같았다. 저게 쉘이니까 직접 뭐 procfile에 요거저거 넣어서 하면 되는 것 같은데 빌드팩 설치해서 넣는 게 더 쉬운 것 같아서 그냥 함 ㅎㅎ 

 

 

 

 

그 다음, 이제 자기 프로젝트의 Config Vars에 credential.json의 텍스트를 싹 복사해서 넣어주면 된다. 

 

 

이 간단한 것에 왜 난 많은 시간을 낭비한 것일까.... 

그래도 다음에 사용할 땐 금방 할테니까 좋은 공부가 됐겠지?