javascript - 网站在启动端口 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
我无法理解发生了什么。请帮忙。
解决方案
Apache 阻碍了服务器的路径。我在使用基于 Express 的服务器时卸载了 Apache,因此我不需要 Apache,并且 httpd 停止了创建问题。
推荐阅读
- angular - 表单组验证不适用于动态复选框
- c# - 确定列表中的元素是否包含相同的值
- python - 对于 Pandas 上的每个循环,每个类别
- fusionauth - 如何使用 fusionauth 实现 Apostropecms 身份验证
- r - R保留选择gsub的字符部分
- mule - Mulesoft 日志记录问题。mule 应用程序日志和 mule 运行时日志的区别
- angular - 触发新警报时以编程方式关闭警报
- java - 如何在安全域上为 java netty-socketIO 创建 JKS 密钥库文件
- java - 反序列化抛出 java.lang.ClassCastException
- python - python程序中GUI显示的时间戳不刷新?