2011-11-06 16 views
7

Sto provando a configurare NodeJS su EC2.NodeJS impiega per sempre il build su AWS EC2

Ho seguito la guida ufficiale e ha funzionato correttamente sul mio computer locale. Tuttavia, quando si compila il codice sorgente su EC2, ci vuole un tempo per finire (2 ore e il conteggio). Immagino che abbia qualcosa a che fare con limite o timeout della CPU.

Non ho familiarità con Linux e makefile. C'è un modo per aggirare questo? Grazie,

+0

È possibile eseguire "ps ux" nella macchina EC2 per vedere quali processi sono in esecuzione con l'utente locale? Potrebbe dare un indizio su dove ha smesso di compilare. – Nican

+0

Ho compilato il nodo sulla mia istanza micro EC2 5-6 volte e non richiede mai più di 10-12 minuti ogni volta. – alessioalex

risposta

12

Suppongo che tu stia utilizzando un'istanza micro. Sì, ci vorrà un po 'di tempo - le istanze micro ottengono un sacco di CPU per un po', quindi diventano severamente limitate se usi la CPU per un po '. Compilare node.js richiede un uso intensivo della CPU.

Sul lato positivo, devi farlo solo una volta. Una volta terminato, crea un AMI e puoi avviare tutti i server con node.js preinstallato a tuo piacimento.

+0

Quello, o semplicemente usa Heroku. – ceejayoz

+0

Grazie. Ma la compilazione sembra non finire mai. Credo che passerò a PHP. Metterò fuori NodeJS quando diventerà più stabile che posso ottenerlo. –

+1

Sembra che sia bloccato, quindi. È abbastanza stabile, appena abbastanza nuovo da non essere ancora nel repository principale. Ho compilato il nodo su un EC2 micro diverse volte. – ceejayoz

1

Quale distro sei? Sto usando Ubuntu 10.04 LTS (ami-ad36fbc4 su un t1.micro)

Ho un file zip con una versione precompilata di nodejs, questo mi permette di saltare il tempo di compilazione la prossima volta che ne ho bisogno!

Eseguire questo script come root o inserire il campo 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 

è possibile terminare il primo server e la prossima volta che si esegue la stessa istanza si deve mettere nel vostro caso datiutente questo, e saltare la compilazione.

#!/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, come posso ottenere un NodeJS compilato? Ho eseguito il comando make localmente e poi caricato su S3 come hai fatto tu. Quando provo a "make install" sul server, ha dato un messaggio err. –

+0

dovresti compilare e caricare da remoto! hai bisogno di un bucket S3 e un'istanza di ubuntu di t1.micro. È necessario compilare nodejs sullo stesso AMI che verrà utilizzato. Prova a compilare da una grande istanza, ci vorranno circa 3/4 minuti. Su quale distro stai giocando? – kilianc

+0

Era un AMI di Ubuntu. Poi ho creato la mia AMI privata e riavviato in modo da non avere l'id originale. –

Problemi correlati