2011년 9월 23일 금요일

dotcloud.com 으로 node.js 서비스 호스팅 하기

PaaS 이니 뭐니 하는 귀찮은 설명은 생략. dotcloud.com은 플랫폼을 빌려주는 호스팅 서비스라고 대충 정의하자. dotcloud.com에 자신만의 웹 서비스를 올려서 호스팅 할 수 있다.

이 글의 내용은 dotcloud documentation의 Services 항목 중 node.js에 관한 것을 다르게 정리한 것 뿐이다. dotcloud의 경우 상당히 많은 언어와 플랫폼을 지원하기 때문에 node.js에 관심이 없다면 다른 언어에 대해서도 살펴볼 것. 현재 perl/php/python 등 다양한 언어와 플랫폼을 지원하고 있다.

한가지 조건이 있는데 dotcloud 호스팅을 이용하기 위해서는 Mac OS X나 Linux 같은 UNIX 터미널 쉘 환경을 지원하는 OS에서 해야 한다. dotcloud CLI가 Python 으로 만들어진 쉘용 유틸리티 이기 때문이다. 윈도우 등에서는 Cygwin을 통해서 할 수 있을지도 모르겠다.

1. 가입하기

dotcloud.com에 들어가서 가입(Sign Up)하자. 아 참고로 현재는 무료서비스만 지원한다 -_-;; 이상한 정보는 안물어보는 심플한 가입절차를 거치고 적당히 로그인이 되면 우측 상단의 Settings 항목을 클릭해보자.


상단의 API Key는 API 식별코드이고 사람마다 다르다. 어쨌던 나중에 써야 하니 알아두자.

이제 dotcloud CLI를 설치해야 한다. Python으로 만들어진 도구이기 때문에 easy_install 이나 pip를 이용해 설치하면 된다.
$ easy_install pip
$ pip install dotcloud
위 명령은 easy_install로 pip를 설치하고 pip로 dotcloud CLI를 설치하는 예제인데 굳이 이렇게 안하고 easy_install dotcloud로 바로 설치해버려도 상관은 없다. 단지 개인적으로 easy_install을 좀 싫어하는 편이라...

2. API Key 입력

설치가 완료되면 dotcloud 도움말을 한번 보자.
$ dotcloud -h
도움말만 보려고 했는데 생뚱맞게 API Key 입력을 요구한다면 정상이다. 위에서 Settings 페이지 상단의 API Key를 그대로 복사해서 넣어주면 이제 도움말이 나올 것이다. API키는 한번만 입력하면 저장되니 이제 Settings 화면은 거의 필요가 없다.

3. 실제 프로젝트 시작

아래와 같은 식의 디렉토리 구조를 잡고 프로젝트를 시작한다.
project/
    myapp-dotcloud/
        dotcloud.yml
        myapp/
            app.js
            supervisord.conf
project 디렉토리는 그냥 만들어 본 디렉토리. 디렉토리도 잘 정리해 두면 좋다. -_-;;

app.js는 실제로 만들 node.js 프로젝트다. 파일 이름은 원하는 대로 만들자. express + jade 등으로 모듈을 구축해도 될 것 같다.

node.js로 웹서비스를 만들 때 중요한 점은 포트를 8080으로 잡아야 한다는 것이다. 이 외의 포트를 사용하면 어떻게 될 지는 모르겠지만, 8080포트의 경우 dotcloud가 자동으로 80을 통해 접속할 수 있도록 해 준다.

dotcloud.yml 파일은 앱에 대한 정보를 담고 있다. 아래와 같은 식이다.
www:
  type: nodejs
  approot: myapp
myapp에 대한 정보를 담고 있다. www라는건 웹서비스를 의미하는 것이고 node.js type으로 설정, approot는 myapp이라는 디렉토리로 설정한다.

별도의 데이터베이스 엔진이 필요하다면 여기에 추가로 db를 구성해야 한다. 하지만 여기서는 DB를 생략한다. 정확한 내용은 dotcloud 문서를 볼 것.

supervisord.conf 는 실제 서비스가 어떻게 구동되는지 설정이 들어가야 한다.
command = node app.js
directory = /home/dotcloud/current
command의 내용은 실제 쉘 커맨드에서 입력하던 내용과 동일하다. 즉 app.js를 node를 이용해 실행시켜서 웹서버를 띄운다는 것.

4. App 생성 후 서버에 올려보기

project 디렉토리에서 아래 커맨드를 입력하면 app을 생성한 후 실제로 서버에 올려버린다.
$ dotcloud create myapp
$ dot cloud push my app myapp-dotcloud
push 시에 시간이 좀 걸리겠지만 놔둔다.

push가 완료되면 실제 서비스 주소를 알려준다. 보통 app이름-사용자이름.dotcloud.com이 된다. 여기서는 myapp-userid.dotcloud.com이 될 것이다. 이 주소를 웹브라우저로 열어보자.

원하는 내용이 보이면 성공.