2013-03-17 8 views
9

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

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

Заранее благодарим за вашу помощь!

ответ

14

У меня была такая же проблема, и решение Кевина разрешило проблему для меня, но представило другую: новые экземпляры, порожденные 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

И подробности о включении пакетов (и более) в config файл: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

+2

Отличное дополнение! Спасибо –

+0

Мне также пришлось добавить: 'gcc',' make', 'libxml2' и' libxml2-devel', чтобы заставить мою установку npm работать, вот что выглядит yum-раздел в моем app.config: [npm install error ] (https://forums.aws.amazon.com/thread.jspa?messageID=437520񪴐). – shaond

+4

Hi @sHz, у меня опять такая же проблема с другим проектом. Я должен снова добавить дополнительные пакеты, но мне бы очень хотелось избежать проб и ошибок, чтобы найти правильные. Как вы выяснили, какие нужды вам нужны? – jakeorr

1

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

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

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

Сначала удалите "Termination Protection" на вашем экземпляре EC2 (Нажмите на свой экземпляр EC2, затем найдите «Change Termination Protection». Затем вам нужно добавить «KeyPair» в экземпляр EC2. Для этого перейдите в диспетчер ELB и отредактируйте файл конфигурации вашего приложения ELB. , проверьте эту ссылку (SSH to Elastic Beanstalk instance)

2. Установите недостающие библиотеки (в моем случае, потому что Bcrypt пакет NPM был требовать его)

sudo yum update 

sudo yum install openssl-devel 

Надеется, что это помогает!

+1

Точно моя проблема и исправление 100%. обратите внимание, что при добавлении пары ключей нормально, чтобы eb отмечал все красным цветом, и панель управления выглядела так, как будто она умирает до тех пор, пока новое развертывание не будет нажато - после того, как вы запустите ssh и устраните проблемы. – Catalyst

+8

Если вы читаете и следуете за этим, пожалуйста, избегайте ручной установки пакетов на экземплярах эластичных бобовых стеблей - их не будет, когда вы автоматически масштабируете или перестраиваете среду. Вместо этого выполните ответ от jakeorr и добавьте пакет в конфигурацию .ebextensions, чтобы он автоматически устанавливался. –

+2

downvoted.это нарушает цель использования EB. Заново созданный экземпляр потеряет эти изменения. –

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^