我创建了一个基于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 &
来启动它,但是一直以来,都是一样的事情。
[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,我得到类似的东西:
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,在网站崩溃之前,我得到了:
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
我不明白发生了什么。请帮忙。
答案 0 :(得分:0)
Apache阻塞了服务器的路径。我在使用基于Express的服务器时卸载了Apache,所以我不需要Apache,并且httpd不再产生问题。