Я пытаюсь получить сайт node.js в прямом эфире на порту 80 (я использую Digital Ocean). Я делаю это с помощью Systemd с в сервисном файлеИспользование sudo с ExecStart (systemd)
...
ExecStart=/usr/bin/nodejs /var/www/bin/app.js
...
На локальном хосте это прекрасно работает на порту 80, если я использую Sudo, чтобы запустить сайт, но не без Судо. По-видимому, вам нужно запускать как root для портов ниже 1024.
Как разрешить sudo в ExecStart? Или я совсем не совсем прав, и если да, то как мне получить экспресс-приложение на порт 80?
Cheers, Майк
Я действительно указал группу (не root), но я хотел бы сохранить ее таким образом, так как это хорошая практика не запускать сайтов с правами root. Как я могу обойти свои проблемы? – Mike
Вам необходимо иметь .socket-устройство для порта, который прослушивает его как привилегированный пользователь. Затем systemd передает вашу службу в сокет. Для того, чтобы активировать функцию systemd socket, необходимы модификации узла на nodejs. – Umut
Я попробовал require ('systemd'); var port = process.env.LISTEN_PID> 0? 'systemd': 3050; app.set ('порт', порт); , но пока не повезло. – Mike