APIサーバー構築ノート:CentOS+Node.js + MongoDB
記事リンク:http://harttle.com/2015/02/24/node-web-api.html
この文書では、nodejsランタイム、MongoDB jsonスタイルデータベース、redisメモリデータベースなど、jsを使用してCentOSサーバ上でWebサービス全体を構築することを試みます.まず、これらのソフトウェアをインストールします.
Node
サーバーの実行
本明細書では、
redisの起動:
nodeサーバを起動するには、次の手順に従います.
API Token
Web APIにおける権限は一般にTokenによって識別される.Webページとは異なり、APIはクッキーを使用するのに便利ではなく、通常Tokenによってユーザーを検証します.は、まずユーザがユーザ名とパスワードを送信する. サーバ認証 失敗したらエラー を返す.が成功すると、アイデンティティ識別のためにTokenが返されます.
以降のAPIアクセスは、ユーザがサーバに送信してアイデンティティを提供する必要がある.
MongoDB
MongoDBは、SQLよりも柔軟な非リレーショナル・データベース(NoSQL)です.SQLとは異なり、各レコードはテーブルのローではなくドキュメントです.ドキュメントの概念はオブジェクト向けの思想をよく実現している.参照:公式サイトドキュメント
MongoDBのデータモデルでは、documentごとに表示フィールド
うんてん
CRUD
MongoDBのdocumentはBSON形式、すなわちバイナリのJSON表現にタイプ情報が付加され、すべてのdocumentがcollectionに格納される.各クエリーには、criteriaを指定してシンボル条件のcollectionを取得し、modifierでコレクション要素を処理します(ソートなど).
クエリに加えて、
CRUD即增伤检查:create,read,update,delete
バックアップとリカバリ
データファイル
この文書では、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によってユーザーを検証します.
// 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でコレクション要素を処理します(ソートなど).
クエリに加えて、
insert
、update
、remove
のアクションがあります.これらは、単一のcollectionで使用されます.CRUD即增伤检查:create,read,update,delete
バックアップとリカバリ
データファイル
/data/db
を直接バックアップできます.一方、mongodump
およびmongorestore
は、mongod
の実行時にバックアップおよびリカバリを完了することができる.mongodump
--db <database>, -d
# ,
--collection <collection>, -c
# ,
--out <path>, -o
# ,