I am trying to setup NodeJS on EC2.
I followed the official guide and it was successful on my local machine. However when compile the source code on EC2, it takes forever to finish (2 hours and counting). I guess it has something to do with CPU limit or timeout.
I am not familiar with Linux and makefiles. Is there a way to bypass that? Thanks,
I'm guessing you're using a micro instance. Yep, it's going to take a while - micro instances get lots of CPU for a short while, then get severely capped if you use CPU for a while. Compiling node.js is CPU intensive.
On the bright side, you only have to do it once. Once it's finished, make an AMI and you can launch as many servers with node.js pre-installed as you like.
Wich distro are you on? I'am using ubuntu 10.04 LTS (ami-ad36fbc4 on a t1.micro)
I have a zip with a precompiled version of nodejs, this make me able to skip the compilation time the next time i need it!
Run this script as root, or put in the userdata field.
#!/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
you can terminate the first server and the next time you run the same instance you have to put in your instance userdata this one, and skip the compilation.
#!/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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.