Estoy usando el paquete npm express versión 2.5.2 con la versión de nodo .0.6.5. Parece que estoy ejecutando la versión 4.1.5 de Bash en Debian 4.4.5.¿Cómo puedo ejecutar node.js Express en modo de producción a través de sudo?
Estoy tratando de ejecutar mi servidor en modo de producción, pero todavía se ejecuta en modo de desarrollo.
que ejecutar estos comandos en mi shell bash:
$ export NODE_ENV=production
$ echo $NODE_ENV
production
$ sudo echo $NODE_ENV
production
$ sudo node bootstrap.js
tengo este código dentro de bootstrap.js:
var bootstrap_app = module.exports = express.createServer();
//...
console.log(bootstrap_app.settings.env);
y esto es lo que veo impreso en la salida estándar:
development
¿Esto es un problema con mi uso o con mi sistema?
EDIT: Gracias a ThiefMaster por haber identificado correctamente que este problema proviene de mi nodo en ejecución como root. ThiefMaster sugirió usar iptables para reenviar desde el puerto 80 a un puerto no privilegiado, pero mi sistema me da un error. Mover esta discusión a superuser.com o serverfault.com (enlace a seguir)
La mayoría de las variables de entorno no están configuradas cuando se usa sudo por razones de seguridad. Por lo tanto, no puede pasar esa variable de entorno a nodo sin modificar su archivo sudoers para permitir que esa variable pase. Sin embargo, no debería ejecutar el nodo como raíz de todos modos. Si solo lo necesita para el puerto 80, ejecute el nodo en un puerto no privilegiado y configure un reenvío de iptables para asignar el puerto 80 a ese puerto. – ThiefMaster
¡Gracias por la sugerencia! Ejecuto una de mis aplicaciones que no son de puerto 80 e identificó correctamente el entorno como producción. Debería publicar esto como una respuesta: lo aceptaré. ¡Gracias de nuevo! – Aaron
Acabo de intentar instalar y usar iptables (iptables -t -nat L) y obtuve el error "iptables v1.4.8: no se puede inicializar la tabla iptables' nat ': Permiso denegado (debe ser root) Quizás iptables o su kernel necesita ser actualizado" Debian 4.4 es una versión bastante antigua, ¿verdad?/Proc/versión dice" Linux versión 3.1.9-vs2.3.2.5 " – Aaron