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é.
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.
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
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.
pour définir NODE_ENV en utilisation 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/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.