NodeJS永远需要在AWS EC2上构建

时间:2011-11-06 02:09:49

标签: node.js amazon-ec2

我正在尝试在EC2上设置NodeJS。

我按照官方指南,在我的本地机器上取得了成功。但是,当在EC2上编译源代码时,它需要永远完成(2小时和计数)。我想这与CPU限制或超时有关。

我不熟悉Linux和makefile。有没有办法绕过那个?谢谢,

2 个答案:

答案 0 :(得分:14)

我猜你正在使用微实例。是的,这需要一段时间 - 微型实例会在短时间内获得大量CPU,如果你使用CPU一段时间会受到严重限制。编译node.js是CPU密集型的。

从好的方面来说,你只需要做一次。完成后,制作AMI,您可以根据需要预先安装node.js来启动任意数量的服务器。

答案 1 :(得分:1)

你发布的是哪个发行版?我正在使用ubuntu 10.04 LTS(t1.micro上的ami-ad36fbc4)

我有一个带有nodejs预编译版本的zip,这使我能够在下次需要时跳过编译时间!

以root身份运行此脚本,或放入userdata字段。

#!/bin/bash

apt-get update -y
apt-get upgrade -y
apt-get install -y \
git-core build-essential \
    openssl \
    libssl-dev \
    zip \
    --fix-missing

git clone http://github.com/joyent/node.git && cd node
git checkout v0.4.12
./configure
JOBS=2 make

cd
zip -r node-v0.4.12-c.zip node

git clone http://github.com/isaacs/npm.git && cd npm
git checkout v1.0.104 && make install

cd ../
rm -rf npm
rm -rf node

mkdir s3-uploader && cd s3-uploader
npm install knox

cat < uploader.js >> EOF
var
    knox = require('knox'),
    fs = require('fs');

var client = knox.createClient({
    key: 'S3_API_KEY'
  , secret: 'S3_API_SECRET'
  , bucket: 'S3_BUCKET_ID'
});

fs.readFile('../node-' + process.version + '-c.zip', function(err, buf){
  var req = client.put('node-' + process.version + '-c.zip', {
      'Content-Length': buf.length
    , 'Content-Type': 'text/plain'
  });
  req.on('response', function(res){
    if (200 == res.statusCode) {
      console.log('saved to %s', req.url);
    }
  });
  req.end(buf);
});
EOF

node uploader.js

您可以终止第一台服务器,下次运行同一个实例时,您必须将此实例放入您的实例userdata中,并跳过编译。

#!/bin/bash

wget –O node-v0.4.12-c.zip https://s3.amazonaws.com/[your-bucket-name]/node-[your-nodejs-version]-c.zip
unzip node-[your-nodejs-version]-c.zip
cd node
make install
cd ../
rm -rf node
rm -rf node-[your-nodejs-version]-c.zip