2011-11-06 11 views
7

Próbuję skonfigurować NodeJS na EC2.NodeJS trwa wiecznie, aby zbudować na AWS EC2

Podążyłem za oficjalnym przewodnikiem i zakończyło się to sukcesem na moim lokalnym komputerze. Jednak podczas kompilowania kodu źródłowego na EC2 ukończenie trwa 2 godziny (2 godziny i zliczanie). Sądzę, że ma to coś wspólnego z limitem CPU lub limitem czasu.

Nie znam systemu Linux i plików Makefile. Czy istnieje sposób na ominięcie tego? Dzięki,

+0

Czy można wykonać "ps ux" na komputerze EC2, aby zobaczyć, jakie procesy są uruchomione u lokalnego użytkownika? To może dać wskazówkę, gdzie przestało się kompilować. – Nican

+0

Mam skompilowany węzeł na mojej instancji EC2 micro 5-6 razy i nigdy nie zajmuje to więcej niż 10-12 minut za każdym razem. – alessioalex

Odpowiedz

12

Zgaduję, że używasz mikro instancji. Tak, zajmie to trochę czasu - mikro instancje pobierają dużo procesora przez krótką chwilę, a następnie zostają poważnie ograniczone, jeśli przez jakiś czas korzystasz z procesora. Kompilowanie node.js wymaga dużej mocy obliczeniowej.

Po jasnej stronie, wystarczy zrobić to tylko raz. Gdy skończysz, zrób AMI i możesz uruchomić tyle serwerów z preinstalowaną biblioteką node.js.

+0

To lub po prostu użyj Heroku. – ceejayoz

+0

Dzięki. Ale kompilacja wydaje się nigdy nie mieć końca. Chyba przejdę na PHP. Odłożę NodeJS, gdy stanie się on stabilny, dzięki czemu mogę go użyć. –

+1

Wygląda na to, że jest zamknięty. Jest wystarczająco stabilny, na tyle nowy, że nie ma go jeszcze w głównych repozytoriach. Kilka razy skompilowałem węzeł na EC2 micro. – ceejayoz

1

Za który dystrybutor odpowiadasz? Używam Ubuntu 10.04 LTS (ami-ad36fbc4 na t1.micro)

Mam suwak z prekompilowaną wersją nodejs, dzięki temu mogę pomijać czas kompilacji następnym razem, kiedy go potrzebuję!

Uruchom ten skrypt jako root, lub umieścić w polu 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 

można zakończyć pierwszy serwer i następnym uruchomieniu tego samego wystąpienia trzeba umieścić w swoim przykład userdata ten jeden, i pominąć kompilację.

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

hi kilianc, w jaki sposób mogę uzyskać skompilowany NodeJS? Uruchomiłem polecenie make lokalnie, a następnie przesłałem do S3 tak jak Ty. Kiedy próbuję "dokonać instalacji" na serwerze, podał wiadomość err. –

+0

należy skompilować i przesłać z pilota! potrzebujesz wiadra S3 i instancji t1.micro ubuntu. Musisz skompilować nodejs na tym samym AMI, z którego go użyjesz. Spróbuj skompilować z dużej instancji, zajmie to około 3/4 minuty. Z której dystrybucji korzystasz? – kilianc

+0

To było AMI Ubuntu. Potem zrobiłem mój prywatny AMI i ponownie uruchomiłem, więc nie mam oryginalnego identyfikatora. –

Powiązane problemy