Запуск службы игнорирует переменные среды

У меня есть файл /ect/init/application.conf, который выглядит примерно так ...

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

Он предназначен для запуска приложения Node.js в производственном режиме. Однако, когда я запускаю приложение как сервис:

sudo service application start

Он выводит эти данные в журнал, когда я выводю переменные среды:

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

Как видите, NODE_ENV не существует в списке переменных среды. Любая идея, почему моя экспортированная переменная среды будет игнорироваться? Я также добавил в свой файл /etc/environment:

NODE_ENV=production

Заранее спасибо!

1
задан 28 March 2014 в 22:05

1 ответ

"Вы делаете его неправильно". В новомодном задании переменные не установлены с export, но с env. Так измените свое объявление на

env NODE_ENV=production

, Вещи должны работать тогда.

Действительно отмечают, что новомодные задания не сценарии оболочки. Они следуют за декларативным синтаксисом. Они могут содержать сценарии оболочки, но они должны быть включены в script.. end script (также, посмотрите подобный синтаксис для предварительного запуска и постзапустите сценарии).

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

0
ответ дан 28 March 2014 в 22:05

Другие вопросы по тегам:

Похожие вопросы: