태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

 

* 간단한 테스트용 서버를 구하려고 하던 중 이왕 하는거 nodejs로 하고 싶어서 여기저기 nodejs 호스팅 업체들을 알아보던 중 무료로 할만한 곳이 Heroku와 AppFog가 있다는 것을 알게 되었다. AppFog를 이용하려고 했지만, 앱을 새로 만들 때 에러가 나기 때문에 일단 Heroku로 시작하기로 했다.

 

0. 사전 준비

: nodejs/npm 설치 - Heroku에서는 0.8.x 버전을 호환해주므로 0.8.x 버전을 설치하자. 중간의 초록색 버튼을 누르면 바로 설치가 가능하다.

 

http://nodejs.org/

 

 

* 이제부터 무료 호스팅 서비스인 Heroku를 이용해보자.

 

1. Heroku 사이트에 접속

 

http://www.heroku.com

 

 

 

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를 이용하는 방법도 아래 질문들에 나와있다.

 

http://stackoverflow.com/questions/6758386/git-push-origin-master-error-disconnected-no-supported-authentication-methods

 

* 이제 코딩을 시작하면 된다! 끝~

저작자 표시 비영리 동일 조건 변경 허락
신고

이 글을 공유하세요.

Tag , ,
  • 야동우 2013.09.12 17:46 신고  댓글주소  수정/삭제  댓글쓰기

    와우~ git 한번도 안 써봤는데 블로그 쭉~ 따라해서 호스팅 시작했네요 ^^;
    node.js 공부하는 중이라 좋은 정보 너무 감사합니다!! ^^

    • Unikys 2013.09.17 15:23 신고  댓글주소  수정/삭제

      GIT를 써보시는 김에 github도 가입해서 사용해보세요~ 무료 형상관리 사이트로는 google code와 양대 산맥으로 아주 좋습니다!

  • 유용하네여 2013.09.30 17:28 신고  댓글주소  수정/삭제  댓글쓰기

    유용한 글 감사합니다~

  • 질문있습니다. 2013.11.06 16:35 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 저는 초보자인데요.

    node js 공부하고싶어서 찾아보다 들어오게 되었습니다.

    좋은 자료 공유해주셔서 너무 감사합니다.

    궁금한것이 있는데요 package.json 에서 "name": "node-example", 이부분을 뭐라고 입력해야 실행이 될까요? @.@

    쭉 따라하다가 저부분 때문에 npm이 에러메시지를 뱉어주셔서.. 이후 진행을 못하고 있네요 ㅠㅠ

    염치불구하고 질문드립니다!

    • Unikys 2013.11.08 09:06 신고  댓글주소  수정/삭제

      네, 어떠한 이름으로 써주었나요?
      nodejs에서 name에 걸리는 제약사항은 '소문자로 작성'만 알고 있습니다. 한번 소문자로만 이름을 구성해보시고 테스트를 하는게 어떨가 싶네요

  • JSR 2013.12.23 10:48 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다!

    질문이 있는데 혹시 package.json으로 모듈을 설치하지 않고

    cmd로 이미 전역변수로 모듈을 설치되있는 상태에서

    지역변수 모듈파일은 해당 개발 디렉토리에 복사 붙여넣기 해도 상관 없을까요?

    • Unikys 2014.01.03 17:41 신고  댓글주소  수정/삭제

      이미 모듈이 설치되어있으면 nodejs에서 require로 해당 모듈을 불러오려고 하면 그대로 되는 것으로 알고 있는데 안되시나요? require함수를 쓰면서 해당 모듈의 전역 모듈 파일로 경로를 설정해주시거나 모든 파일을 복붙한다면 js기반의 모듈들은 정상적으로 돌아갈 것 같습니다.

  • Aterilio 2015.01.05 00:21 신고  댓글주소  수정/삭제  댓글쓰기

    github밖에 사용해보지 못했는데, 이 방법으로 업로드 하는 경우엔 제가 작성한 코드가 오픈되진 않나요? github는 기본적으로 오픈소스여서..여쭤봅니다.

    • Unikys 2016.09.23 04:44 신고  댓글주소  수정/삭제

      오픈되지 않습니다. 서버에 ssh로 git 저장소가 되어있으니 아이디/비번을 알아야지 접속 됩니다. (물론 클라우드라는 개념 자체가 하드웨어 위탁이기 때문에 하드웨어를 관리하는 누군가는 볼수는 있습니다만..)

  • 요한 2015.03.22 01:12 신고  댓글주소  수정/삭제  댓글쓰기

    node-js 호스팅 업체를 찾고 있었는데 정보에 설명까지 너무 감사합니다 ㅜㅠ

  • 개초보 2016.08.14 15:12 신고  댓글주소  수정/삭제  댓글쓰기

    혹시 도매인 연결도 가능한가요?

질문이나 의견을 댓글로 달아 주세요