在EC2 中搭建node.js 环境

2011-10-11 22:46

在EC2 中搭建node.js 环境

by vitrum

at 2011-10-11 14:46:41

original http://cnodejs.org/blog/?p=3057

1,为什么用EC2搭建node.js环境。

首先,本地虚拟机装centOs是很好的选择,但是需要在家里和公司同时搭好相同的环境比较麻烦,而且也不方便小团队一起折腾。
亚马逊的免费虚拟机只要不跑太复杂的运算大概不会有额外的费用,而且亚马逊么有被墙,国内的托管目前cnode的邀请号求不到啊,还是自己动手丰衣足食吧。

2,如何申请免费一年的EC2

在http://aws.amazon.com/上注册。
网上有很多教程,请自行GOOGLE。
3,EC2虚拟机简单的管理和设置
新建KEY,保存。
For MAC & Linux
很简单,只要一句话
ssh -i user.pem ec2-user@ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com
以上user.pem可以是你的KEY的路径。
For PC
putty 链接ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com
注意需要在connection->SSH->Auth里选上你的KEY,之前需要转pem到ppk。
怎么看DNS名:在管理界面里,先点击你要查看的虚拟机,点右键,再弹出的菜单上点“connect”就可以看到如下图:
其中ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com是你的DNS名
一般不太需要调整什么,可能要改的就是端口8080要开启。
4,搭建node前的准备
默认的liunx中不会吧所有工具都装好,一些基本的工具,需要我们自己装。
以下:
a. make
b.gcc++
c.curl
d.git
一句话安装:
sudo yum install gcc-c++ openssl-devel make curl git

5,安装node

wget http://nodejs.org/dist/node-v0.4.12.tar.gz
tar -xvf node-v0.4.12.tar.gz
cd node-v0.4.12
./configure
make
由于是在云里跑的,所以make可能会花上30多分钟, 我出去吃了个中饭,回办公室发现好了的。所以,不用在屏幕前傻等,出去走走,预防一下颈椎病。
make install
其他调整,由于EC2中path的问题,node装完了不一定能直接跑。所以有时候需要做些映射。
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
6,测试第一个静态文件服务
先在/home/ec2-user/上建个nodeweb目录,里面放静态页面,然后可以测试了~~
var libpath = require('path'),
    http = require("http"),
    fs = require('fs'),
    url = require("url"),
    mime = require('mime');
var path = "/home/ec2-user/nodeweb";
var port = 8080;
http.createServer(function (request, response) {
    var uri = url.parse(request.url).pathname;
    var filename = libpath.join(path, uri);
    libpath.exists(filename, function (exists) {
        if (!exists) {
            response.writeHead(404, {
                "Content-Type": "text/plain"
            });
            response.write("404 Not Found\n");
            response.end();
            return;
        }
        if (fs.statSync(filename).isDirectory()) {
            filename += '/index.html';
        }
        fs.readFile(filename, "binary", function (err, file) {
            if (err) {
                response.writeHead(500, {
                    "Content-Type": "text/plain"
                });
                response.write(err + "\n");
                response.end();
                return;
            }
            var type = mime.lookup(filename);
            response.writeHead(200, {
                "Content-Type": type
            });
            response.write(file, "binary");
            response.end();
        });
    });
}).listen(port);

7,推荐阅读:

 a.Installing Node.js On Amazon EC2 :http://www.embracingthecloud.com/2010/12/05/InstallingNodejsOnAmazonEC2.aspx
 b.npm : https://github.com/isaacs/npm
 c.mime : https://github.com/bentomas/node-mime
8,其他~

求推荐操作简单的配合node用数据库。

我的微博:http://weibo.com/vitrum

关于作者
您可能也喜欢:

亚马逊EC2上node.js配置与开发的入门经验

多核单服务器各种配置和业务压力下的node.js性能测试

node.js与dojo完美的融合-开发完全面向对象化

单服务器node.js和php性能测试

Node 下 Http Streaming 的跨浏览器实现
无觅