本指南将引导您完成在AWS环境中运行Node-RED的步骤。
有两种方法:
确保您拥有一个已启用Elastic Beanstalk、SQS和S3的AWS账户
下载EB命令行工具并在本地计算机上安装 - 参见link
创建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
;您可能需要指定一个更独特的应用程序名称。这个过程需要较长时间才能完成,但最终会成功返回。现在可以直接通过应用程序的网页URL访问Node-RED。但这种方式不安全且日志记录效果不佳。我们将改为配置直接访问Node-RED所在EC2实例上的管理端口。
在AWS控制台中,选择EC2,然后选择安全组。您将看到一组安全组。选择名称与您的环境匹配且描述为"ElasticBeanstalk环境的安全组"的组。选中后,点击"操作",然后选择"编辑入站规则"。将出现包含规则的对话框。添加新规则,将类型设为"所有流量",来源设为"我的IP"。保存该规则。
选择运行node-red应用的EC2实例。复制其IP地址
在浏览器中输入IP地址,端口号为8081。这将直接访问node-red管理控制台。
注意:公共IP地址也提供了对node-red应用的访问权限,最佳实践是同时移除该访问权限,即删除端口80的HTTP规则。
您的Node-RED实例现已在EBS上运行。您创建的任何流都将保存到AWS S3,因此您可以拆除环境,并且在重新部署时仍可访问这些流。
此部署选项为您提供一个多节点的Node-RED设置,使用亚马逊弹性文件系统(EFS)实现共享文件系统。由于它在负载均衡器后运行多个节点,您将获得高可用性——如果某个节点宕机,Elastic Beanstalk会自动替换它。
要开始使用,请克隆此处的代码库https://github.com/guysqr/node-red-ha-on-aws并按照简单的说明操作。基础设施由CloudFormation模板为您创建,因此您无需了解太多AWS知识即可完成设置。
此外,该部署选项允许您在https协议下运行Node-RED,并通过Auth0登录(或者您可以轻松切换至内置身份验证或任何兼容Passport的身份提供商)。
登录 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应用程序——基于这个原理,您还可以参考许多在线指南来探索其他可能性。
Node-RED: 面向事件驱动应用的低代码编程平台。
版权所有 OpenJS基金会 及 Node-RED 贡献者。保留所有权利。OpenJS基金会 拥有注册商标并使用商标。有关 OpenJS基金会 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS基金会商标列表 中标注的商标™或注册®商标归其各自持有人所有。使用这些商标并不意味着与它们有任何关联或获得其认可。
The OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS基金会章程 | 商标政策 | 商标列表 | Cookie政策