在端口80

时间:2019-05-24 04:56:04

标签: javascript node.js reactjs express ubuntu

问题

我创建了一个基于React的网站,该网站可在node-express服务器上工作。

我的后端服务器在端口3000上运行,该服务器运行正常,但在端口80上运行的网站却没有。

当我使用pm2作为pm2 start server.js来启动网站(https://www.edvicer.com时,一段时间(一两个小时)后,网站崩溃了,并且在pm2日志中出现以下错误,这意味着该端口80已经在使用中:

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

这已经发生了很多次。

我尝试重新引导和同步服务器。我已经使用屏幕(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]

错误

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

netstat -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

我不明白发生了什么。请帮忙。

1 个答案:

答案 0 :(得分:0)

Apache阻塞了服务器的路径。我在使用基于Express的服务器时卸载了Apache,所以我不需要Apache,并且httpd不再产生问题。