1 votes

L'exécution d'un service ignore les variables d'environnement

J'ai un /ect/init/application.conf qui ressemble à quelque chose comme...

start on filesystem and net-device-up IFACE!=lo
stop on runlevel [016]
respawn

export NODE_ENV=production

chdir /home/richie/application
exec /home/richie/.nvm/v0.10.26/bin/node server/app >> /var/log/node.log 2>&1

Il est destiné à faire fonctionner un Node.js en mode production. Cependant, lorsque j'exécute l'application en tant que service :

sudo service application start

Il affiche ces données dans le journal lorsque j'affiche mes variables d'environnement :

{ UPSTART_INSTANCE: '',
  UPSTART_JOB: 'application',
  TERM: 'linux',
  PATH: '/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin',
  PWD: '/home/richie/application' }

Comme vous pouvez le voir, NODE_ENV n'existe pas dans la liste des variables d'environnement. Avez-vous une idée de la raison pour laquelle ma variable d'environnement exportée serait ignorée ? J'ai également ajouté dans mon /etc/environment fichier :

NODE_ENV=production

Merci d'avance !

2voto

roadmr Points 32606

"Vous vous y prenez mal". Dans un travail de démarrage, les variables ne sont pas définies avec export mais avec env . Changez donc votre déclaration en

env NODE_ENV=production

Les choses devraient fonctionner alors.

Notez que les emplois de débutants sont ノット Shell Shell. Ils suivent une syntaxe déclarative. Ils peut contiennent des Shell Shell mais ceux-ci doivent être entourés de script .. end script (voir aussi la syntaxe similaire pour les scripts de pré-départ et de post-départ).

http://upstart.ubuntu.com/getting-started.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X