Amazon EC2にnode+express+mongoDBの環境を構築します。
EC2の構築に関しては以下のSlideがとてもわかりやすいです。
nodeの環境構築
EC2を立ちあげてsshにも成功したら、いよいよnodeの環境構築に入ります。
必要なライブラリをyumでインストールします。
% sudo yum install git -y % sudo yum install openssl-devel -y % sudo yum install gcc-c++ -y % sudo yum install make -y
次にnvm(Node Version Manager)をgitでダウンロードします。
% git clone git://github.com/creationix/nvm.git .nvm % . .nvm/nvm.sh
なお、$ . .nvm/nvm.sh
はnvmの起動シェルなので、
.bashrc
に追記しておくと便利です。(結構忘れます)
nodeのインストール
環境構築ができたらnodeをインストールします。
foreverを使いたいので0.6系を選択します。
% nvm install v0.6.19 % nvm use v0.6.19 % nvm ls v0.6.19 current: v0.6.19
モジュールのインストール
express, mongodb, mongooseをnpm(Node Package Manager)を使ってインストールします。
これはプロジェクトのあるディレクトリで行ないます。(/var/www/hoge など)
プロジェクトのディレクトリ以下にnode_modulesディレクトリが作成され、
そこにインストールしたモジュールが入っています。
% npm install express % npm install mongodb % npm install mongoose
MongoDBのインストール
MongoDBをソースからインストールします。
% sudo wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.8.0.tgz % tar xvfz mongodb-linux-x86_64-1.8.0.tgz % cd mongodb-linux-x86_64-1.8.0 % mv ./bin/* /usr/local/bin/
プロジェクトディレクトリに移動し、MongoDBを起動します。
% mkdir db % mongod --dbpath ~/db/ --logpath ~/db/db.log
nodeでプログラムを動かす
サンプルプログラムとして、app.js, user.jsを作成し、nodeで起動します。
% node app.js
// app.js var express = require("express"); var app = express(); var User = require('./user'); app.configure(function(){ app.use(express.methodOverride()); app.use(app.router); }); app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function(){ app.use(express.errorHandler()); }); app.get('/', function(req, res){ // インスタンス作成 var u = new User(); // データセット u.name = 'hoge'; u.age = '49'; // 保存 u.save(); console.log("test"); // 読み出し & ブラウザへデータ送信 User.find({}, function(err, items){ // find()の結果をブラウザに出力 res.send(JSON.stringify(items)); }); }); console.log('run server. port 3000.'); app.listen(3000);
//user.js var mongoose = require('mongoose'); var db = mongoose.connect('mongodb://localhost:27017/test'); function validator(v) { return v.length > 0; } var User = new mongoose.Schema({ name : { type: String, validate: [validator, "Empty Error"] }, age : { type: String, validate: [validator, "Empty Error"] }, created: { type: Date, default: Date.now } }); module.exports = db.model('user', User);
ポート3000でアクセスするとひたすらMongoDBにデータを格納していくプログラムです。
EC2のSecurity GroupsでTCPポート3000を開放するのを忘れずに。