この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
node.jsをインストール
node.jsは、イベントループとノンブロッキングI/Oを特徴として持っているサーバサイドJavaScriptの仕組みです。gitから最新のビルドをダウンロードして使うことが出来ます。早速使ってみましょう。まずは必要なライブラリをyumからインストールします。
$ sudo yum install git -y
$ sudo yum install openssl-devel -y
$ sudo yum install gcc-c++ -y
$ sudo yum install make -y
次に複数のnodeを使えるようにnvm(Node Version Manager)をgitからダウンロードします。
$ git clone git://github.com/creationix/nvm.git .nvm
$ . .nvm/nvm.sh
nodeのインストールです。0.6系と0.7系がありますのでそれぞれインストールし、0.7系を選択してみました。
$ nvm install v0.6.19
$ nvm install v0.7.9
$ nvm use v0.7.9
$ nvm ls
v0.6.19 v0.7.9
current: v0.7.9
Webサーバを立てる
早速、node.jsを使ってWebサーバを作ってみたいと思います。
$ vi app1.js
数行でできあがりです。requireの書き方は、CommonsJS(JavaScript標準作法)に沿った記述で、モジュールをロードする仕組みです。ここでは、httpモジュールをロードして3000番ポートで待ち受けしつつ、リクエストが来たらHello node.jsと返す簡単なものです。
var http = require('http');
var app = http.createServer(function(req,res){
res.end('Hello node.js');
}).listen(3000);
サーバを起動します。
$ node app1.js
ブラウザから表示を確認します。Amazon EC2のセキュリティグループ設定を忘れずに。
Expressを使ってみる
Expressは、JavaScriptのMVC雛形ソースを自動生成してくれるモジュールです。npm(Node Package Manager)を使ってインストールします。
$ npm install express
次に、最も簡単なWebサーバを書いてみます
$ vi app2.js
var express = require('express');
var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello node.js');
});
app.listen(3000);
サーバを起動します。
$ node app2.js
無事にWebサーバが起動しました。
Expressを使って雛形を自動生成する
Expressを使ってソースを自動生成してみます。
$ mkdir exp1
$ ./node_modules/express/bin/express -e exp1
create : exp1
create : exp1/package.json
create : exp1/app.js
create : exp1/public
create : exp1/public/javascripts
create : exp1/public/images
create : exp1/public/stylesheets
create : exp1/public/stylesheets/style.css
create : exp1/routes
create : exp1/routes/index.js
create : exp1/views
create : exp1/views/index.ejs
install dependencies:
$ cd exp1 && npm install
run the app:
$ node app
自動生成によってルーティング、テンプレートビュー、スタイル、ロジック等の雛形が作成されました!
$ cd exp1 && npm install
$ node app
関連するモジュールをインストールして起動すれば出来上がり。
まとめ
node.jsのインストールとHello Worldネタについていかがでしたでしょうか。とりあえず動いたというレベルですが、次はあるモジュールをロードして様々な動作を確認したいと思います。