Это делает работу без какого-либо другого веб-сервера.
На основе Документация Node-RED: встраивание в существующее приложение , узел-RED работает с управляемыми серверами http и https, предоставленнымиnode.js.
В соответствии с указанным вами учебником вам не нужно переопределять settings.js.
Чтобы это работало, вы должны создать свой собственный проект:
$ mkdir myNodeREDProject
$ cd myNodeRedProject
$ touch index.js
$ npm init
$ npm install node-red
Скопируйте свой закрытый ключ ssl и сертификат в папку myNodeREDProject
.
Редактируйте index.js
и скопируйте следующее:
const https = require('https');
const express = require("express");
const RED = require("node-red");
const fs = require('fs');
const HTTP_PORT = 8080;
const HTTPS_PORT = 8443;
// Create an Express app
const app = express();
// at the top of routing: this is the http redirection to https part ;-)
app.all('*', (req, res, next) => {
if (req.protocol === 'https') return next();
res.redirect(`https://${req.hostname}:${HTTPS_PORT}${req.url}`);
});
// Add a simple route for static content served from 'public'
app.use("/",express.static("public"));
// Create a https server
const options = {
key: fs.readFileSync('./privatekey.pem'),
cert: fs.readFileSync('./certificate.pem')
};
const httpsServer = https.createServer(options, app);
// create a http server
const httpServer = http.createServer(app);
// Create the settings object - see default settings.js file for other options
const settings = {
httpAdminRoot:"/red",
httpNodeRoot: "/api",
userDir:"./nodered/",
functionGlobalContext: { } // enables global context
};
// Initialise the runtime with a server and settings
RED.init(httpsServer,settings);
// Serve the editor UI from /red
app.use(settings.httpAdminRoot,RED.httpAdmin);
// Serve the http nodes UI from /api
app.use(settings.httpNodeRoot,RED.httpNode);
httpsServer.listen(HTTPS_PORT);
httpServer.listen(HTTP_PORT);
// Start the runtime
RED.start();
Наконец, запуститеприложение node-RED:
$ node index.js # MAGIC !!!
Пожалуйста, не стесняйтесь исправлять меня, если я ошибаюсь, я проверил его на своем сервере Linux.
Извините за мой английский.