2016-07-13 1 views
-1

Я пытаюсь выполнить nodejs с PHP, это сделать это действительно простоКак создать сервер nodejs с php?

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

Мой nodejs файл создает сервер с курьерским.

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

При запуске файла, вывод

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)

Порт открыт, это выход для «обслуживания Iptables статус» команды

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

Я думаю, что ошибка потому что apache (apache работает на порту 80) не имеет разрешения на создание сервера

У кого-то есть y идея, как решить это?

+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?.

Смежные вопросы