2011-11-06 92 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。 –