2011-11-06 30 views
7

NodeJSをEC2に設定しようとしています。NodeJSがAWS EC2を構築するのに永遠にかかります

私は公式ガイドに従って、私のローカルマシンで成功しました。しかし、EC2上でソースコードをコンパイルすると、それは終わりまで(2時間とカウント)永遠にかかります。私はそれはCPUの制限やタイムアウトと関係があると思います。

私はLinuxとmakefileに慣れていません。それを回避する方法はありますか?ありがとう、

+0

EC2マシンで "ps ux"を実行して、どのプロセスがローカルユーザーで実行されているか確認できますか?コンパイルがどこで停止したのかを知る手がかりになるかもしれません。 – Nican

+0

EC2マイクロインスタンスでNodeを5〜6回コンパイルしましたが、毎回10〜12分以上かかることはありません。 – alessioalex

答えて

12

私はあなたがマイクロインスタンスを使用していると思います。うん、それはしばらく時間がかかるだろう - マイクロインスタンスはしばらくの間CPUの多くを取得し、しばらくの間CPUを使用すると、ひどく制限されます。 node.jsのコンパイルはCPUを大量に使用します。

明るい側では、1度だけ行う必要があります。完了したら、AMIを作成して、node.jsをあらかじめインストールしておき、好きなだけ多くのサーバーを起動できます。

+0

それ、またはちょうどHerokuを使用してください。 – ceejayoz

+0

ありがとうございます。しかし、コンパイルは決して終わらないようです。私はPHPに切り替えると思う。 NodeJSが安定したら、私はそれを得ることができます。 –

+1

それはロックされたような音。それは十分に安定しているだけで、それはまだメインリポジトリにはありません。私はEC2マイクロのノードを数回コンパイルしました。 – ceejayoz

1

ディストロはありますか? Ubuntuのに10.04 LTSを使用してI'am(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 

は、あなたはあなたがこの1 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 
+0

こんにちはkilianc、どのように私はコンパイルNodeJSを得ることができますか?私はあなたのようにローカルにmakeコマンドを実行してからS3にアップロードしました。私はサーバー上で "インストール"をしようとすると、エラーメッセージを出しました。 –

+0

あなたはコンパイルし、リモートからアップロードする必要があります! S3バケットとt1.micro ubuntuインスタンスが必要です。同じAMIでnodejをコンパイルする必要があります。大きなインスタンスからコンパイルしようとすると、約3/4分かかります。あなたはどちらのディストロをしていますか? – kilianc

+0

それはUbuntu AMIでした。それから、プライベートAMIを作って再起動したので、元のIDは持っていません。 –

関連する問題