绑定了80端口的cnode服务器, 无法使用sudo make start启动
发布于 9 年前 作者 nqdy666 3982 次浏览 最后一次编辑是 8 年前 来自 问答

自己在云服务搭建的cnode服务器, 服务器端口设定80 云服务器操作系统版本为ubuntu12.04 , 使用非root用户, 该用户已经添加sudo, adm组 使用sudo make start~/.pm2/cnode-error-0.log文件有如下报错

Error: bind EACCES
  at exports._errnoException (util.js:746:11)
  at cb (net.js:1205:33)
  at rr (cluster.js:592:14)
  at Worker.<anonymous> (cluster.js:563:9)
  at process.<anonymous> (cluster.js:692:8)
  at process.emit (events.js:129:20)
  at handleMessage (child_process.js:324:10)
  at Pipe.channel.onread (child_process.js:352:11)

猜测是绑定80端口没有权限, 可是: 使用sudo make run却可以正常启动服务 使用root用户make start可以正常启动服务 猜测时普通管理用户,在启动pm2有问题 可是: 在自己的机器上,同时ubuntu12.04版本, 使用sudo make start却可以正常启动服务

都快无解了, 求大神帮助…

问题解决了, 见5楼, 感谢楼下的人们

6 回复

3000以下的端口号需要管理员权限启动

@yipingw 直接执行sudo make run是可以启动的哇. 说明该用户调用sudo权限可以绑定80端口. 3000以下,能说的更加具体一点么?

今天刚好看到这个问题,直接转过来: How can you listen on port 80 with Node?

Trick question! You should not try to listen with Node on port 80 (in Unix-like systems) - to do so you would need superuser rights, but it is not a good idea to run your application with it.

Still, if you want to have your Node.js application listen on port 80, here is what you can do. Run the application on any port above 1024, then put a reverse proxy like nginx in front of it.

@hwoarangzk 反向代理哇, 这个是好, 不过只有一台云服务器, 硬件资源也不太够, 就没办法裝那么多应用了

问题解决了. 重启了了linux系统, 再次执行就行了. 因为此前在云服务器上建立用户, 并没有重启过linux系统, 猜测, 新建用户, 如果没有重启电脑, 可能无法完全加载应该有的权限把. 导致了这个隐藏问题的发生. @yipingw @hwoarangzk 依然感谢.

反向代理可以考虑装个nginx

回到顶部