2011-11-06 89 views
7

我试图在EC2上设置NodeJS。NodeJS需要永久构建AWS EC2

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

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

+0

你可以在EC2机器上执行“ps ux”来查看哪些进程正在与本地用户一起运行?它可能会给出停止编译的线索。 – Nican

+0

我已经在我的EC2微型实例上编译了5-6次节点,每次都不会超过10-12分钟。 – alessioalex

回答

12

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

在光明的一面,你只需要做一次。完成后,制作一个AMI,然后按照需要启动尽可能多的预装了node.js的服务器。

+0

那,或者只是使用Heroku。 – ceejayoz

+0

谢谢。但编译似乎永远不会结束。我想我会切换到PHP。当它变得越来越稳定时,我会推迟NodeJS,以便能够获取它。 –

+1

然后,听起来就像锁起来了。它足够稳定,只是新的,它不在主要回购。我已经编译了一个EC2微节点几次。 – ceejayoz

1

你是什么发行版吗?我'使用Ubuntu 10.04 LTS(在t1.micro AMI-ad36fbc4)

我与的的NodeJS预编译版本的拉链,这让我能够在接下来的时间,我需要它来跳过编译时间!

以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 

您可以终止第一台服务器,下一次你运行你必须把你的情况下用户数据这一相同的实例,并跳过编译。

#!/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 
+0

嗨kilianc,我怎样才能得到一个编译的NodeJS?我在本地运行make命令,然后像上传到S3一样。当我尝试在服务器上“进行安装”时,它给出了错误信息。 –

+0

你应该编译并从远程上传!你需要一个S3存储桶和一个t1.micro ubuntu实例。您必须在您将使用它的相同AMI上编译nodejs。尝试从大型实例编译,大约需要3/4分钟。你在玩哪个发行版? – kilianc

+0

这是一个Ubuntu AMI。然后我做了我的私人AMI并重新启动,所以我没有它的原始ID。 –