Dar permiso de usuario seguro para usar el puerto 80
Recuerde, NO queremos ejecutar sus aplicaciones como usuario raíz, pero hay un problema:su usuario seguro no tiene permiso para usar el puerto HTTP predeterminado (80). Su objetivo es poder publicar un sitio web que los visitantes puedan usar navegando a una URL fácil de usar como http://ip:port/
Desafortunadamente, a menos que inicie sesión como root, normalmente tendrá que usar una URL como http://ip:port
- donde número de puerto> 1024.
Mucha gente se queda atrapada aquí, pero la solución es fácil. Hay algunas opciones, pero esta es la que me gusta. Escribe los siguientes comandos:
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
Ahora, cuando le diga a una aplicación Node que desea que se ejecute en el puerto 80, no se quejará.
Consulta este enlace de referencia
Puerto 80
Lo que hago en mis instancias en la nube es redirigir el puerto 80 al puerto 3000 con este comando:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
Luego lanzo mi Node.js en el puerto 3000. Las solicitudes al puerto 80 se asignarán al puerto 3000.
También debe editar su /etc/rc.local
archivo y agregue esa línea menos el sudo
. Eso agregará la redirección cuando la máquina arranque. No necesitas sudo
en /etc/rc.local
porque los comandos allí se ejecutan como root
cuando el sistema arranca.
Registros
Use el módulo forever para iniciar su Node.js. Se asegurará de que se reinicie si alguna vez falla y redirigirá los registros de la consola a un archivo.
Iniciar en el arranque
Agregue su secuencia de comandos de inicio de Node.js al archivo que editó para la redirección de puertos, /etc/rc.local
. Eso ejecutará su secuencia de comandos de lanzamiento de Node.js cuando se inicie el sistema.
Océano digital y otros VPS
Esto no solo se aplica a Linode, sino también a Digital Ocean, AWS EC2 y otros proveedores de VPS. Sin embargo, en los sistemas basados en RedHat /etc/rc.local
es /ect/rc.d/local
.