Для сборки NodeJS на AWS EC2 требуется вечность

#node.js #amazon-ec2

#node.js #amazon-ec2

Вопрос:

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

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

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

Комментарии:

1. Можете ли вы выполнить «ps ux» на компьютере EC2, чтобы увидеть, какие процессы выполняются с локальным пользователем? Это может дать ключ к пониманию того, где он прекратил компиляцию.

2. Я компилировал Node на своем микроэкзамене EC2 5-6 раз, и каждый раз это никогда не занимало больше 10-12 минут.

Ответ №1:

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

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

Комментарии:

1. Спасибо. Но компиляция, похоже, никогда не заканчивается. Думаю, я переключусь на PHP. Я отложу NodeJS, когда он станет стабильнее, и я смогу его легко получить.

2. Похоже, что он заблокирован. Он достаточно стабилен, достаточно новый, чтобы его еще не было в основных репозиториях. Я несколько раз компилировал node на EC2 micro.

3. Привет ceejayoz. Я попытался создать в последний раз с параметром «amp;», и это сработало! На этот раз я не был заблокирован. Спасибо за помощь.

Ответ №2:

В каком дистрибутиве вы работаете? Я использую 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 amp;amp; 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 amp;amp; cd npm
git checkout v1.0.104 amp;amp; make install

cd ../
rm -rf npm
rm -rf node

mkdir s3-uploader amp;amp; 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
  

Комментарии:

1. привет, kilianc, как я могу получить скомпилированный NodeJS? Я запустил команду make локально, а затем загрузил на S3, как и вы. Когда я пытаюсь «выполнить установку» на сервере, выдается сообщение об ошибке.

2. вы должны скомпилировать и загрузить с удаленного! вам понадобится корзина S3 и экземпляр ubuntu t1.micro. Вы должны скомпилировать nodejs на том же AMI, который вы будете использовать. Попробуйте скомпилировать из большого экземпляра, это займет около 3/4 минут. В каком дистрибутиве вы играете?

3. Это был Ubuntu AMI. Затем я создал свой личный AMI и перезапустил, поэтому у меня нет его исходного идентификатора.