我有一个快速节点项目。我通过运行命令启动服务器 npm start 在我本地的项目文件夹中,它按预期工作。
我试图在远程linux VM上运行相同的命令。但关闭后终端服务器正在关闭。所以我试着从 npm start& 和 nohup npm start& 开始。 但是在关闭终端服务器后仍然停止。
那么如何在后台启动Express项目的节点服务器?
我的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 :(得分:1)
你可以永远使用,
npm install -g forever
并且可以从:
开始forever start bin/www
也许这不是适合您情况的最佳方式,但它应该有效。你可以像这样永远看到工作过程:
forever list
请记住,当你在项目目录中时,你应该永远开始。
我推荐dotenv。 https://www.npmjs.com/package/dotenv 您可以根据工作空间设置环境。如果你永远使用和dotenv一起使用,你可以像这样使用:
forever start -c "node -r dotenv/config" bin/www dotenv_config_path=.development
答案 1 :(得分:0)
你可以“永远”使用npm包:
将其安装为全局:
[sudo] npm install forever -g
跑完后:
forever start app.js
答案 2 :(得分:0)
您可以在许多平台上Run it as a service而不是在终端中启动它。上面帖子中的答案给出了一个很好的例子。此外,它不需要任何额外的包。
答案 3 :(得分:0)
另一个运行节点应用程序的最佳工具是pm2
使用pm2
npm install pm2 -g
pm2 start app.js
在http://pm2.keymetrics.io/上了解有关pm2
的更多信息