Ошибка при развертывании node.js приложение для Elastic Beanstalk на Amazon Linux 2

#node.js #amazon-web-services #nginx #amazon-elastic-beanstalk #amazon-linux-2

#node.js #amazon-веб-сервисы #nginx #amazon-elastic-beanstalk #amazon-linux-2

Вопрос:

Я пытаюсь создать приложение node js на Elastic Beanstalk. В Amazon Linux Image среда создается и работает плавно.Чтобы выполнить это, я следовал инструкциям, приведенным в самой документации AWS. Это работает в одном экземпляре.Кроме того, используя Nginx и завершив HTTPS в экземпляре, следуя информации, приведенной здесь, в корневом каталоге приложения содержится:

  • .ebextensions
  • index.js
  • package.json

Следуя всем этим пошаговым инструкциям, приведенным в документации AWS, создается среда, и приложение успешно развертывается (для Amazon Linux Image).

Однако я пытался развернуть его на Amazon Linux 2. И развертывание завершается неудачно, поскольку состояние работоспособности среды «УХУДШЕНО».

Фрагмент eb-engine.log:

 [INFO] 
> grpc@1.24.3 install /var/app/staging/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

Failed to execute '/opt/elasticbeanstalk/node-install/node-v10.15.1-linux-x64/bin/node /opt/elasticbeanstalk/node-install/node-v10.15.1-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --library=static_library --module=/var/app/staging/node_modules/grpc/src/node/extension_binary/node-v64-linux-x64-glibc/grpc_node.node --module_name=grpc_node --module_path=/var/app/staging/node_modules/grpc/src/node/extension_binary/node-v64-linux-x64-glibc --napi_version=3 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v64' (1)
  

Фрагмент web.stdout.log:

 Sep 13 12:55:31 ip-172-31-1-73 web: > nodetryapp@1.0.0 start /var/app/current
Sep 13 12:55:31 ip-172-31-1-73 web: > node index.js
Sep 13 12:55:31 ip-172-31-1-73 web: [DEFAULT]
Sep 13 12:55:32 ip-172-31-1-73 web: events.js:174
Sep 13 12:55:32 ip-172-31-1-73 web: throw er; // Unhandled 'error' event
Sep 13 12:55:32 ip-172-31-1-73 web: ^
Sep 13 12:55:32 ip-172-31-1-73 web: Error: listen EACCES: permission denied 0.0.0.0:80
Sep 13 12:55:32 ip-172-31-1-73 web: at Server.setupListenHandle [as _listen2] (net.js:1260:19)
  

Фрагмент из nginx/error.log:

  2020/09/13 13:06:31 [alert] 4023#0: *1021 1024 worker_connections are not enough while connecting to upstream, client: 127.0.0.1, server: , request: "GET /hudson HTTP/1.1", upstream: "http://127.0.0.1:80/hudson", host: "*SOME IP ADDRESS*"
  

При развертывании приложения в Amazon Linux 2 Elastic beanstalk корневая папка приложения состоит из следующих файлов / папок:

  • .ebextensions/https-instance.config и .ebextensions/https-instance-single.config
  • .platform/nginx/conf.d/extendnginx.conf (для расширения конфигурации nginx, чтобы завершить https в экземпляре)
  • index.js
  • package.json

Тип экземпляра — это один экземпляр, t2.micro.

Ответ №1:

Вы не можете запустить свое приложение на портах 80 и 443, поскольку эти порты являются эксклюзивными для службы Nginx / Apache внутри Beanstalk AMI. Вместо использования этих портов используйте 8080 для HTTP-соединений и 8443 для HTTPS-соединений.

Ответ №2:

Да, теперь это работает!Итак, последовало то, что @Raul Barreto сказал в своем ответе выше. Внесены следующие изменения: Переменная среды ‘port’ теперь установлена на 8080. В файле .platform/nginx/conf.d /extendnginx.conf добавлен

 upstream nodejs {
    server 127.0.0.1:8080;
} 
  

вместо

 upstream nodejs {
    server 127.0.0.1:80;
} 
  

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

1. docs.aws.amazon.com/elasticbeanstalk/latest/dg/…