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 install".

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

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

Ответ 1

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

Другим способом решения проблемы Kevin является добавление необходимых пакетов в файл конфигурации для вашего приложения. Создайте файл конфигурации с расширением .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

Ответ 2

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

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

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

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

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

sudo yum update

sudo yum install openssl-devel

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

Ответ 3

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

Ответ 4

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