2016-07-13 14 views
-1

は、これを行うには、PHPでnodejsサーバーを作成するには?私はPHPでnodejsを実行しようとしている

<? shell_exec("node app.js &"); ?> 

マイnodejsファイルは明示してサーバーを作成し、本当に簡単です。

私はエラーがあると思い、ファイルが実行されると、ポートが開いている、これは、これは

20 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:81:90

「サービスiptablesの状態」コマンドの出力の出力

Error: listen EACCES 127.0.0.1:82

at Object.exports._errnoException (util.js:873:11)

at exports._exceptionWithHostPort (util.js:896:20)

at Server._listen2 (net.js:1237:19)

at listen (net.js:1286:10)

at net.js:1395:9

at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:64:16)

at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:83:10)

です

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");}); 

apache(Apacheはポート80で動作)はサーバーを作成する権限を持っていないため、

誰かがこれを解決する方法のアイデア?

+1

1.低ポートをバインドするにはスーパーユーザー特権が必要です。 2.通常は、apacheのようにノードを実行したままにしておきます。 –

答えて

0

node.jsアプリケーションを起動するプロセスに、そのような低いポート番号を使用できるように高い権限を与えるか、それほど制限されない上位のポート番号(1024以上)を使用する必要があります。たとえば、ポート3000は一般的です。

これを回避するには、上位のポート(3000など)でサーバーを起動し、iptablesを使用して低いポート(使用していた82のようなもの)からポート3000に着信要求を転送します。サーバーはより高い特権を必要とせずに実行することができますが、それでも下位のポート番号で "動作"することができます。

回避策の詳細は、Is there a way for non-root processes to bind to "privileged" ports on Linux?How can I run a server on Linux on port 80 as a normal user?です。

関連する問題