Сервер узла работает на порте 80 с ошибками при использовании PM2 - PullRequest
0 голосов
/ 29 марта 2020

У меня есть сервер узла express, работающий на экземпляре aws ec2. Когда я запускаю

sudo node server.js

, сервер работает на порту 80 и работает нормально, когда я делаю http-запрос к серверу. Однако, когда я запускаю

sudo pm2 start server.js

, каждый раз, когда я делаю запрос, я получаю следующую ошибку

{ Error: listen EACCES: permission denied 0.0.0.0:80
at Server.setupListenHandle [as _listen2] (net.js:1242:19)
at listenInCluster (net.js:1307:12)
at Server.listen (net.js:1395:7)
at Object.<anonymous> (/home/ubuntu/evercampus-server/server.js:19:8)
at Module._compile (internal/modules/cjs/loader.js:816:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
at Module.load (internal/modules/cjs/loader.js:685:32)
at Function.Module._load (internal/modules/cjs/loader.js:620:12)
at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:32:23)
at Module._compile (internal/modules/cjs/loader.js:816:30)
code: 'EACCES',
errno: 'EACCES',
syscall: 'listen',
address: '0.0.0.0',
port: 80 }

Я пытался использовать pm2 для запуска на порту 5000, и он работает нормально.

Я очень озадачен тем, почему сервер узла sudo. js работает, но сервер sudo pm2 запускается. js не работает.

Я видел в другом посте ( Запуск приложения Node через PM2 на порт 80 ) о работе сервера на порту 5000 и пересылке запросов с порта 80 на 5000. Однако я хочу понять, почему pm2 не будет работать на порту 80.

1 Ответ

1 голос
/ 29 марта 2020

Потому что PM2 будет вызывать Node без sudo. Да, PM2 будет работать под root, но это не обязательно означает, что фактический процесс Node будет также выполняться под root.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...