gpt4 book ai didi

javascript - Node (keystonejs) address already in use 错误,但不是。还有 EACCES 错误。 NGINX背后

转载 作者:太空狗 更新时间:2023-10-29 12:28:30 25 4
gpt4 key购买 nike

项目有keystonejs这是一个 Nodejs CMS。

突然(好吧,可能是在尝试安装 SSL 证书后,停止并重新启动 Node 服务器和 nginx)它停止工作。

当我用我的非 root 用户尝试 node keystone.js 时,我遇到了这个错误:

Error: listen EACCES
at errnoException (net.js:901:11)
at Server._listen2 (net.js:1020:19)
at listen (net.js:1061:10)
at net.js:1143:9
at dns.js:72:18
at process._tickCallback (node.js:415:13)

当您尝试 start node on a port < 1024 时会出现此错误但事实并非如此,因为我在端口 3000 上安装了它。

当我以 root 身份尝试 node keystone.js 时,错误是:

my-project failed to start: address already in use

Please check you are not already running a server on the specified port.

我发现 keystone 文件中的错误字符串为 EADDRINUSE

使用 netstat -lntu 我检查了 which ports are in use但是 :3000 不是。

也检查端口是否打开:

root@localhost:/home# sudo ufw status | grep 3000
3000 ALLOW Anywhere
3000 (v6) ALLOW Anywhere (v6)

我输入了ps aux | grep node 检查服务器上是否正在运行 node/nodemon/forever 任务。只有一个 Node 在运行,与本项目无关。

root@localhost:/home# ps aux | grep node
server 30637 0.0 0.3 673840 25588 ? Ssl 11:15 0:00 /usr/bin/nodejs /usr/lib/node_modules/forever/bin/monitor keystone.js
server 30639 0.1 1.9 994280 156736 ? Sl 11:15 0:06 /usr/bin/nodejs /home/server/my-other-project/keystone.js
root 31503 0.0 0.0 11716 932 pts/1 S+ 12:28 0:00 grep --color=auto node

最后我认为EADDRINUSE错误可能与服务器后面的nginx端口有关(我将端口80重定向到3000) 我检查是否有东西阻塞了那个端口:

root@localhost:/home/# netstat -tulpn | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 31266/nginx
tcp6 0 0 :::80 :::* LISTEN 31266/nginx

你知道为什么会这样吗?

最佳答案

首先,默认情况下 Keystone.JS 使用 3001 作为 https,所以你应该检查这个端口上是否有东西。

但我猜问题是您在同一个端口上启动了 http 和 https 服务器。要仅使用 https,请在您的选项中指定:

...
'ssl' : 'only',
...

如果你想同时使用两个服务器(http 和 https),最好指定两个端口:

...
'ssl' : true, // launch http and https
'port' : 3000, // for http
'ssl port' : 3001 // for https
'ssl key' : 'your key.pem',
'ssl cert' : 'your cert.crt',
...

我猜你正在执行下面的 conf 并且你会得到你遇到的错误,因为默认情况下 keystone http 在 3000 上启动并且你在 3000 上映射 https 而没有说明如何处理 http:

...
'ssl' : true, // launch http and https
'ssl port' : 3000, // you launch https on the default http port and do not specify the http port -> error : 'Please check you are not already running a server on the specified port.'
'ssl key' : 'your key.pem',
'ssl cert' : 'your cert.crt',
...

这是文档:http://keystonejs.com/docs/configuration/#options-ssl

关于javascript - Node (keystonejs) address already in use 错误,但不是。还有 EACCES 错误。 NGINX背后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34415026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com