A execução de um serviço ignora as variáveis de ambiente

1

Eu tenho um arquivo /ect/init/application.conf parecido com algo ...

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

Destina-se a executar um aplicativo Node.js no modo de produção. No entanto, quando eu executo o aplicativo como um serviço:

sudo service application start

Ele envia esses dados no log quando eu envio minhas variáveis de ambiente:

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

Como você pode ver, NODE_ENV não existe na lista de variáveis de ambiente. Alguma idéia de por que minha variável de ambiente exportada seria ignorada? Eu também adicionei ao meu arquivo /etc/environment :

NODE_ENV=production

Obrigado antecipadamente!

    
por richie 28.03.2014 / 18:25

1 resposta

2

"Você está fazendo errado". Em um job upstart, as variáveis não são definidas com export , mas com env . Então mude sua declaração para

env NODE_ENV=production

As coisas devem funcionar então.

Observe que os trabalhos iniciantes não são scripts de shell. Eles seguem uma sintaxe declarativa. Eles podem conter scripts de shell, mas eles devem ser colocados em script .. end script (também, veja a sintaxe semelhante para scripts de pré-inicialização e pós-inicialização).

link

    
por roadmr 28.03.2014 / 19:10