Sto utilizzando il pacchetto npm express versione 2.5.2 con la versione del nodo .0.6.5. Sembra che stia usando la versione 4.1.5 di bash su Debian 4.4.5.Come posso eseguire node.js Express in modalità produzione tramite sudo?
Sto provando a eseguire il mio server in modalità produzione ma viene comunque eseguito in modalità di sviluppo.
ho eseguire questi comandi nella mia shell bash:
$ export NODE_ENV=production
$ echo $NODE_ENV
production
$ sudo echo $NODE_ENV
production
$ sudo node bootstrap.js
ho questo codice all'interno bootstrap.js:
var bootstrap_app = module.exports = express.createServer();
//...
console.log(bootstrap_app.settings.env);
ed ecco quello che vedo stampata sullo standard output:
development
Si tratta di un problema con il mio utilizzo o il mio sistema?
EDIT: Grazie a ThiefMaster per la sua corretta identificazione che questo problema deriva dal mio nodo che esegue come utente root. ThiefMaster ha suggerito di usare iptables per inoltrare dalla porta 80 a una porta non privilegiata, ma il mio sistema mi dà un errore. Spostando questa discussione su superuser.com o serverfault.com (collegamento da seguire)
La maggior parte delle variabili di ambiente non sono impostate quando si utilizza sudo per motivi di sicurezza. Quindi non è possibile passare la variabile di ambiente al nodo senza modificare il file sudoers per consentire a tale variabile di passare. Tuttavia, non si dovrebbe comunque eseguire il nodo come root. Se è necessario per la porta 80, eseguire il nodo su una porta non privilegiata e configurare un iptables in avanti per mappare la porta 80 su quella porta. – ThiefMaster
Grazie per il suggerimento! Ho eseguito una delle mie app non-port-80 e ha identificato correttamente l'ambiente come produzione! Dovresti postare come risposta - lo accetterò. Grazie ancora! – Aaron
Ho appena provato ad installare e usare iptables (iptables -t -nat L) e ho ricevuto l'errore "iptables v1.4.8: impossibile inizializzare la tabella iptables' nat ': Autorizzazione negata (devi essere root) Forse iptables o il tuo kernel ha bisogno di essere aggiornato." Debian 4.4 è una versione piuttosto vecchia, giusto?/Proc/version dice" Versione di Linux 3.1.9-vs2.3.2.5 " – Aaron