Ubuntu系统AWS EC2实例运行NodeJS服务提示端口占用问题求助
解决方案
- 先确认占用端口的进程身份:执行
ps aux | grep [你查到的占用端口的PID]查看进程归属,如果是你的Node服务,说明当前系统配置了进程守护工具自动重启该服务,按对应工具操作即可:- 若使用PM2托管服务:执行
pm2 list查看正在运行的Node服务列表,执行pm2 delete [对应服务名称]彻底终止服务并取消自动重启 - 若使用systemd托管服务:执行
systemctl list-units | grep node查找对应的服务单元,执行systemctl stop [服务名] && systemctl disable [服务名]终止服务并禁用开机自启 - 若使用Docker部署服务:执行
docker ps查看是否有容器占用对应端口,执行docker stop [容器ID]终止占用端口的容器
- 若使用PM2托管服务:执行
- 检查Nginx配置:正常反向代理场景下Nginx仅需监听80/443端口,将请求转发到Node服务的端口即可,不要让Nginx直接监听Node要使用的端口,避免端口冲突
- 修复Node代码已知问题:你当前提交的代码中缺少
body-parser模块的引入逻辑,会导致服务启动报错,在代码开头添加const bodyParser = require('body-parser');即可 - 若修改任意端口均提示占用,可调整Node监听逻辑,指定仅监听本地回环地址:
同时检查启动脚本是否存在重复执行启动命令的逻辑,避免同一服务被多次启动引发端口冲突app.listen(port, '127.0.0.1', () => { console.log(`Server successfully started`); }); - 所有排查完成后重新启动Node服务即可。
内容的提问来源于stack exchange,提问作者Jorden
相关产品推荐
相关产品推荐

