我正在測(cè)試一個(gè)應(yīng)用程序(希望在heroku上運(yùn)行,但在本地也有問(wèn)題)。運(yùn)行http.Server.listen()時(shí)它會(huì)給我一個(gè)EACCES錯(cuò)誤 - 但它只發(fā)生在某些端口上。所以,我在本地運(yùn)行:joe@joebuntu:~$ node> var h = require('http').createServer();> h.listen(900);Error: EACCES, Permission denied at Server._doListen (net.js:1062:5) at net.js:1033:14 at Object.lookup (dns.js:132:45) at Server.listen (net.js:1027:20) at [object Context]:1:3 at Interface.<anonymous> (repl.js:150:22) at Interface.emit (events.js:42:17) at Interface._onLine (readline.js:132:10) at Interface._line (readline.js:387:8) at Interface._ttyWrite (readline.js:564:14)我沒有在端口900上運(yùn)行任何東西(或者我試過(guò)的其他20個(gè)端口),所以這應(yīng)該有效。奇怪的是它確實(shí)可以在某些端口上運(yùn)行。例如,端口3000完美運(yùn)行。什么會(huì)導(dǎo)致這個(gè)?更新1:我發(fā)現(xiàn)在我的本地計(jì)算機(jī)上,EACCES錯(cuò)誤即將發(fā)生,因?yàn)槲冶仨氁詒oot身份運(yùn)行節(jié)點(diǎn)才能綁定到那些特定端口。我不知道為什么會(huì)這樣,但使用sudo修復(fù)它。但是,這并沒有解釋我如何在Heroku上修復(fù)它。沒有辦法在Heroku上以root身份運(yùn)行,那么如何在端口80上偵聽?
3 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
查看此參考鏈接:
授予安全用戶權(quán)限以使用端口80
請(qǐng)記住,我們不希望以root用戶身份運(yùn)行您的應(yīng)用程序,但有一個(gè)障礙:您的安全用戶無(wú)權(quán)使用默認(rèn)HTTP端口(80)。您的目標(biāo)是能夠通過(guò)導(dǎo)航到易于使用的URL來(lái)發(fā)布訪問(wèn)者可以使用的網(wǎng)站 http://ip:port/
不幸的是,除非您以root身份登錄,否則通常必須使用類似的URL http://ip:port- 其中端口號(hào)> 1024。
很多人都被困在這里,但解決方案很簡(jiǎn)單。有一些選擇,但這是我喜歡的。輸入以下命令:
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
現(xiàn)在,當(dāng)您告訴Node應(yīng)用程序您希望它在端口80上運(yùn)行時(shí),它不會(huì)抱怨。
添加回答
舉報(bào)
0/150
提交
取消