установка NODE_ENV для приложения node.js + expressjs в качестве демона под Ubuntu - PullRequest
28 голосов
/ 11 августа 2011

Демон работал нормально с этими инструкциями: http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/

но поскольку это запускает приложение в режиме РАЗРАБОТКИ, файл журнала получает спам с журналами отладки socket.io.

Я попытался настроить NODE_ENV на работу в файле upstart-conf-file, но безуспешно.

script
    export HOME="/root"
    export NODE_ENV=production

    exec /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1
end script

не работает.

Ответы [ 5 ]

27 голосов
/ 19 августа 2011

Попробуйте

exec NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1

В моей настройке я sudo как меньший пользователь, поэтому это

exec sudo -u some-user NODE_ENV=production /usr/local/bin/node /where/yourprogram.js >> /var/log/node.log 2>&1

и, поскольку он порождает другого пользователя, вероятно, у него другая среда. Я здесь новичок, но у меня это работает.

18 голосов
/ 11 августа 2011

Вот более простой скрипт выскочки, который вы можете использовать. Upstart теперь поддерживает все, что вам нужно делать напрямую, без разделов скрипта или слишком большого синтаксиса встроенной оболочки. Сюда входят переменные среды (env), рабочий каталог (chdir), пользователь / группа (setuid, setgid), обработка журнала (console log) и т. Д. Ваши файлы журнала будут обрабатываться и вращаться /var/log/upstart/your_app.log

description "start and stop the example express.js/node.js server"
author "John Doe <jd@example.com>"

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
15 голосов
/ 11 августа 2011

Если вы используете node.js в работе, я рекомендую вам использовать forever.js для демонизации вашей программы https://github.com/nodejitsu/forever

Установка с использованием npm: [sudo] npm install forever -g

export NODE_ENV=production иrun forever start app.js Вы также можете указать, куда поместить журналы ошибок и stdout.

4 голосов
/ 18 июня 2014

для установки NODE_ENV при использовании герою:

heroku config:set NODE_ENV="production"
2 голосов
/ 10 декабря 2015

Ubuntu / Upstart перечислены в вопросе, но я попал сюда, когда искал ответы для демона FreeBSD / системной оболочки.

Строка ниже запустила приложение в среде "разработки":

exec node path/to/start/script.js

Строка ниже запустила приложение в среде "производства":

NODE_ENV=production exec node path/to/start/script.js

ПотребовалосьМне нужно некоторое время, чтобы понять это, поэтому я решил поделиться.

...