Проблема с развертыванием Node.js на Amazon Elastic Beanstalk

Я пытаюсь развернуть приложение node.js с помощью сервиса Amazon Elastic Beanstalk. Следуя этому руководству (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.sdlc.html), мне удалось развернуть приложение. Однако после загрузки на Amazon приложение не запустилось. Изучение журналов показывает мне следующую ошибку: «Не удалось запустить установку npm».

У кого-нибудь есть хорошее представление о том, в чем может быть проблема? Приложение отлично работает локально.

Заранее спасибо за помощь!


person Kevin.    schedule 17.03.2013    source источник


Ответы (4)


У меня была та же проблема, и решение Кевина решило проблему для меня, но представило другую: новые экземпляры, созданные EB для автоматического масштабирования, также нуждаются в ручной настройке. Это модификация метода Кевина, которую я сделал для решения обеих проблем:

Еще один способ решить проблему Кевина — добавить необходимые пакеты в файл конфигурации вашего приложения. Создайте файл конфигурации с расширением .config (например, myapp.config) и поместите его в каталог верхнего уровня .ebextensions исходного пакета. Чтобы потребовать пакет openssl-devel, включите следующие строки в файл конфигурации:

packages:
    yum:
        openssl-devel: []

Подробнее о том, куда идет файл конфигурации: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_custom_container.html

Подробная информация о включении пакетов (и не только) в файл конфигурации: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

person jakeorr    schedule 22.03.2013
comment
Отличное дополнение! Спасибо - person Kevin.; 24.03.2013
comment
Мне также пришлось добавить: gcc, make, libxml2 и libxml2-devel, чтобы моя установка npm заработала, вот как выглядит раздел yum в моем app.config: ошибка установки npm. - person shaond; 29.03.2013
comment
Привет @sHz, у меня снова такая же проблема с другим проектом. Я должен снова добавить дополнительные пакеты, но я действительно хотел бы избежать проб и ошибок, чтобы найти правильные. Как вы выяснили, какие зависимости вам нужны? - person jakeorr; 24.04.2013
comment
Спасибо @jakeorr, но разве этот файл конфигурации не запускается после установки npm с пакетами? Не должны ли мы добавить его как файл AppDeployPreHook/xxfile-name.sh (имея префикс к имени меньше, чем 50npm.sh) - person asaf am; 17.08.2015

Я узнал, в чем проблема. Вот объяснение.

Причина, по которой менеджеру пакетов npm не удалось установить некоторые пакеты, заключалась в том, что некоторые пакеты требовали предварительной установки библиотек Linux (например, OpenSSL-devel). Для решения этой проблемы мне пришлось:

<сильный>1. SSH для моего экземпляра EC2, связанного с моим экземпляром Node.js Elastic Beanstalk

Во-первых, удалите «Защиту от завершения» в вашем экземпляре EC2 (нажмите на свой экземпляр EC2, затем найдите «Изменить защиту от завершения». Затем вам нужно добавить «KeyPair» в экземпляр EC2. Для этого перейдите к диспетчеру ELB и отредактируйте файл конфигурации вашего приложения ELB. Для получения подробных объяснений перейдите по этой ссылке (SSH для Elastic Beanstalk экземпляр)

<сильный>2. Установите отсутствующие библиотеки (в моем случае, потому что этого требовал пакет npm bcrypt)

sudo yum update

sudo yum install openssl-devel

Надеюсь это поможет!

person Kevin.    schedule 19.03.2013
comment
Точно моя проблема и 100% исправление. обратите внимание, что при добавлении пары ключей для eb нормально помечать все красным, и панель инструментов выглядит так, будто она умирает, пока не будет запущено новое развертывание - после того, как вы подключитесь по ssh и устраните проблемы. - person Catalyst; 26.11.2013
comment
Если вы читаете это и следите за этим, избегайте ручной установки пакетов на эластичные экземпляры beanstalk — их не будет там, когда вы автоматически масштабируете или перестраиваете среду. Вместо этого следуйте ответу jakeorr и добавьте пакет в конфигурацию .ebextensions, чтобы он был установлен автоматически. - person Josh Hunt; 17.03.2015
comment
проголосовали против это противоречит цели использования EB. Вновь подготовленный экземпляр потеряет эти изменения. - person Lucky Soni; 12.08.2016

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

person doer    schedule 28.07.2016

Я обнаружил аналогичную проблему, и для меня ошибка заключалась в том, что пакет узла не был успешно установлен, поэтому однажды, когда я удалил этот пакет узла из моего package.json, потому что мне это действительно не нужно, это сработало!

person Anurag S    schedule 19.07.2019