web-dev-qa-db-fra.com

définition de NODE_ENV pour l'application node.js + expressjs en tant que démon sous ubuntu

j'ai bien fait fonctionner le démon avec ces instructions: http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/

mais comme cela démarre l'application en mode DÉVELOPPEMENT, le fichier journal est spammé avec les journaux de débogage socket.io.

j'ai essayé de mettre le NODE_ENV en production dans le fichier upstart-conf mais je n'ai pas réussi.

script
    export HOME="/root"
    export NODE_ENV=production

    exec /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
end script

n'a pas fonctionné.

28
pkyeck

Essayer

exec NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1

Dans ma configuration, je suis sudoing en tant qu'utilisateur inférieur, il est donc

exec Sudo -u some-user NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1

et comme il engendre un autre utilisateur, il a probablement un autre environnement. Je suis un débutant ici, mais ça marche pour moi.

27
Yuval

Voici un script de démarrage simple que vous pouvez utiliser. Upstart prend désormais en charge tout ce que vous devez faire directement sans sections de script ou trop de syntaxe Shell intégrée. Cela inclut les variables d'environnement (env), le répertoire de travail (chdir), l'utilisateur/groupe (setuid, setgid), la gestion des journaux (console log), etc. Vos fichiers journaux seront traités et convertis en /var/log/upstart/your_app.log

description "start and stop the example express.js/node.js server"
author "John Doe <[email protected]>"

start on filesystem and started networking
respawn
console log
chdir /opt/your_app
setuid your_app_user
setgid your_app_user
env PATH=./node_modules/.bin:./node/bin:/usr/bin
env NODE_ENV=production
exec app/server.js
18
Peter Lyons

Si vous utilisez node.js en production, je vous recommande d'utiliser forever.js pour démonifier votre programme https://github.com/nodejitsu/forever

Installez en utilisant npm: [Sudo] npm install forever -g

export NODE_ENV=production et courir forever start app.js Vous pouvez également spécifier où placer les journaux d'erreurs et de sortie standard.

15
TiansHUo

pour définir NODE_ENV en utilisation heroku:

heroku config:set NODE_ENV="production"
4
Connor Leech

Ubuntu/Upstart sont listés dans la question, mais je suis arrivé ici en cherchant des réponses pour un démon Shell FreeBSD/système.

La ligne ci-dessous a démarré l'application dans un environnement de "développement":

exec node path/to/start/script.js

La ligne ci-dessous a démarré l'application dans un environnement de "production":

NODE_ENV=production exec node path/to/start/script.js

Il m'a fallu un certain temps pour comprendre cela, alors j'ai pensé partager.

2
jayjfadd