首页 > 解决方案 > 网站在启动端口 80 的错误 EADDRINUSE 后一段时间后崩溃

问题描述

问题

我创建了一个基于反应的网站,该网站适用于 node-express 服务器。

我的后端服务器在端口 3000 上运行,它运行良好,但在端口 80 上运行的网站却没有。

当我使用 pm2 as启动我的网站(https://www.edvicer.compm2 start server.js )时,一段时间(一两个小时)后,网站崩溃,并且我在 pm2 日志中收到以下错误,这意味着端口 80 已经在利用:

errno: 'EADDRINUSE',
code: 'EADDRINUSE',
syscall: 'listen',
address: '::',
port: 80

这已经发生了很多次。

我已尝试重新启动和同步服务器。我已经使用 screen ( screen -r) 来启动 server.js 并且我尝试使用它来启动它node server.js &但是一直都发生同样的事情。

server.js 的主要代码是:

[const httpsOptions= {
  cert: fs.readFileSync(path.join(__dirname, 'ssl', 'cert1.crt'), 'utf8'),
  key: fs.readFileSync(path.join(__dirname, 'ssl', 'cert1.key'), 'utf8'),
  ca: fs.readFileSync(path.join(__dirname, 'ssl', 'intermediate.crt'), 'utf8')
}

var redirectToHTTPS = require('express-http-to-https').redirectToHTTPS;

app.use(redirectToHTTPS(\[/localhost:(\d{4})/\], \[/\/insecure/\], 301));
app.use(express.static(path.join(__dirname, 'src')));

app.get('/', function (req, res) {
  res.sendFile(path.join(__dirname, 'src', 'index.html'));
});
  http.createServer(app).listen(80);
  https.createServer(httpsOptions, app).listen(443);][1]

错误

启动网站后,当它运行良好时,我看到了使用的端口:

网络统计-tulpn | grep:80

使用 netstat -tulpn | grep :80,我得到类似的东西:

tcp  0  0  :::80  :::*  LISTEN  2465/node /home/erd

当我做 netstat -tulpn | grep :80 网站崩溃后,我收到 2 个回复:

tcp  0  0  127.0.0.1:80  0.0.0.0:*  LISTEN  16145/httpd

tcp  0  0  :::80         :::*       LISTEN  16145/httpd

ps -ef

同样,我尝试了 ps -ef,在网站崩溃之前,我得到:

UID    PID    PPID    CMD

root   2465   3291    node /home/erdsmsmy/public_html/edvicer/server.js

网站崩溃后,我收到很多回复:

UID      PID      PPID      CMD

root     16145    1         /usr/sbin/httpd -k start

nobody   16146    16145     /usr/sbin/httpd -k start

nobody   16148    16145     /usr/sbin/httpd -k start

nobody   16149    16145     /usr/sbin/httpd -k start

nobody   16150    16145     /usr/sbin/httpd -k start

nobody   16151    16145     /usr/sbin/httpd -k start

nobody   16152    16145     /usr/sbin/httpd -k start

我无法理解发生了什么。请帮忙。

标签: javascriptnode.jsreactjsexpressubuntu

解决方案


Apache 阻碍了服务器的路径。我在使用基于 Express 的服务器时卸载了 Apache,因此我不需要 Apache,并且 httpd 停止了创建问题。


推荐阅读