APIサーバー構築ノート:CentOS+Node.js + MongoDB


記事リンク:http://harttle.com/2015/02/24/node-web-api.html
この文書では、nodejsランタイム、MongoDB jsonスタイルデータベース、redisメモリデータベースなど、jsを使用してCentOSサーバ上でWebサービス全体を構築することを試みます.まず、これらのソフトウェアをインストールします.
# centos
yum install git nodejs npm mongodb mongodb-server redis

# Mac OSX
brew install mongodb nodejs redis

Node
サーバーの実行
本明細書では、screenを使用してサーバソフトウェアの実行を完了しただけで、完全に導入されていません.実際の本番環境の導入では、完全なログ記録、サーバパフォーマンスモニタリングなどが必要です.
redisの起動:
screen -dmS redis   #     detach screen  
screen -list        #   redis    
screen -r <number>  # attach redis  
redis-server        #   node
<C-a-d>             # detach    

nodeサーバを起動するには、次の手順に従います.
screen -dmS node    #     detach screen  
screen -list        #   node    
screen -r <number>  # attach node  
sudo npm start      #   node
<C-a-d>             # detach    

API Token
Web APIにおける権限は一般にTokenによって識別される.Webページとは異なり、APIはクッキーを使用するのに便利ではなく、通常Tokenによってユーザーを検証します.
  • は、まずユーザがユーザ名とパスワードを送信する.
  • サーバ認証
  • 失敗したらエラー
  • を返す.
  • が成功すると、アイデンティティ識別のためにTokenが返されます.

  • 以降のAPIアクセスは、ユーザがサーバに送信してアイデンティティを提供する必要がある.
  • //   jwt
    var jwt = require('jwt-simple');
    
    //            secret
    var secret = 'hehe'
    
    // username -> Token
    User.methods.getToken = function(){
          return jwt.encode(this.username, secret);
    }
    
    // Token -> username
    User.statics.findByToken = function(token, callback){
          this.findOne({ username: jwt.decode(token, secret)}, callback);
    }

    MongoDB
    MongoDBは、SQLよりも柔軟な非リレーショナル・データベース(NoSQL)です.SQLとは異なり、各レコードはテーブルのローではなくドキュメントです.ドキュメントの概念はオブジェクト向けの思想をよく実現している.参照:公式サイトドキュメント
    MongoDBのデータモデルでは、documentごとに表示フィールド_id:ObjectIdがある.このフィールドでドキュメントの関連付けを行うことができます.もちろん、JSON形式のネストを直接使用することもできます.mongooseにおいて、_idは引用符、ユーザバックグラウンド判定を含む.idは引用符を含まず、フロント表示に使用されます.
    うんてん
    #       ,          
    mkdir -p /data/db
    
    #      ,    :27017
    mongod
    # centOS     init.d  
    service mongod start
    
    #   MongoDB  
    mongo
    
    #         
    show dbs
    use <db_name>
    
    #     
    show collections
    db.<collection_name>.drop()
    
    #   
    help
    db.help()
    db.<collection_name>.help()

    CRUD
    MongoDBのdocumentはBSON形式、すなわちバイナリのJSON表現にタイプ情報が付加され、すべてのdocumentがcollectionに格納される.各クエリーには、criteriaを指定してシンボル条件のcollectionを取得し、modifierでコレクション要素を処理します(ソートなど).
    @2x
    クエリに加えて、insertupdateremoveのアクションがあります.これらは、単一のcollectionで使用されます.
    @2x
    CRUD即增伤检查:create,read,update,delete
    バックアップとリカバリ
    データファイル/data/dbを直接バックアップできます.一方、mongodumpおよびmongorestoreは、mongodの実行時にバックアップおよびリカバリを完了することができる.
    mongodump
    --db <database>, -d
    #      ,      
    
    --collection <collection>, -c
    #     ,      
    
    --out <path>, -o
    #     ,