[英]How to create nodejs server with php?
我正在嘗試用php執行nodejs,做到這一點非常簡單
<? shell_exec("node app.js &"); ?>
我的nodejs文件使用express創建服務器。
var express = require("express"),
app = express();
app.get('/', function(request,response)
{
response.status(200).send("Welcome");
});
app.listen(82, 'localhost', function(){console.log("Server are running on port 82");});
當文件運行時,這是輸出
錯誤:收聽EACCES 127.0.0.1:82
在Object.exports._errnoException(util.js:873:11)
在export._exceptionWithHostPort(util.js:896:20)
在Server._listen2(net.js:1237:19)
在聽(net.js:1286:10)
在net.js:1395:9
在GetAddrInfoReqWrap.asyncCallback [作為回調](dns.js:64:16)
在GetAddrInfoReqWrap.onlookup上(作為完成時)(dns.js:83:10)
端口已打開,這是“ service iptables status”命令的輸出
20 ACCEPT tcp-0.0.0.0/0 0.0.0.0/0狀態新的tcp dpts:81:90
我認為錯誤是因為apache(apache運行在端口80上)沒有創建服務器的權限
有人對如何解決這個問題有任何想法嗎?
您可能需要授予啟動node.js應用程序的進程更高的特權,以便它可以使用如此低的端口號,也可以使用不受限制的更高的端口號(高於1024)。 例如,端口3000是通用的。
有些人也通過在較高端口(例如3000)上啟動服務器,然后使用iptables將來自低端口(例如您所使用的82)的傳入請求轉發到端口3000來解決此問題。這使您的服務器無需運行即可需要較高的特權,但它仍可以在較低的端口號上“工作”。
這里是有關變通方法的更多討論: 非根進程是否可以綁定到Linux上的“特權”端口? 以及如何以普通用戶身份在Linux的端口80上運行服務器? 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.