노드에 MongoDB를 설정하는 방법입니다.EC2 환경에서 node mongodb native를 사용하는 js 서버는?

배경 설명

나는 이곳의 많은 사람들로부터 도움을 받았는데, 지금 나는 그들에게 보답하고 싶다.노드를 만들 때 어려움을 겪는 사람들에게js 서버는 MongodB와 합작합니다. 다음은 제가 한 일입니다.

최적 처리 전략

질문자가 최초로 발표한 것이다.국방부는 논평에서 그에게 답으로 발표할 것을 요구했지만 응하지 못했다.그래서 나는 그것을 깨끗이 치웠고, 나는 스스로 그것을 보냈다.
코드를 보면 createServer 코드가 db.open 내부에 있음을 알 수 있습니다.만약 네가 그것을 거꾸로 하면 안 된다.또한 데이터베이스 연결을 닫지 마십시오.그렇지 않으면 첫 번째 이후에 데이터베이스 연결이 다시 열리지 않습니다.(물론 db.opencreateServer 외에 성명했다.)나는 왜 createServerdb.open에 있는지 모르겠다.데이터베이스 연결을 많이 열지 않는 것과 관련이 있을 것 같습니다.
그 밖에 내가 직면한 문제는 내가 SSH를 통해 그것을 실행할 때 백엔드에서 서버(예를 들어 $ node server.js &)를 실행해도 2.5시간 후에 서버가 죽는다는 것이다(예를 들어 실례는 아니다).터미널 연결 때문인지 뭔지 모르겠어요.
다음은 프로그램과 코드입니다.
환경: EC2, AMS Linux AMI
목적: HTTP 요청을 받고 조회, IP와 시간 스탬프를 MongoDB에 기록합니다.
층계
1) 인스턴스(서버)를 만든 후 gcc를 설치합니다.
$ yum install gcc-c++
2) 다운로드 노드js 파일을 압축해제합니다.(저는 2.6 버전을 사용합니다.)
$ curl -O http://nodejs.org/dist/node-v0.2.6.tar.gz
$ tar -xzf node-v0.2.6.tar.gz
압축을 풀고 있는 폴더를 'nodejs' 로 변경합니다.
$ cd nodejs
$ sudo ./configure --without-ssl
$ sudo make
$ sudo make install
make은 시간이 오래 걸려요...다음에 nodejs에서 예시를 실행할 수 있습니다.조직하다
3) MongodB를 설치합니다.나는 1.7.5 버전이 아니라 1.6.5 버전을 설치했다.
$ curl -O http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.5.tgz
$ tar -xzf mongodb-linux-x86_64-1.6.5.tgz
$ sudo mkdir /data/db/r01/
폴더 이름을'mongodb'로 변경합니다
데이터베이스 프로세스를 실행하려면 다음과 같이 하십시오.
$ ./mongodb/bin/mongod --dbpath /data/db/r01/
그리고 원한다면 명령줄을 실행하고 시도할 수 있습니다.MongodB 웹 사이트를 방문하십시오.
4) 나는 네가 자신의 상황에 따라 자신의 목표를 세우는 것을 건의한다.20분 걸려요.그런 다음 설치를 다시 만들고 MongoDB를 다시 실행합니다.
5) node-mongodb-native 설치
$ curl -O https://download.github.com/christkv-node-mongodb-native-V0.8.1-91-g54525d8.tar.gz
$ tar -xzf christkv-node-mongodb-native-V0.8.1-91-g54525d8.tar.gz
폴더 이름을 node-mongodb-native으로 변경합니다.
$ cd node-mongodb-native
$ make
6) 서버 코드는 다음과 같습니다.
GLOBAL.DEBUG = true;
global.inData = '';
var http = require('http');
sys = require("sys");

/* set up DB */

var Db = require('./node-mongodb-native/lib/mongodb').Db,
  Connection = require('./node-mongodb-native/lib/mongodb').Connection,
  Server = require('./node-mongodb-native/lib/mongodb').Server,
  BSON = require('./node-mongodb-native/lib/mongodb').BSONNative;

var host = process.env['MONGO_NODE_DRIVER_HOST'] != null ? process.env['MONGO_NODE_DRIVER_HOST'] : 'localhost';
var port = process.env['MONGO_NODE_DRIVER_PORT'] != null ? process.env['MONGO_NODE_DRIVER_PORT'] : Connection.DEFAULT_PORT;
var db = new Db('test01', new Server(host, port, {}), {native_parser:true});

db.open(function(err, db) { 
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});

        global.inData = {'p':'', 'url':''};

        // get IP address
        var ipAddress = req.connection.remoteAddress;
        global.inData.ip = ipAddress;

        // date time
        var d = new Date();
        var ts = d.valueOf();
        global.inData.ts = ts;

        // get the http query
        var qs = {};
        qs = require('url').parse(req.url, true);
        if (qs.query !== null) {
            for (var key in qs.query) {
                if (key == 'p') {
                    global.inData.p = qs.query[key];
                }
                if (key == 'url') {
                    global.inData.url = qs.query[key];
                }
            }
        }

        if (global.inData.p == '' && global.inData.url == '') {
            res.end("");
        } else {
            db.collection('clickCount', function(err, collection) { 
                if (err) {
                    console.log('is error \n' + err);
                }

                collection.insert({'p':global.inData.p, 
                  'url':global.inData.url,
                  'ip':global.inData.ip, 
                  'ts':global.inData.ts});
                res.end("");
                //db.close();  // DO NOT CLOSE THE CONNECTION
            }); 
        }
    }).listen(8080); 
});

console.log('Server running at whatever host :8080');
이것은 완벽한 코드가 아닐 수도 있지만, 실행할 수 있다.중첩 또는 LISP 유형의 인코딩 스타일에 익숙하지 않습니다.이것이 바로 내가 부정행위를 하고 global.inData을 사용하여 데이터를 전달하는 이유다.:)res.end("")을 적당한 위치에 두는 것을 잊지 마십시오. (HTTP 요청이 끝날 것 같은 위치에 있습니다.)