====== node.js ======
===== 설치(우분투) =====
$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ sudo apt-get install nodejs-legacy
===== 모듈 =====
* [[programming:javascript:nodejs:express|express]]
* [[programming:javascript:nodejs:pomelo|Pomelo]]
* Crypto
[[http://cryptojs.altervista.org/secretkey/doc/doc_aes_nodejs.html|여기]]를 참고한다.
* [[programming:javascript:nodejs:mongoose|mongoose]]
* [[programming:javascript:nodejs:mysql|mysql]]
* supervisor
global로 설치 후 ''$ supervisor server.js''로 서버를 실행하면 소스가 바뀔 때마다 스스로 서버를 재실행한다.
* [[programming:javascript:nodejs:forever|forever]]
* [[programming:javascript:nodejs:passport|Passport]]
===== 환경 설정 =====
이 부분은 정리가 좀 더 필요하다.
NODE_ENV 값을 변경하여 개발 / 배포 모드 중 하나를 지정해줄 수 있다.
$ export NODE_ENV=production
env.json 파일을 만들어서 개발 / 배포 모드에 따라 특정 값을 다르게 지정할 수도 있다.(([[http://himanshu.gilani.info/blog/2012/09/26/bootstraping-a-node-dot-js-app-for-dev-slash-prod-environment/|Bootstraping a Node.js App for Dev/Prod Environment]]))
express 모듈에서 이 값을 직접 불러와서 환경 설정을 하는 포스트(([[http://inspiredjw.tistory.com/entry/Nodejs-%EC%97%90%EC%84%9C-NODEENV-%EA%B0%92%EC%9C%BC%EB%A1%9C-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0|Node.js 에서 NODE_ENV 값으로 배포/개발 환경설정하기]]))가 있는데 무슨 말인지 모르겠다.
===== 아파치 - node.js 연결 =====
proxypass를 이용하면 아파치에서 node.js로 만든 페이지로 연결할 수 있다.
ProxyPass /node http://localhost:8000/
아파치 모듈을 불러오는 것도 잊지 말자.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Ubuntu에서는 ''a2enmod proxy proxy_http''로 모듈을 불러오고 ''a2dismod proxy proxy_http''로 모듈을 언로드할 수 있다.
위와 같이 설정하면 8000번 포트로 생성한 페이지를 {domain}/node로 접속할 수 있다.
위와 같이 서브폴더와 연결한 경우 node.js에서 절대 경로로 지정한 링크들을 ''/서브폴더/경로''로 바꾸어주어야 한다. 그리고 상대 경로로 지정한 링크들도 제대로 불러오지 못했다.(왜 그런거지?) 이를 방지하려면 서브도메인을 만들어 해당 서브도메인의 루트(/)와 node.js 어플리케이션의 포트를 연결해주면 된다.
아래는 또다른 설정 예(([[http://blog.grotesq.com/post/448|Apahce, Nginx를 node.js의 프록시로 연결하기]]))
ServerAdmin {ADMIN_EMAIL}
ServerName {SERVER_NAME}
ServerAlias {SERVER_ALIAS}
ErrorLog logs/error_log
CustomLog logs/access_log common
ProxyRequests off
Order deny,allow
Allow from all
ProxyPass http://localhost:{PORT}/
ProxyPassReverse http://localhost:{PORT}/
===== 예제 =====
* [[http://nodejs-kr.org/insidejs/archives/900|socket.io 를 활용한 실시간 survey 예제]]
* [[http://wesbos.com/html5-canvas-websockets-nodejs/|Realtime HTML5 Canvas Drawing with WebSockets]]
* [[http://portal.bluejack.binus.ac.id/tutorials/creatingmultiplayerwebgameusingwebsocketnodejsandsocketio-part1-serverside|Creating Multiplayer Web Game Using Websocket, Node.js, and Socket.io]]
===== Webstorm 개발 환경 설정 =====
Webstorm은 기본적으로 Node.js 디버깅 기능을 제공한다. Run - Edit Configurations 메뉴 클릭 후 대화 상자에서 + 버튼을 클릭하고 Node.js를 선택하면 된다. 설정은 다음과 같이 하면 된다.
^ Node Interpreter | Node js 설치 경로 \\ - 윈도우의 경우 대부분 C:\Program Files\nodejs\node.exe \\ - 리눅스의 경우 대부분 /usr/bin/node |
^ Working directory | Node js 프로젝트 경로 |
^ JavaScript file | Node js 프로젝트 메인 파일 |
프로젝트에 따라 Node parameters 또는 Application parameters 설정이 필요할 수 있다. [[programming:javascript:nodejs:pomelo|Pomelo]] 게임 서버의 경우 Application parameters 속성 값을 env=development 등으로 설정하면 된다.
===== 기타 참고 자료 =====
* [[http://nodeqa.com/nodejs_ref/3#YXN5bmMucGFyYWxsZWw=|async 모듈 사용]]
===== 관련 항목 =====
* [[programming:javascript:nodejs:tip|node.js 팁]]
* [[programming:javascript:nodejs:event|Node.js Events]]
* [[programming:javascript:jshint|JSHint]]
* [[programming:javascript:tdd|Test Driven Development]]
===== 튜토리얼 사이트 =====
* [[http://www.nodebeginner.org/index-kr.html|The Node Beginner Book]]
* [[http://book.mixu.net/node/|Mixu's Node book]]
* [[http://nodetuts.com/|NODE TUTS - NODE.JS VIDEO TUTORIALS]]
* [[http://howtonode.org/express-mongodb|익스프레스와 몽고디비를 이용하는 실전 예제]]
* [[http://bcho.tistory.com/881|빠르게 훝어보는 node.js]]
===== 참고 =====
* [[http://nodejs.org/download/|node.js 다운로드]]
* [[http://stackoverflow.com/questions/9831594/apache-and-node-js-on-the-same-server|Apache and Node.js on the Same Server]]
* [[http://nodeqa.com|Node.js QA 게시판]]