티스토리 뷰
[Nodejs] 무료 호스팅 서버 Heroku 사용하기/소스 올리기 (윈도우)
Unikys 2013. 2. 26. 12:56
* 간단한 테스트용 서버를 구하려고 하던 중 이왕 하는거 nodejs로 하고 싶어서 여기저기 nodejs 호스팅 업체들을 알아보던 중 무료로 할만한 곳이 Heroku와 AppFog가 있다는 것을 알게 되었다. AppFog를 이용하려고 했지만, 앱을 새로 만들 때 에러가 나기 때문에 일단 Heroku로 시작하기로 했다.
0. 사전 준비
: nodejs/npm 설치 - Heroku에서는 0.8.x 버전을 호환해주므로 0.8.x 버전을 설치하자. 중간의 초록색 버튼을 누르면 바로 설치가 가능하다.
* 이제부터 무료 호스팅 서비스인 Heroku를 이용해보자.
1. Heroku 사이트에 접속
2. 가입하기
: 중간의 Sign Up 버튼을 클릭
3. 이메일 입력하기
: 이메일을 입력하면 계정 확인 메일이 보내진다.
4. 이메일에 들어가서 본문의 링크 클릭하고 비밀번호 입력하기
: 향후 서버에 소스를 올릴 때 사용하게 될 비밀번호이다.
5. 가입 완료
: 가입이 완료되면 아래와 같이 heroku의 dashboard 페이지가 나온다. 나중에는 이 페이지를 통해서 heroku에 올린 App을 설정하거나 통계치를 확인할 수 있다.
* 이번에는 간단하게 개발환경을 설정하는 것을 해보자.
6. 위의 화면에서 중간에 있는 Heroku Toolbelt for Windows 설치
: 아래의 설치 항목들 중에서 Heroku Client는 필수 항목이고, 추가 옵션 항목으로 Foreman와 Git and SSH가 있는데, Foreman은 로컬에서 테스트를 하기 위한 도구이고, Git and SSH는 서버로 소스를 올릴 때 사용해야하므로 설치되지 않았다면 선택해서 설치하도록 하자. 이미 설치가 되어있다면 굳이 설치할 필요가 없지만 다시 설치하여 설정 변경을 할 필요가 있을지도 모른다. Git를 처음 설치한다면 OpenSSH를 사용하도록 설정하자! 왜냐하면 PuTTy나 Cygwin을 이용하면 인증 과정이 조금 달라지고, 이것 때문에 하루 고생했었다.
7. 개발할 디렉토리 생성하고 기본 파일들 생성
- Git를 설치할 때 윈도우 cmd도 사용하도로 했다면 cmd를 통해서 해도 상관없지만, 이제부터는 git bash를 통해서 하면 편하다.
: 이 단계에서는 개발할 디렉토리를 생성하고 nodejs에서 사용할 환경 설정 파일들을 생성할 것이다.
- package.json
: node.js에서 사용할 페키지들과 현재 버전을 정의한다.
{ "name": "node-example", "version": "0.0.1", "dependencies": { "express": "2.5.x" }, "engines": { "node": "0.8.x", "npm": "1.1.x" } }
- web.js
: nodejs에서 시작할 때 불러올 js 파일 생성하여 저장
var express = require('express'); var app = express.createServer(express.logger()); app.get('/', function(request, response) { response.send('Hello World!'); }); var port = process.env.PORT || 5000; app.listen(port, function() { console.log("Listening on " + port); });
- Procfile
: 샘플 앱에서 처음에 사용할 환경 설정 파일
web: node web.js
8. 필요한 nodejs package 설치
: 이제 git-bash 콘솔로 와서 위의 package.json을 참조하여 npm을 통해 패키지들을 설치를 실행하면 아래와 같이 express 패키지가 설치된다.
npm install
9. foreman을 통한 테스트
: foreman은 기본적으로 C:\Program Files\Heroku\ruby-1.9.2\bin에 있으니 혹시 경로 설정이 되어있지 않다면 경로를 추가하거나 bat 파일을 만들어서 실행하면 된다.
- git bash에서는 경로상에 빈칸이 있는 것이 문제가 되어서 윈도우의 cmd에서 실행해봤다.
foreman start
* 만약 foreman start해서 Bad File Descriptor 오류가 난다면 foreman의 버전을 다운그레이드해야될지도 모른다. 아래글을 참고하면 될 것이다.
2014/01/29 - [Heroku/nodejs] foreman start를 실행할 때 Bad file descriptor 오류 해결법
: 위와 같이 해당 포트 번호가 뜨면 브라우져에서 localhost:5000 (포트번호)로 접속하면 된다.
: foreman 콘솔에서 console.log의 내용이 뜨는 것을 확인할 수 있다.
* 이제부터는 로컬에 Git저장소를 생성해보자.
10. 로컬 Git 저장소 생성
: 다시 git-bash로 와서 로컬에서 개발환경을 설정했던 디렉토리로 간다음 아래의 명령어들로 로컬에 git 저장소를 생성한다.
git init git add . git commit -m "init heroku"
: 위의 명령어들을 설명하자면, git init을 통해 로컬에 git 저장소를 생성하고, git add . 을 통해 현재 디렉토리에 있는 내용들을 git 저장소에 추가하고, 마지막으로 git commit -m "init heroku" 를 통해서 현재 저장소에 추가한 파일들을 커밋하여 확정시키게 된다. 여기서 "init heroku"는 커멘트로 어떠한 문자열이 와도 상관없다.
- git init
- git add .
- git commit -m "init heroku"
: 위의 과정들이 문제없이 끝났다면 로컬의 git 저장소를 정상적으로 생성하게 된 것이다.
* 이제 Heroku 서버에 로그인하고 파일을 업로드 하면 된다.
11. Heroku 로그인
: 다시 git-bash로 들어와서 Heroku에 로그인을 하게 되면 ssh 키를 생성할 것이냐고 물어보면 'Y'를 입력하고 엔터, 그러면 C:/Users/사용자/.ssh/id_rsa.pub에 기본 공개키를 생성하고 로그인을 하게 된다.
- 이 단계를 윈도우의 cmd에서 하게 된다면 git\bin 폴더를 경로에 추가해서 ssh-keygen 실행파일을 Heroku에서 접근해서 키를 생성할 수 있다.
heroku login
12. Heroku에 App (Git 저장소) 생성
: 로컬에서 git 생성이 끝났으면, 이제 remote인 Heroku의 서버에 git 저장소를 생성하고 파일을 업로드하면 된다.
heroku create
: heroku.com 사이트로 가서 로그인한 다음에 Apps를 클릭해보면 새로운 App 저장소가 추가된 것을 볼 수 있다.
13. Heroku 서버의 git 저장소로 소스 코드 업로드
: 이제 생성된 heroku 서버의 git 저장소로 소스를 업로드하면 된다. 위의 heroku create을 실행하는 단계에서 현재 git에 heroku의 저장소와 매칭시켜주는 heroku 가 git remote에 추가된 것을 확인할 수 있을 것이다. 따라서 이 heroku를 통해 소스를 올리면 된다.
git push heroku master
: 그럼 위와 같이 업로드가 완료되고, Launching 문구 아래에 서버에 업로드된 주소를 확인할 수 있다. 이제 브라우져를 통해 해당하는 앱의 주소나 heroku.com의 App 목록을 통해서 웹 페이지에 들어가게 되면 로컬에서 테스트한 것과 똑같은 결과가 나타나게 된다.
: 이후에는 로컬에서 코딩을 한 다음에 로컬 저장소에 commit하고 다시 git push heroku master를 통해 서버로 올리면 된다.
* 만약 git push heroku master 단계에서 "ERROR: Disconnected: No supported authentication methods available (publickey)" 라고 나온다면 git를 재설치하면서 OpenSSH를 이용하도록 설정하면 된다. 또는 PuTTy의 plink를 이용하는 방법도 아래 질문들에 나와있다.
* 이제 코딩을 시작하면 된다! 끝~
- Total
- Today
- Yesterday
- gre
- 자바스크립트
- google app engine
- 속깊은 자바스크립트 강좌
- Android
- 강좌
- 샷
- 사진
- HTML5 튜토리얼
- php
- lecture
- Javascript
- 안드로이드 앱 개발 기초
- Writing
- ny-school
- GX-10
- Python
- 탐론 17-50
- java
- TIP
- c++
- 팁
- mini project
- 서울
- K100D
- 삼식이
- HTML5
- 안드로이드
- gae
- 뽐뿌
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |