2011-11-06 2 views
7

Tôi đang cố gắng thiết lập NodeJS trên EC2.NodeJS mất mãi mãi để xây dựng trên AWS EC2

Tôi đã làm theo hướng dẫn chính thức và nó đã thành công trên máy cục bộ của tôi. Tuy nhiên khi biên dịch mã nguồn trên EC2, phải mất mãi mãi để hoàn thành (2 giờ và đếm). Tôi đoán nó có cái gì để làm với giới hạn CPU hoặc thời gian chờ.

Tôi không quen với Linux và makefiles. Có cách nào để vượt qua điều đó không? Cảm ơn,

+0

Bạn có thể thực thi "ps ux" trong máy EC2 để xem những quá trình nào đang chạy với người dùng cục bộ không? Nó có thể cung cấp cho một đầu mối đến nơi nó ngừng biên dịch. – Nican

+0

Tôi đã biên dịch Node trên EC2 vi dụ 5-6 lần và nó không bao giờ mất hơn 10-12 phút mỗi lần. – alessioalex

Trả lời

12

Tôi đoán bạn đang sử dụng một phiên bản vi mô. Đúng, nó sẽ mất một thời gian - trường hợp vi nhận được rất nhiều CPU trong một thời gian ngắn, sau đó nhận được giới hạn nghiêm trọng nếu bạn sử dụng CPU trong một thời gian. Biên dịch node.js là CPU chuyên sâu.

Ở mặt tươi sáng, bạn chỉ phải thực hiện một lần. Khi đã hoàn tất, hãy tạo một AMI và bạn có thể khởi chạy nhiều máy chủ có cài đặt sẵn node.js như bạn muốn.

+0

Điều đó, hoặc chỉ sử dụng Heroku. – ceejayoz

+0

Cảm ơn. Nhưng việc biên dịch dường như không bao giờ kết thúc. Tôi đoán tôi sẽ chuyển sang PHP. Tôi sẽ loại bỏ NodeJS khi nó trở thành stabler mà tôi có thể apt-get nó. –

+1

Có vẻ như âm thanh đã bị khóa rồi. Nó rất ổn định, chỉ mới đủ mà nó không có trong repo chính được nêu ra. Tôi đã biên dịch nút trên vi EC2 vài lần. – ceejayoz

1

Bạn đang bật tính năng phân phối nào? Tôi đang sử dụng ubuntu 10.04 LTS (ami-ad36fbc4 trên t1.micro)

Tôi có mã zip với phiên bản được biên dịch sẵn của nút, điều này khiến tôi có thể bỏ qua thời gian biên dịch vào lần tới tôi cần!

Chạy tập lệnh này dưới dạng gốc hoặc đưa vào trường 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 

bạn có thể chấm dứt máy chủ đầu tiên và lần tiếp theo bạn chạy cùng một phiên bản bạn phải đặt trong cá thể userdata của bạn và bỏ qua quá trình biên dịch.

#!/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, làm thế nào tôi có thể nhận được một NodeJS biên dịch? Tôi chạy lệnh make tại địa phương sau đó tải lên S3 như bạn đã làm. Khi tôi cố gắng "thực hiện cài đặt" trên máy chủ, nó đã đưa ra thông báo lỗi. –

+0

bạn nên biên dịch và tải lên từ xa! bạn cần một thùng S3 và một phiên bản t1.micro ubuntu. Bạn phải biên dịch các nút trên cùng một AMI, bạn sẽ sử dụng nó. Cố gắng biên dịch từ một ví dụ lớn, nó sẽ mất khoảng 3/4 phút. Bạn đang chơi trò gì? – kilianc

+0

Đó là một Ubuntu AMI. Sau đó, tôi đã tạo AMI riêng của mình và khởi động lại vì vậy tôi không có id gốc của nó. –