gpt4 book ai didi

node.js - 无法让node.js服务器与forever/pm2/nohup一起运行

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:51 25 4
gpt4 key购买 nike

我在托管提供商的虚拟专用服务器上部署并运行了一个 Node.js 应用程序。

我已经安装了forever模块。当我通过ssh登录时,遍历到 Node 应用程序文件夹并运行

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/terminal 退出时再次出现 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 中添加任何其他内容(例如启动脚本)吗?

最佳答案

假设它在 Linux 上运行 - 创建一个如下所示的 shell 脚本 - 如果应用程序正在运行,这将重新启动应用程序。您可以更新脚本以仅启动应用程序。完成任何更改后,我使用此脚本重新启动我的应用程序。替换您的应用程序运行的端口号。下面的脚本适用于端口 3005,并通过 app.js 启动 Node 应用程序更新您想要查看错误和输出日志的合适位置。

您还可以尝试 fork 一个将运行应用程序而不是此脚本的进程,以便当您注销时进程继续运行 - 这将不需要永久模块。

#!/bin/bash
PID1=`netstat -antp 2>/dev/null|grep ':::3005'|awk '{print $7}'`
PID=`echo $PID1| cut -f1 -d "/"`
echo "$PID"
if [[ "$PID" ]];
then
echo "Stopping App running on process ID $PID"
forever stop "$PID"
echo "App stopped"
else
echo "App not running"
fi
echo 'starting'
forever -m5 -o "../../output.log" -e
"../../error.log" start app.js
echo 'started'
exit

关于node.js - 无法让node.js服务器与forever/pm2/nohup一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51844029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com