尝试在hostgator上永远运行nodeJS应用程序,即使退出ssh后

问题描述 投票:0回答:2

我试图让 NodeJS 应用程序(即个人网页)在 HostGator 共享服务器上永久运行,但无论我运行什么服务或后台进程,一旦退出 SSH,应用程序就会关闭。 到目前为止,我可以完美地运行该应用程序。

我通过 npm 使用了各种软件包,包括forever、pm2、nodemon,甚至是低级的“node [appname] &”,但这个过程根本无法坚持下去。有人对如何实现这项工作有任何想法吗?我确信其他托管平台会让这变得更容易,但我的域名和托管资源已经绑定到了 hostgator。

我可以执行某种配置吗?为了让您了解过去的步骤,我的应用程序结构是 IntelliJ Idea 中 Node.js Express App 项目模板的修改版本。另外,我在服务器上的.htaccess文件如下:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:8093/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:8093/$1 [P,L]
DirectoryIndex disabled
node.js express shared-hosting forever
2个回答
0
投票
  • 首先,你必须进入你的节点项目所在的目录。

  • 然后运行以下命令:

    nohup /opt/cpanel/ea-nodejs16/bin/node index.js > 输出.log 2>&1 &

它将启动 Node.js 应用程序并将输出重定向到 output.log 文件。命令末尾的 & 将在后台运行该进程。

  • 下一篇:

    回声$! >node_app.pid

它将显示正在运行的 Node.js 应用程序的进程 ID (PID)。如有必要,您可以捕获此 PID 以稍后管理进程。

  • 下一篇:

    否认

为了确保您的应用程序在您注销后继续运行,您可以使用 disow 命令。


0
投票

以下是一些可能有帮助的步骤:

  1. 编写健壮的 Node.js 代码:确保您的代码对可能需要一些时间的函数使用异步调用,并且具有适当的错误处理例程。

  2. 使用 PM2 流程管理器:PM2 是 Node.js 应用程序的生产流程管理器,它监视您的应用程序,并在意外事件导致应用程序崩溃时自动重新启动它。您可以使用

    npm install pm2
    安装 PM2 并使用
    pm2 start myapp.js
    启动您的应用程序。

  3. 在共享主机上配置crontab:Crontab可用于定期检查应用程序的状态,如果发现没有运行则重新启动PM2进程。您可以编写一个脚本来验证应用程序的运行状态,并使用 cPanel 作为每 5 分钟运行一次的 Cron 作业或直接从终端编辑 crontab,添加此代码的定期执行。

以下是此类脚本的示例:

#!/bin/bash
ps cax | grep node > /dev/null
if [ $? -eq 0 ]; then
  echo \"Process is running.\" >/dev/null 2>&1
else
  echo \"Process is not running.\"
  PATH=$PATH:/usr/local/bin
  pm2 start /path/to/your/node/application
fi

此脚本检查名为“node”的进程是否正在运行,如果没有,则使用 PM2 重新启动它。

© www.soinside.com 2019 - 2024. All rights reserved.