NodeJS требует вечной работы на AWS EC2 - PullRequest
7 голосов
/ 06 ноября 2011

Я пытаюсь настроить NodeJS на EC2.

Я следовал официальному руководству, и это было успешно на моей локальной машине.Однако, когда компилируется исходный код на EC2, это займет вечность (2 часа и подсчет).Я предполагаю, что это как-то связано с ограничением процессора или тайм-аутом.

Я не знаком с Linux и make-файлами.Есть ли способ обойти это?Спасибо,

Ответы [ 2 ]

14 голосов
/ 06 ноября 2011

Полагаю, вы используете микроэкземпляр. Да, это займет некоторое время - микроэкземпляры на короткое время получают много ЦП, а затем сильно ограничиваются, если вы используете ЦП некоторое время. Компиляция node.js требует много ресурсов процессора.

С другой стороны, вам нужно сделать это только один раз. После завершения создайте AMI, и вы сможете запустить столько серверов с предустановленным node.js, сколько захотите.

1 голос
/ 06 ноября 2011

В каком дистрибутиве вы работаете?Я использую Ubuntu 10.04 LTS (ami-ad36fbc4 на t1.micro)

У меня есть zip с предварительно скомпилированной версией 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

вы можете завершить работу первого сервера, и при следующем запуске того же экземпляра вы должны будете вставить его в свой экземпляр.userdata это и пропустить компиляцию.

#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...