2011-11-06 2 views
7

EC2에서 NodeJS를 설정하려고합니다.NodeJS가 AWS EC2를 빌드하는 데 오래 걸림

공식 가이드를 따르면 내 로컬 컴퓨터에서 성공적으로 수행되었습니다. 그러나 EC2에서 소스 코드를 컴파일 할 때는 영원히 끝내야합니다 (2 시간 및 계산). 나는 그것이 CPU 제한이나 타임 아웃과 관련이 있다고 생각한다.

저는 리눅스와 메이크 파일에 익숙하지 않습니다. 저것을 우회하는 방법 있는가? 감사합니다,

+0

EC2 컴퓨터에서 "ps ux"를 실행하여 로컬 사용자가 실행중인 프로세스를 확인할 수 있습니까? 컴파일이 중단 된 곳을 알 수 있습니다. – Nican

+0

EC2 마이크로 인스턴스에서 노드를 5-6 번 컴파일했는데 매번 10-12 분 이상 걸리지 않습니다. – alessioalex

답변

12

마이크로 인스턴스를 사용하고 있습니다. 네, 잠시 동안 기다려야 할 것입니다. 마이크로 인스턴스는 잠깐 동안 CPU를 많이 사용하고 잠시 CPU를 사용하면 심각한 문제가 발생합니다. node.js 컴파일은 CPU를 많이 사용합니다.

밝은면에서는 한 번만 수행하면됩니다. 완료되면 AMI를 만들고 원하는대로 node.js가 사전 설치된 많은 서버를 시작할 수 있습니다.

+0

그건, 아니면 그냥 Heroku를 사용하십시오. – ceejayoz

+0

감사합니다. 그러나 편집은 끝나지 않는 것처럼 보인다. PHP로 전환 할 것입니다. NodeJS가 안정적으로 될 때 나는 그것을 얻을 것이다. –

+1

다음은 잠긴 것처럼 들립니다. 그것은 충분히 안정적이며, 단지 메인 리포지토리에 아직 충분하지 않다. EC2 마이크로에서 노드를 여러 번 컴파일했습니다. – ceejayoz

1

님이 배포 하시겠습니까? 나는 우분투 10.04 LTS (t1.micro에서 ami-ad36fbc4)를 사용하고있다.

나는 nodejs의 미리 컴파일 된 버전으로 압축되어 있는데, 다음 번에 필요할 때 컴파일 시간을 건너 뛸 수있게 해준다.

이 스크립트를 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 

당신은 당신이 하나의 유저 데이터 인스턴스에 넣어 가지고 같은 인스턴스를 실행하는 첫 번째 서버 및 다음 시간을 종료하고, 컴파일을 건너 뛸 수 있습니다.

#!/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 우분투 인스턴스가 필요합니다. nodejs를 사용할 AMI에서 nodejs를 컴파일해야한다. 큰 인스턴스에서 컴파일하려고하면 약 3/4 분이 걸립니다. 어느 디스트로가 연주 중이십니까? – kilianc

+0

우분투 AMI였습니다. 그런 다음 개인 AMI를 만들고 다시 시작하여 원래 ID가 없습니다. –

관련 문제