如何使Digitalocean上的节点应用程序不断运行?

时间:2015-10-07 11:51:02

标签: node.js hosting web-hosting vps

我最近获得了一个节点应用程序并在digitalocean的droplet上运行。一切正常,如果我在服务器javascript文件上forever,我可以导航到该网站,它可以工作。

如果我关闭了我正在搜索的终端窗口,该网站将不再可用,这当然是预期的。但我的问题是,如何运行forever作为各种守护进程?

我无法在任何地方找到答案,这真的很奇怪...希望有人在这里可以帮助我

1 个答案:

答案 0 :(得分:1)

如果您将其设置为后台任务并且不要关闭它,通常永远应该继续运行。不幸的是,如果服务器需要重新启动(这可能经常发生),你需要一些东西才能重新启动它。

永远的另一种选择是pm2,几乎是一回事。有一个关于如何设置生产服务器here的教程。以下是该网站仅针对pm2部分的摘录,因为我假设您已将所有其他内容排序:

安装PM2

现在我们将安装PM2,它是Node.js应用程序的进程管理器。 PM2提供了一种简单的方法来管理和守护应用程序(将它们作为服务运行)。

我们将使用Node Packaged Modules(NPM),它基本上是与Node.js一起安装的Node模块的包管理器,用于在我们的app服务器上安装PM2。使用此命令安装PM2:

sudo npm install pm2 -g

使用PM2管理应用程序

PM2简单易用。我们将介绍PM2的一些基本用途。

启动应用程序

您要做的第一件事是使用pm2 start命令在后台运行您的应用程序hello.js:

pm2 start hello.js

这也会将您的应用程序添加到PM2的进程列表中,每次启动应用程序时都会输出该列表

PM2自动分配应用名称(基于文件名,不带.js扩展名)和PM2 ID。 PM2还维护其他信息,例如进程的PID,其当前状态和内存使用情况。

如果应用程序崩溃或被杀死,则在PM2下运行的应用程序将自动重新启动,但需要执行额外步骤以使应用程序在系统启动(启动或重新启动)时启动。幸运的是,PM2提供了一种简单的方法,即启动子命令。

startup子命令生成并配置启动脚本,以在服务器启动时启动PM2及其托管进程。在我们的例子中,您还必须指定运行的平台,即ubuntu:

pm2 startup ubuntu

结果输出的最后一行将包含一个必须运行的命令(必须以超级用户权限运行):

输出: [PM2] You have to run this command as root [PM2] Execute the following command : [PM2] sudo env PATH=$PATH:/usr/local/bin pm2 startup ubuntu -u sammy 运行生成的命令(类似于上面突出显示的输出)将PM2设置为在启动时启动(使用您自己的输出中的命令): sudo env PATH=$PATH:/usr/local/bin pm2 startup ubuntu -u sammy