本指南将引导您完成在 AWS 环境中运行 Node-RED 的步骤。
有两种方法:
确保您拥有启用 Elastic Beanstalk、SQS 和 S3 的 AWS 账户。
下载 EB 命令行并安装到您的本地计算机 - 请查看 链接。
创建 AWS 凭证,并将其保存在本地文件中(~/.aws/config 或 Usersusername.awsconfig),格式如下:
[profile eb-cli]
aws_access_key_id = key id
aws_secret_access_key = access key
创建一个新目录(例如 demoapp
)。
进入该目录。
运行 eb init
创建一个新的 Elastic Beanstalk 项目。选择首选区域,并将 Node.js 作为平台。系统会询问您是否希望使用 ssh。如果是,请确保您的计算机上已安装 ssh,以便生成新密钥对。
登录 AWS 控制台,在浏览器中选择身份与访问管理(IAM),并将 AmazonS3FullAccess 策略添加到 aws-elasticbeanstalk-ec2-role。注意:这将给予 EBS 到 S3 的完全访问权限,您可能希望根据自己的安全需求调整此策略。
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": "1.1.x",
"aws-sdk": "2.4.x",
"node-red-contrib-storage-s3": "0.0.x",
"when": "3.7.x"
},
"author": "",
"license": "ISC"
}
将默认的 Node-RED settings.js 文件 复制到 demoapp 目录。
编辑 settings.js 文件,向 module.exports 添加以下条目(将 awsRegion 设置为 eb init 中使用的区域,并将 demoapp 替换为您的应用名称):
awsRegion: 'eu-west-1',
awsS3Appname: 'demoapp',
storageModule: require('node-red-contrib-storage-s3'),
eb create
;您可能希望指定一个更独特的应用名称。此操作可能需要很长时间,但最终将成功返回。Node-RED 现在可以直接通过应用程序的网页 URL 访问。然而,这样不安全,并且在日志方面效果不佳。因此,我们将配置对其使用的 EC2 实例上 Node-RED 管理端口的直接访问。
在 AWS 控制台中,选择 EC2,然后选择安全组。您将看到一组安全组。选择一个名称为您的环境且描述为“ElasticBeanstalk 环境的安全组”的安全组。选择后,点击“操作”,然后选择“编辑入站设置”。将出现一个包含规则的对话框。添加一个新规则。设置类型为“所有流量”,源为“我的 IP”。保存该规则。
选择运行 Node-RED 应用程序的 EC2 实例,复制其 IP 地址。
在浏览器中输入 IP 地址,并加上端口 8081。这将提供对 Node-RED 管理控制台的直接访问。
注意:公共 IP 地址也会提供对 Node-RED 应用程序的访问,最好在同一时间删除该访问权限,即端口 80 的 HTTP 规则。
您的 Node-RED 实例现在在 EBS 上运行。您创建的任何流都会保存到 AWS S3,因此您可以拆除环境,流将在您重新部署时可访问。
此部署选项为您提供了一个多节点的 Node-RED 设置,使用 Amazon Elastic File System (EFS) 进行共享文件系统。由于它在负载均衡器后面运行多个节点,因此您将具有高可用性 - 如果一个节点死掉,Elastic Beanstalk 将自动替换。
要开始,克隆此存储库 https://github.com/guysqr/node-red-ha-on-aws 并遵循简单的说明。基础设施由 CloudFormation 模板创建,因此您无需了解太多关于 AWS 的知识即可设置。
此外,此部署选项使您能够在 https 下运行 Node-RED 并通过 Auth0 登录(或您可以轻松切换到内置身份验证或任何 Passport 兼容的 ID 提供者)。
登录到 AWS EC2 控制台。
点击“启动实例”。
在快速启动 AMI 列表中,选择 Ubuntu Server。
选择实例类型 - t2.micro
是一个不错的起点。
在“配置安全组”选项卡中,为端口 1880 添加一个新的“自定义 TCP 规则”。
在最后的“审查”步骤中,点击“启动”按钮。
控制台将提示您配置一组 SSH 密钥。选择“创建一个新密钥对”,点击“下载密钥对”。您的浏览器将保存 .pem
文件 - 请妥善保管。最后,点击“启动”。
几分钟后,您的 EC2 实例将运行。在控制台中,您可以找到实例的 IP 地址。
接下来的任务是登录到实例,然后安装 node.js 和 Node-RED。
请遵循 AWS 指南 连接到您的实例。
登录后,您需要安装 node.js 和 Node-RED:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
sudo npm install -g --unsafe-perm node-red
此时,您可以通过运行 node-red
来测试您的实例。注意:您可能会收到一些与串口节点相关的错误 - 这在所料之中,可以忽略。
一旦启动,您可以在 http://<your-instance-ip>:1880/
访问编辑器。
为了让 Node-RED 在每次实例重启时自动启动,您可以使用 pm2:
sudo npm install -g --unsafe-perm pm2
pm2 start `which node-red` -- -v
pm2 save
pm2 startup
注意: 最后此命令会提示您运行进一步的命令 - 请确保您按照指示操作。
本指南仅仅触及您选择配置实例以在 EC2 中运行的表面。Node-RED 只是一个暴露 HTTP 服务器的 node.js 应用程序 - 根据这一原则,您可以使用许多在线指南来了解其他可能的内容。
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 拥有并使用注册商标。有关 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS Foundation 商标列表 中列出的商标和徽标是其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策