簡體   English   中英

如何用PHP創建Node.js服務器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM