У меня есть файл /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
Заранее спасибо!
"Вы делаете его неправильно". В новомодном задании переменные не установлены с export
, но с env
. Так измените свое объявление на
env NODE_ENV=production
, Вещи должны работать тогда.
Действительно отмечают, что новомодные задания не сценарии оболочки. Они следуют за декларативным синтаксисом. Они могут содержать сценарии оболочки, но они должны быть включены в script
.. end script
(также, посмотрите подобный синтаксис для предварительного запуска и постзапустите сценарии).