首页 > 解决方案 > 在托管的 plesk 服务器上运行 node,js(使用 windows IISnode)

问题描述

我正在尝试使用 node.js (v12.20.1) 做一些事情,但对设置监听器的明显要求感到困惑。

例如,我正在查看https://nodejs.org/en/knowledge/HTTP/servers/how-to-create-a-HTTP-server/上的说明

在其他地方,我发现无法在 plesk for windows 中使用任意端口,因此我稍微修改了示例以使用推荐的process.env.PORT而不是 8080:

const http = require('http');

const requestListener = function (req, res) {
  res.writeHead(200);
  res.end('Hello, World!');
}

const server = http.createServer(requestListener);
server.listen(process.env.PORT);

因此,我将上述内容放在 web 服务器上的 app.js 中,将浏览器指向我的 web 域,浏览器Hello World按预期显示。到目前为止还好。

但下一步建议我访问 localhost:8080。

我开始思考:我真的需要设置一个监听器吗?因为似乎 IISnode 已经在响应我的 Web 域上的流量。

所以,我暂时忽略监听器,并用不同的测试替换以上所有内容:

const http = require('http');

setInterval(doSomething, 60000);

const requestListener = function (req, res) {
  res.writeHead(200);

  res.end('Hello, World!');
}

const server = http.createServer(requestListener);
server.listen(process.env.PORT);

function doSomething()
{
    console.log("Did something at " + Date());
}

现在将浏览器指向我的网络域。它显示Hello World. 几分钟后,我在服务器上找到了 console.log 文件,它按预期显示:

    Did something at Sat Mar 13 2021 11:34:53 GMT+0000 (Greenwich Mean Time)
    Did something at Sat Mar 13 2021 11:35:53 GMT+0000 (Greenwich Mean Time)
    Did something at Sat Mar 13 2021 11:36:53 GMT+0000 (Greenwich Mean Time)

让它等待 20 分钟,我有 20 个这样的日志条目。但它在第 20 分钟后停止。我假设有一些未记录的执行时间限制。但它并不一致,并且每次我测试它时都会逐渐减少。

服务器的 stderr 日志只提供一个线索:(node:29144) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.这可能是需要 http 正在做的事情,而且可能不是我可以轻松修复的事情......?

更奇怪的是,一旦执行时间开始减少,通过 plesk 面板重新启动服务器并不会恢复原来的 20 分钟。然而,有时将 app.js 文件的名称更改为其他名称。

关于增加执行时间的任何想法?

提醒:我只是虚拟主机的客户。因此,我只能访问 plesk 控制面板提供的配置选项。我无法在服务器上执行 shell 脚本。

标签: node.jswindowspleskiisnode

解决方案


推荐阅读