Node.js 로 만든 앱이나 서비스를 로컬 머신이 아닌 Web 상에서 호스팅하여 테스트 혹은 서비스를 하고 싶은 경우가 있다.
물론 자신의 서버와 도메인을 가지고 서비스를 하거나, AWS 에 저장공간을 가지고 서비스를 할 수 도 있으나 과금이 발생하므로, 무료인 서비스가 있다면 테스트로 쓰거나 작은 프로젝트를 돌리는데 무리는 없을 것 이다.
Node.js 프로젝트를 클라우드에 올려서 서비스를 해주는 heroku cloud application platform 사용법을 알아보자.
Heroku 는 플랫폼 서비스 기반(PAAS) 서비스로 AWS 와 비슷한 플랫폼으로 일정 환경으로는 무료로 사용할 수 있고 더 좋은 성능의 환경을 구축한다면 과금이 발생하게 된다.
1. Heroku 등록
- https://www.heroku.com/ 에서 등록을 한다.
- 등록한 이메일로 링크가 보내지는데 링크를 클릭하여 비밀번호를 입력한다.
- 제대로 등록하였다면 Login 후 Dashboard 화면이 나온다.
2. Heroku Toolbelt 을 설치
- https://toolbelt.heroku.com/ 에서 Heroku Toolbelt 을 설치한다.
- Heroku Toolbelt 설치 항목은 다음과 같다.
- Heroku Client: CLI 툴로 command 로 Heroku app 을 관리
- Foreman: 로컬테스트 등의 기능 제공
- Git: Heroku 에 push, revision control 등을 제공
3. SSH Key 등록
- Heroku 는 git 을 이용하고, ssh key 가 필요하다.
- shell 에서 다음 명령으로 heroku 에 로그인을 하면, ssh key 를 찾고, 없다면 생성 가능하다.
- $ heroku login
- 제대로 등록되었다면 이후에 heroku login 명령으로 접속이 가능하다.
4. Node.js App 작성
5. Procfile 작성
- 자신의 app 의 root 디렉토리에 Procfile 이라는 파일을 생성하여 다음과 같이 기술한다.
- Node.js 의 Entry Point 가 되는 실행명령어가 기술되는 파일이다.
web: node app.js
6. package.json 작성
- 자신의 app 의 root 디렉토리에 package.json 파일을 작성해야 한다.
- package.json
- app 의 이름, 버전, node 의 버전, npm 버전, 사용한 라이브러리의 버전등의 정보를 기술해야한다.
- npm 모듈중 express 는 반드시 사용해야하고, package.json 에 기술해줘야 한다.
- 예제는 다음과 같다.
{ "name": "slide-control", "version": "0.0.1", "scripts": { "start": "node app" }, "dependencies": { "express": "3.1.x", "jade": "0.28.x", "socket.io": "0.9.x" }, "engines": { "node": "0.8.x", "npm": "1.1.x" } }
7. NPM Install
- shell 에서 다음 명령을 수행하면 package.json 을 참고하여 로컬에 해당 npm 모듈들이 인스톨 된다.
- $ npm install
- 설치가 된 후 npm ls 명령으로 현재 설치된 npm list 들을 살펴볼 수 있다.
- $ npm ls
8. foreman Test
- 로컬에서 Test 를 하고 싶다면, shell 에서 다음 명령을 수행하면 로컬에서 5000번 포트로 테스트가 가능
- $ foreman start
- http://localhost:5000
9. Git 저장소 생성
- 개발한 소스를 로컬 Git 에 저장하기 위해 다음과 같이 수행한다.
- $ git init
- $ git add .
- $ git commit -m "comment"
10. Heroku 에 리모트 Git 저장소 생성 및 push
- 개발한 소스를 Heroku 리모트 Git 올리기 위해 다음과 같이 수행한다.
- 로그인
- $ heroku login
- Heroku Remote Git 생성
- 프로젝트 생성시 --stack cedar 이후에 자신의 앱이름을 적어준다.
- 기술된 이름은 http://앱이름.herokuapp.com/ 과 같이 서비스되는 URL 의 이름으로 쓰인다.
- $ heroku create --stack cedar myapp
- 로컬 Git 의 내용을 Heroku 리모트 Git 으로 push
- 아래와 같이 heroku git 으로 push 하는 즉시 App 이 Deploy되면서 서비스되는 URL 이 보여진다.
- $ git push heroku master
- 만약 첫 앱이름을 잘못 작성하여 새로 create 한경우에는 remote 설정을 지우고 다시 push 하면된다.
- $ git remote rm heroku
- $ heroku git:remote -a newname
11. Dashboard 에서 확인
- https://www.heroku.com/ 에서 로그인 후 Dashboard 에서 현재 서비스되는 자신의 App 리스트를 볼 수 있다
- Resources
- 과금을 통해 좀더 빠른 서비스를 제공받을 수 있다.
- Activity
- Heroku Git 에 기여한 이력등을 볼 수 있다.
- Collaborators
- 다른사람을 초대하나 하여 협업이 가능하다.
- Settings
- 현재 App 에 대한 설정등을 변경할 수 있다.
'Node.js' 카테고리의 다른 글
[Heroku] Deploy 된 Hubot 일정시간뒤에 Sleep 되는 현상 (2) | 2016.01.12 |
---|---|
[Node.js] Ubuntu 에 Node.js 설정하기 (2) | 2016.01.07 |
[Node.js][Winston][Jsnlog] Node.js log module (0) | 2015.02.15 |
[Node.js] forever - node.js app 이 죽을경우 자동으로 재실행해주는 모듈 (4) | 2015.02.15 |
[Node.js] supervisor,nodemon - javascript 파일 변경시 node 자동으로 재시작하는 모듈 (0) | 2014.06.07 |