自己在云服务搭建的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楼, 感谢楼下的人们
今天刚好看到这个问题,直接转过来: 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.
问题解决了. 重启了了linux系统, 再次执行就行了. 因为此前在云服务器上建立用户, 并没有重启过linux系统, 猜测, 新建用户, 如果没有重启电脑, 可能无法完全加载应该有的权限把. 导致了这个隐藏问题的发生. @yipingw @hwoarangzk 依然感谢.