Ответ 1
FYI: вы не можете запускать сокет на портах < 1024 с обычным разрешением пользователя. Для этого вам нужен root-доступ.
Всего существует 3 способа решения проблемы: -
1. Дайте root доступ и запустите его (что обычно)
2. Перенаправление на другой порт
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
Затем запустите мой Node.js на порт 3000. Запросы на порт 80 будут отображаться на порт 3000.
Вы также должны отредактировать файл /etc/rc.local и добавить эту строку минус sudo. Это добавит перенаправление при загрузке машины. Вам не нужно sudo в /etc/rc.local, потому что команды там выполняются с правами root при загрузке системы.
Ссылка Ссылка
3. Дайте нормальным пользователям возможность использования сокетов с правами root
Цель: - Мы не предоставляем полный доступ с правами root и предоставляем разрешение socket_root для доступа к нему обычного пользователя для запуска вашего сервера на любом порту.
мы НЕ хотим запускать ваши приложения в качестве пользователя root, но есть заминка: у вашего безопасного пользователя нет разрешения использовать HTTP-порт по умолчанию (80). Целью является публикация веб-сайта, который посетители могут использовать, перейдя на простой в использовании URL-адрес, например http://localhost
.
К сожалению, если вы не входите в систему под учетной записью root, вам обычно нужно использовать URL-адрес, например http://localhost:3000
- указать номер порта.
Многие люди застревают здесь, но решение легко. Там несколько вариантов, но это тот, который мне нравится. Введите следующие команды:
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
Теперь, когда вы сообщаете приложение Node, которое вы хотите запустить на порт 80, оно не будет жаловаться.
Ссылка Ссылка
Общая информация Ссылка ссылка от apache