当我尝试在端口 80 上启动节点时,错误告诉我该端口正在使用中。我想那是阿帕奇。
“接管”端口 80 并在服务器重新启动后保持这种方式的正确方法是什么?
(Linux xxxx._ _.com 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux)
您可以使用 ip 表将端口 80 映射到 8000
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000
使其永久化
sudo sh -c "iptables-save > /etc/iptables.rules"
并添加
pre-up iptables-restore < /etc/iptables.rules
到您的 /etc/network/interfaces
要在另一个进程正在侦听端口 80 时接管它,您必须终止该进程(或以某种方式告诉它停止侦听)。为确保 Apache 在下次启动时不会再次尝试侦听端口 80,您需要编辑其配置或阻止其启动。
要查看哪个进程正在侦听端口 80,请运行sudo netstat -ntap
并查找以Local Address
port 结尾的行:80
。进程的 PID(和名称)位于最右列。
一个不断运行的未使用的 apache 可能是一个安全漏洞,在任何情况下运行未使用的服务都是没有意义的。
如果你在 ubuntu 上,这就是我用的..
sudo service apache2 stop
sudo update-rc.d apache2 remove
您可以将 node.js 与 node-http-proxy 一起使用 检查此链接如何在 node-http-proxy 旁边使用 vhosts?以及 如何在端口 80 上运行 Node.js?
谢谢和问候,
阿洛克
停止当前使用的服务后,您就可以访问端口 80。
在您的情况下,请按照下列步骤操作:
1)systemctl
用于停止apache2:
sudo systemctl stop apache2
2)检查apache2状态:
sudo systemctl status apache2
或者只是http://localhost
在浏览器中输入。如果你得到一个错误,你很高兴。
ERR_CONNECTION_REFUSED
3) 现在在端口 80 上启动您的 NodeJS 服务器。
4) 您可以在以下位置访问您的服务器http://localhost
如果您在控制台上看到错误,请尝试在node
前面加上sudo
For 例如。sudo node server.js
这是错误
events.js:137
throw er; // Unhandled 'error' event
^
Error: listen EACCES 0.0.0.0:80
at Object._errnoException (util.js:1003:13)
at _exceptionWithHostPort (util.js:1024:20)
at Server.setupListenHandle [as _listen2] (net.js:1349:19)
at listenInCluster (net.js:1407:12)
at Server.listen (net.js:1495:7)
at Object.<anonymous> (/home/abdus/Desktop/voice-recognition/test.js:7:4)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)