définir NODE_ENV pour l’application node.js + expressjs en tant que démon sous ubuntu

Le démon fonctionne correctement 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 de socket.io.

J’ai essayé de configurer NODE_ENV en production dans le fichier upstart-conf, mais sans succès.

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é

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, donc c’est

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

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

Voici un script plus 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 de shell incorporé. Cela comprend les variables d’environnement ( env ), le répertoire de travail ( chdir ), l’utilisateur / le groupe ( setuid , setgid ), la gestion des journaux ( console log ), etc. Vos fichiers journaux seront traités et /var/log/upstart/your_app.log

 description "start and stop the example express.js/node.js server" author "John Doe " 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 

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

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

export NODE_ENV=production et exécuter forever start app.js Vous pouvez également spécifier où placer les journaux d’erreur et stdout.

définir NODE_ENV dans l’utilisation de heroku:

 heroku config:set NODE_ENV="production" 

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

La ligne ci-dessous a démarré l’application dans l’environnement “développement”:

 exec node path/to/start/script.js 

La ligne ci-dessous a démarré l’application dans l’environnement “production”:

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

Il m’a fallu du temps pour comprendre cela, alors j’ai pensé partager.