Node-RED:Введение/Запуск на Amazon Web Services: различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Запуск на Amazon Web Services<ref>[https://nodered.org/docs/platforms/aws nodered.org - Running on Amazon Web Services]</ref>= | =Запуск на Amazon Web Services<ref>[https://nodered.org/docs/platforms/aws nodered.org - Running on Amazon Web Services]</ref>= | ||
Строка 20: | Строка 20: | ||
* Создайте учетные данные для [[AWS]] и сохраните их в локальный файл ('''«~/.aws/config»''' или '''«Usersusername.awsconfig»''') как показано ниже: | * Создайте учетные данные для [[AWS]] и сохраните их в локальный файл ('''«~/.aws/config»''' или '''«Usersusername.awsconfig»''') как показано ниже: | ||
::<syntaxhighlight lang="bash | ::<syntaxhighlight lang="bash"> | ||
[profile eb-cli] | [profile eb-cli] | ||
aws_access_key_id = key id | aws_access_key_id = key id | ||
Строка 37: | Строка 37: | ||
* Создаем файл '''«package.json»''' со следующим содержимым (поменяйте '''«demoapp»''' на свое название): | * Создаем файл '''«package.json»''' со следующим содержимым (поменяйте '''«demoapp»''' на свое название): | ||
::<syntaxhighlight lang="javascript | ::<syntaxhighlight lang="javascript"> | ||
{ | { | ||
"name": "demoapp", | "name": "demoapp", | ||
Строка 63: | Строка 63: | ||
* Отредактируйте файл '''«settings.js»''', добавив в секцию '''«module.exports»''' строчки ниже (в свойстве '''«awsRegion»''' нужно задать значение, которое вы использовали в '''«eb init»''', а в свойстве '''«awsS3Appname»''' – собственное название приложения): | * Отредактируйте файл '''«settings.js»''', добавив в секцию '''«module.exports»''' строчки ниже (в свойстве '''«awsRegion»''' нужно задать значение, которое вы использовали в '''«eb init»''', а в свойстве '''«awsS3Appname»''' – собственное название приложения): | ||
::<syntaxhighlight lang="javascript | ::<syntaxhighlight lang="javascript"> | ||
awsRegion: 'eu-west-1', | awsRegion: 'eu-west-1', | ||
awsS3Appname: 'demoapp', | awsS3Appname: 'demoapp', | ||
Строка 104: | Строка 104: | ||
Залогинившись, устанавливаем [[Node.js]] и [[Node-RED]]. | Залогинившись, устанавливаем [[Node.js]] и [[Node-RED]]. | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - | curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - | ||
sudo apt-get install -y nodejs build-essential | sudo apt-get install -y nodejs build-essential | ||
Строка 114: | Строка 114: | ||
После запуска [[Node-RED]] вы можете открыть сам редактор при помощи следующей команды: | После запуска [[Node-RED]] вы можете открыть сам редактор при помощи следующей команды: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
http://<ip-адрес-вашего-экземпляра>:1880 | http://<ip-адрес-вашего-экземпляра>:1880 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 120: | Строка 120: | ||
Если вам нужно, чтобы [[Node-RED]] запускался автоматически при перезапуске [[EC2-экземпляр]]а, то это можно настроить с помощью '''«pm2»''': | Если вам нужно, чтобы [[Node-RED]] запускался автоматически при перезапуске [[EC2-экземпляр]]а, то это можно настроить с помощью '''«pm2»''': | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
sudo npm install -g pm2 | sudo npm install -g pm2 | ||
pm2 start `which node-red` -- -v | pm2 start `which node-red` -- -v |
Текущая версия от 13:13, 18 июня 2023
Запуск на Amazon Web Services[1]
Это руководство расскажет о том, как запустить Node-RED на платформе AWS.
Это можно сделать двумя способами:
- На сервисе AWS Elastic Beanstalk Service (EBS)
- С помощью Ubuntu-образа на AWS EC2
Запуск на AWS EBS
Для того, чтобы запустить Node-RED на AWS EBS, вам понадобится следующее:
- Аккаунт в AWS, в котором активированы Elastic Beanstalk, SQS и S3
- На вашем ПК должна быть установлена командная строка EB (см. тут)
- Создайте учетные данные для AWS и сохраните их в локальный файл («~/.aws/config» или «Usersusername.awsconfig») как показано ниже:
[profile eb-cli] aws_access_key_id = key id aws_secret_access_key = access key
Создаем EB-приложение
- Создаем новую папку (например, «demoapp»)
- При помощи «cd» перемещаемся в эту директорию
- Запускаем «eb init», чтобы создать новый EB-проект. Выбираем нужный регион, в качестве платформы указываем Node.js. Вас спросят, хотите ли вы использовать SSH. Если да и если вы хотите сгенерировать новую пару ключей, убедитесь, что SSH установлен на вашем ПК
- Залогиньтесь в консоли управления AWS, откройте меню «Identity and Access Management» («IAM») и добавьте политику «AmazonS3FullAccess» к роли «aws-elasticbeanstalk-ec2-role». Это даст полный доступ от EBS к S3, поэтому вы, возможно, захотите отредактировать правила этой политики, чтобы задать нужные правила безопасности
Создаем приложение Node-RED
- Создаем файл «package.json» со следующим содержимым (поменяйте «demoapp» на свое название):
{ "name": "demoapp", "version": "1.0.0", "description": "node-red demo app", "main": "", "scripts": { "start": "./node_modules/.bin/node-red -s ./settings.js" }, "engines": { "node": "10.x" }, "dependencies": { "node-red": "0.20.x", "aws-sdk": "2.4.x", "node-red-contrib-storage-s3": "0.0.x", "when": "3.7.x" }, "author": "", "license": "ISC" }
- Скопируйте в директорию своего приложения стандартный файл «settings.js» Node-RED
- Отредактируйте файл «settings.js», добавив в секцию «module.exports» строчки ниже (в свойстве «awsRegion» нужно задать значение, которое вы использовали в «eb init», а в свойстве «awsS3Appname» – собственное название приложения):
awsRegion: 'eu-west-1', awsS3Appname: 'demoapp', storageModule: require('node-red-contrib-storage-s3'),
- При помощи командной строки перейдите в корневую папку приложения и запустите «eb create». Вы, возможно, захотите задать для своего приложения какое-то более уникальное название. Запуск займет много времени, но в итоге все должно завершиться успешно
Настройка доступа к Node-RED
Теперь доступ к Node-RED можно получить прямо через URL приложения. Но это небезопасно и не очень хорошо для записи логов. Поэтому мы настроим прямой доступ к административному порту Node-RED в экземпляре EC2, который он использует.
- Зайдите в консоль управления AWS, кликните на «EC2», а затем на «Security Groups». Выберите группу с таким же названием, как у вашего приложения, и описанием «Security Group for ElasticBeanstalk Environment». Выбрав, кликните на «Actions», а потом на «Edit inbound settings». Появится окно для установки правил. Добавьте новое правило. В поле «Type» задайте «ALL Traffic», а в «Source» – «My ip». Сохраните правило.
- Выберите EC2-экземпляр, на котором запущено приложение Node-RED. Скопируйте его IP-адрес.
- Введите этот IP-адрес в адресную строку браузера, добавив порт «8081». Это даст прямой доступ к административной консоли Node-RED.
Примечание: Доступ к приложению Node-RED также можно получить через публичный IP-адрес, поэтому было бы неплохо также устранить возможность этого доступа (т.е. удалить правило с типом «HTTP» и портом «80»).
Готово! Вы запустили на EBS экземпляр Node-RED. Все созданные вами потоки будут сохранены в AWS S3. То есть даже после удаления приложения эти потоки по-прежнему будут доступны на случай, если вы захотите сделать повторную развертку.
Запуск на AWS EC2 при помощи Ubuntu
Создание базового EC2-образа
- Залогиниваемся в консоли AWS EC2
- Кликаем на «Launch Instance»
- В меню «Quick Start» выбираем «Ubuntu Server...»
- Далее выбираем тип экземпляра. В качестве отправной точки подойдет «t2.micro»
- На вкладке «Configure Security Group» добавляем новое правило типа «Custom TCP Rule» с портом «1880»
- В финальной вкладке «Review» кликаем на кнопку «Launch»
- Консоль попросит вас задать пару SSH-ключей. Выбираем пункт «Create a new key pair» и кликаем на кнопку «Download key pair». Ваш браузер сохранит на ПК файл с расширением «*.pem» – скоро он вам пригодится. Наконец, кликаем на «Launch»
Спустя пару минут ваш EC2-экземпляр будет запущен. IP-адрес этого экземпляра можно найти в консоли.
Настройка Node-RED
Далее нам нужно залогиниться в EC2-экземпляре, а затем установить Node.js и Node-RED.
О том, как подключиться к своему EC-экземпляру читайте в этом руководстве на сайте AWS.
Залогинившись, устанавливаем Node.js и Node-RED.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
sudo npm install -g node-red
После этого вы сможете протестировать свой экземпляр, запустив команду «node-red». Примечание: У вас могут выскочить ошибки, связанные с нодом «serial» – их можно проигнорировать.
После запуска Node-RED вы можете открыть сам редактор при помощи следующей команды:
http://<ip-адрес-вашего-экземпляра>:1880
Если вам нужно, чтобы Node-RED запускался автоматически при перезапуске EC2-экземпляра, то это можно настроить с помощью «pm2»:
sudo npm install -g pm2
pm2 start `which node-red` -- -v
pm2 save
pm2 startup
Примечание: Финальная команда попросит у вас запустить еще одну команду – сделайте, как она попросит.
Что дальше
В этом руководстве мы лишь поверхностно затронули то, как можно настроить свой экземпляр для запуска на EC2. Node-RED – это «просто» Node.js-приложение, запускающее HTTP-сервер, поэтому в сети можно найти немало руководств о том, какие еще настройки можно задать.
См.также
Внешние ссылки