Подтвердить что ты не робот

Установка NODE_ENV для приложения node.js + expressjs в качестве демона под ubuntu

Я получил демона, работающего с этими инструкциями: http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/

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

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

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

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

не работает.

4b9b3361

Ответ 1

Try

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

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

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

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

Ответ 2

Здесь вы можете использовать более простой выскочек script. Upstart теперь поддерживает все, что вам нужно сделать напрямую, без разделов script или слишком много встроенного синтаксиса оболочки. Сюда входят переменные среды (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 <[email protected]>"

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

Ответ 3

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

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

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

Ответ 4

чтобы установить NODE_ENV в использовании герою:

heroku config:set NODE_ENV="production"

Ответ 5

Ubuntu/Upstart указаны в вопросе, но я пришел сюда, ища ответы на демон FreeBSD/system shell.

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

exec node path/to/start/script.js

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

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

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