我有一个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 / 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添加其他内容?
答案 0 :(得分:0)
假定此程序在Linux上运行-创建如下所示的Shell脚本-如果该应用程序正在运行,它将重新启动该应用程序。 您可以更新脚本以仅启动应用程序。完成任何更改后,我使用此脚本重新启动我的应用程序。替换运行您的应用程序的端口号。 下面的脚本用于端口3005,并通过app.js启动节点应用 更新您想要查看错误和输出日志的合适位置。
您还可以尝试派生一个将运行应用程序而不是此脚本的进程,以便注销后该进程继续运行-不需要永久模块。
#!/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