[Heroku]express서버 Heroku에 배포하기


여러분 안녕하세요~~ 서버파트 YB 이동훈입니다~~!!
오늘은 우리가 만든 서버를 Heroku에 배포 하는 방법에 대해 알아보겠습니다~ ^ㅁ^

프로젝트를 진행하거나 혹은 공모전, 포트폴리오용으로 서버를 배포해야 할 일이 생깁니다. 다양한 방법들이 있겠지만 저번에 소개해드린 ngrok을 쓰거나 ec2를 대여하여 배포하는 방법이 있죠.
하지만.. ngrok의 경우 로컬 서버를 계속해서 열어놔야하는 단점이 있고, aws ec2의 경우에는 free-tier일 경우 무료이지만 2개 이상의 ec2를 이용하면 과금이 되고, 상대적으로 배포하는데 난이도가 있다는 단점이 있습니다.

무료이지만, 로컬에서 계속 열어줄 필요는 없으며, 서버의 성능은 좀 떨어지더라도 배포와 관리가 편한 호스팅 서비스가 있다면 얼마나 좋을까요??

그 해답은 바로 Heroku에 있습니다. 한번 자세하게 알아볼까요??



Heroku (헤로쿠)

헤로쿠는 최대 5개까지의 앱을 무료로(프리티어의 경우 한달에 1000시간, 1개 앱 기준 41.6일) 호스팅할 수 있는 클라우드 서비스입니다. git을 이용하여 배포가 이루어지기 때문에 상대적으로 편하게 작업 가능합니다.

하지만 단점도 분명 있겠죠?? 헤로쿠의 경우 해당서버에 몇 시간동안 요청이 없는 경우에는 수면 상태로 전환하게됩니다. 때문에 초기 접속시 5~10초의 대기시간이 필요한 경우가 생깁니다(이를 해결하기위해 10분마다 request를 거는 방법이 있지만 이는 나중에 다루도록 하겠습니다!!). 때문에 상용서버로 활용하기에는 무리가 있고 공모전용이나 포트폴리오, 개인블로그 용으로 사용하는 편입니다.

이제 헤로쿠가 어떤 서비스인지 이해했으리라 믿고 express 서버를 호스팅하는 방법에 대해 소개하겠습니다.



배포가 git을 통해 이뤄지므로 git cli가 설치 되어 있다는 전재하에 진행하도록 하겠습니다.
자신의 컴퓨터에 git이 설치되어 있는지 확인하는 방법은 git --version을 커맨드 창에 쳐보면 됩니다.

1) 우선 Heroku 사이트에서 회원가입을 진행합니다. 회원가입 링크 : https://signup.heroku.com/login

ex_screenshot

회원 가입 후에 이메일 인증을 하면 비밀번호를 설정할 수 있습니다.

2) Heroku 관련 명령어를 입력해야 하므로 Heroku CLI를 다운로드 해야합니다. Heroku CLI 설치
각자의 OS에 맞게 다운로드를 진행해 주세요~~

3) 설치가 되었는지 확인하기 위해 터미널에 heroku --version을 입력해보세요. 만약 heroku/7.33.3 darwin-x64 node-v11.14.0 이런식으로 나왔다면 성공적으로 설치를 완료한 것입니다.

4) 터미널에 heroku login을 입력하여 로그인을 해줍니다.

5) 이제 호스팅할 서버를 만들어보겠습니다. 다음 명령어들을 입력해주세요.

express heroku-test // express generator로 프로젝트 생성 
cd heroku-test // 해당 폴더로 이동
npm install // 기본 모듈 설치


6) .gitignore 파일을 생성후에 node_modules를 무시해줍니다.

// .gitignore

node_modules/  // node_modules 하위폴더 전부 무시


7) Heroku에 호스팅을 해보겠습니다. 다음 명령어들을 입력해주세요!!

git init // git 시작
git add . // add 
git commit -m "first" // 스테이징


이후에 heroku create 명령어를 통해 호스팅할 공간을 만들어 주겠습니다. heroku create <appname> 이때 중요한 점이 appname은 unique해야한다는 것입니다. 호스팅 시에 최종 도메인은 https://appname.herokuapp.com/ 다음과 같이 정해지므로 원하는 appname을 넣어주세요!!!

heroku create <appname>


성공적으로 생성했다면 2개의 주소가 나올텐데 저희는 git이라고 써저있는 주소를 복사하겠습니다. 그리고 다음 명령어를 입력합니다.

git remote add heroku 복사한 주소 


이미 remote repository가 설정되어 있을 수 있습니다~~!! 뭐 상관은 없지만요.

그 후에 git push heroku master 명령어를 사용해 호스팅을 완료합니다.

git push heroku master // 호스팅!! 


만약 오류가 뜬다면 다음 명령어를 입력해보세요~

heroku ps:scale web=1


8) 호스팅이 끝났습니다~!! (정말 쉽죠??) 이제 배포가 잘되었는지 확인하기위해서 도메인 (ex: https://appname.herokuapp.com/)을 입력하시거나 heroku open 명령어를 통해 실행을 해봅시다.

ex_screenshot

짜잔!! 이렇게 뜨면 잘 따라오신겁니다.

9) 배포는 끝이 났고 이제 수정사항을 업데이트 해볼까요?? routes/index.js를 다음과 같이 수정해보겠습니다.

//routes/index.js

var express = require('express');
var router = express.Router();


router.get('/', function(req, res, next) {
  res.status(200).json({
      message:"sopt 서버 여러분 안녕하세요~,sopt-Media에 좋아요와 댓글 부탁드립니다!!(꾸벅)",
  })
});

module.exports = router;


10) 그 후에 다음 명령어들을 입력하여 업데이트 해줍니다.

git add . // 변경사항 add 
git commit -m "sopt 최고" // 스테이징
git push heroku master // 업데이트 


11) 다음과 같은 화면이 나온다면 성공!!

ex_screenshot




여기까지 따라오시느라 고생하셨습니다. 어떤가요?? 각각의 특성이 있지만 쉽게 배포하고 관리할 수 있다는게 Heroku의 장점 인 것 같습니다. 상황에 맞게 호스팅 방법을 선택하면 좋을것 같습니다. 궁금한점 있으시면 언제든 말해주세요~!!! ^ㅁ^