【发布时间】:2019-01-21 11:09:16
【问题描述】:
我有一个 node.js 应用程序部署并运行在具有托管服务提供商的虚拟专用服务器上。
我已经安装了永久模块。当我通过ssh登录时,遍历到节点应用程序文件夹并运行
forever start app.js
应用程序启动并打印
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: app.js
但是,一旦我注销 ssh 或关闭终端并刷新我的 Web 应用程序页面,它就会给我 503 服务不可用错误。
首先我认为这可能是因为关于 minUptime 和 spinSleepTime 的两个警告导致服务器停止所以我这样做了
forever start --minUptime 1000 --spinSleepTime 1000 app.js
服务器运行,但从 ssh/终端退出时再次出现 503 错误。
我什至尝试过跑步
nohup node app.js &
但同样,服务器运行并在退出 ssh 时给出 503。
我安装了 pm2 并运行了
pm2 start app.js
但是完全一样的事情。
我的 package.json 看起来像这样:
{
"name": "test-app",
"version": "1.0.0",
"description": "My Application",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://username@bitbucket.org/reponame/mytest-app.git"
},
"author": "First Last",
"license": "ISC",
"homepage": "https://bitbucket.org/reponame/mytest-app#readme",
"dependencies": {
"async": "^2.6.1",
"bcrypt-nodejs": "0.0.3",
"body-parser": "^1.18.3",
"connect-multiparty": "^2.1.1",
"cookie-parser": "^1.4.3",
"express": "^4.16.3",
"express-handlebars": "^3.0.0",
"express-session": "^1.15.6",
"multer": "^1.3.0",
"mysql": "^2.15.0",
"passport": "^0.4.0",
"passport-local": "^1.0.0",
"path": "^0.12.7",
"shortid": "^2.2.8",
"uuid": "^3.2.1",
"winston": "^2.4.2"
}
}
有人知道发生了什么吗?为什么当我退出终端时应用程序会停止?我是否需要在我的 package.json 中添加任何其他内容,例如启动脚本?
【问题讨论】:
-
您是否尝试将脚本中的任何错误记录到日志文件中?我可以在您的依赖项上看到winston,所以我假设您正在这样做。你在永远的日志上看到了什么?
forever logs将返回一个日志列表,然后您可以执行forever logs 0之类的操作来查看该日志。您是否尝试过打开与同一台服务器的第二个会话并从那里监控日志?您是否尝试过在不同的 VPS 上运行相同的脚本? -
一定要全局安装pm2。
-
当我永远运行日志或日志 0 时,它说找不到永远进程:0。是的,我已经全局安装了 pm2