2016-07-25 2 views
2

У меня есть проект узловых узлов. Я запускаю сервер, запустив команду npm start внутри папки проекта в моей локальной и работает как ожидалось.Как запустить проект узла в виртуальной машине Linux?

Я попытался выполнить ту же команду на удаленной виртуальной машине Linux. Но после закрытия сервер терминалов отключается. Поэтому я попытался начать с npm start & и nohup npm start &. Но все же после закрытия сервер терминалов останавливается.

Итак, как запустить сервер узлов для экспресс-проекта в фоновом режиме?

Мои package.json файлов выглядит следующим образом:

{ 
    "name": "test_project", 
    "version": "0.0.0", 
    "private": true, 
    "scripts": { 
    "start": "concurrently \"tsc -w\" \"node ./bin/www\" ", 
    "tsc": "tsc", 
    "tsc:w": "tsc -w", 
    "typings": "typings install", 
    "bundle": "node bin/bundler.js", 
    "bundle:prod": "node bin/bundler.js --prod" 
    }, 
    "dependencies": { 
    "body-parser": "~1.13.2", 
    "cookie-parser": "~1.3.5", 
    "debug": "~2.2.0", 
    "express": "~4.13.1", 
    "morgan": "~1.6.1", 
    "serve-favicon": "~2.3.0", 
    "mongodb": "2.2.4", 
    "request": "~2.73.0" 
    }, 
    "devDependencies": { 
    "@angular/common": "2.0.0-rc.3", 
    "@angular/compiler": "2.0.0-rc.3", 
    "@angular/core": "2.0.0-rc.3", 
    "@angular/http": "2.0.0-rc.3", 
    "@angular/platform-browser": "2.0.0-rc.3", 
    "@angular/platform-browser-dynamic": "2.0.0-rc.3", 
    "@angular/router": "^3.0.0-alpha.7", 
    "@angular/router-deprecated": "2.0.0-rc.2", 
    "@angular/upgrade": "2.0.0-rc.3", 
    "systemjs": "0.19.27", 
    "core-js": "^2.4.0", 
    "reflect-metadata": "^0.1.3", 
    "rxjs": "5.0.0-beta.6", 
    "zone.js": "^0.6.12", 
    "angular2-in-memory-web-api": "0.0.12", 
    "concurrently": "^2.0.0", 
    "systemjs-builder": "^0.15.17", 
    "typescript": "^1.8.10", 
    "typings": "^1.3.0", 
    "yargs": "^4.7.1" 
    } 
} 
+0

Что делать, если вы говорите «npm start», а затем «disown»? From [Как закрыть терминал, не убивая запущенную команду?] (Http://unix.stackexchange.com/q/4004/40596) – fedorqui

+0

Через 2 минуты он остановился. ** Hangup ** присутствует в nohup.out –

ответ

1

Вы можете использовать навсегда,

npm install -g forever 

и может начинаться с:

forever start bin/www 

Может быть, это не самый лучший способ для вашей ситуации, но она должна работать. И вы можете увидеть рабочий proccess с навсегда, как это:

forever list 

Помните, что вы должны начать навсегда, когда вы находитесь в директории проекта.

И я рекомендую dotenv. https://www.npmjs.com/package/dotenv Вы можете настроить свою среду в соответствии с вашим рабочим пространством. И если вы используете навсегда и dotenv вместе, вы можете использовать, как это:

forever start -c "node -r dotenv/config" bin/www dotenv_config_path=.development 
+0

Я отредактировал вопрос. –

+0

Ладно, вам не нужно навсегда положить в свой пакет. Json просто установите ** навсегда ** как глобальный, как я сказал. И я думаю, что вы используете экспресс-структуру. вы можете работать как 'forever start bin/www'. Навсегда это хорошо, он может продолжать работать даже сбой вашего приложения node.js! Вы должны попробовать :) –

+0

Прохладный. ** forever start bin/www ** работал должным образом –

0

Вы можете использовать пакет NPM "навсегда":

установить его как глобальный:

[sudo] npm install forever -g 

После запуска:

forever start app.js 

Полная документация: https://www.npmjs.com/package/forever

0

Вместо того, чтобы запустить его в терминале вы можете Run it as a service на многих платформах. Ответ в приведенном выше сообщении дает отличный пример. Кроме того, он не требует дополнительных пакетов.

Смежные вопросы