如何在Digitalocean 运行上不断地做一个节点应用?
How to make a node application on Digitalocean run constantly?
我最近在 digitalocean 的 droplet 上安装了一个节点应用程序并 运行ning。一切正常,如果我在服务器 forever
上访问 javascript 文件,我可以导航到该站点并且它可以正常工作。
如果我关闭正在使用 ssh 的终端 window,该站点将不再可用,这当然是预料之中的。但我的问题是,我如何 运行 forever
作为某种守护进程?
我到处都找不到答案,这真的很奇怪...希望这里有人可以帮助我
如果您将其设置为后台任务并且不关闭它,通常永远应该继续 运行ning。不幸的是,如果服务器需要重新启动(这经常发生),您需要一些东西来让它重新启动。
永久的替代品是 pm2,几乎是一样的东西。有一个关于如何设置生产服务器的教程 here。这是 pm2 部分的网站摘录,因为我假设您已经对其他所有内容进行了排序:
安装 PM2
现在我们将安装 PM2,它是 Node.js 应用程序的进程管理器。 PM2 提供了一种简单的方法来管理和守护应用程序(运行 它们作为一种服务)。
我们将使用 Node Packaged Modules (NPM),它基本上是使用 Node.js 安装的 Node 模块的包管理器,在我们的应用程序服务器上安装 PM2。使用此命令安装 PM2:
sudo npm install pm2 -g
使用 PM2 管理应用程序
PM2简单易用。我们将介绍 PM2 的一些基本用途。
开始申请
您要做的第一件事是在后台使用 pm2 启动命令 运行 您的应用程序 hello.js:
pm2 start hello.js
这也会将您的应用程序添加到 PM2 的进程列表中,每次启动应用程序时都会输出该列表
PM2 自动分配一个 App 名称(基于文件名,不带 .js 扩展名)和一个 PM2 id。 PM2 还维护其他信息,例如进程的 PID、当前状态和内存使用情况。
在 PM2 下 运行ning 的应用程序如果崩溃或被杀死,将自动重新启动,但需要采取额外的步骤让应用程序在系统启动时启动(引导或重新启动) .幸运的是,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
我最近在 digitalocean 的 droplet 上安装了一个节点应用程序并 运行ning。一切正常,如果我在服务器 forever
上访问 javascript 文件,我可以导航到该站点并且它可以正常工作。
如果我关闭正在使用 ssh 的终端 window,该站点将不再可用,这当然是预料之中的。但我的问题是,我如何 运行 forever
作为某种守护进程?
我到处都找不到答案,这真的很奇怪...希望这里有人可以帮助我
如果您将其设置为后台任务并且不关闭它,通常永远应该继续 运行ning。不幸的是,如果服务器需要重新启动(这经常发生),您需要一些东西来让它重新启动。
永久的替代品是 pm2,几乎是一样的东西。有一个关于如何设置生产服务器的教程 here。这是 pm2 部分的网站摘录,因为我假设您已经对其他所有内容进行了排序:
安装 PM2
现在我们将安装 PM2,它是 Node.js 应用程序的进程管理器。 PM2 提供了一种简单的方法来管理和守护应用程序(运行 它们作为一种服务)。
我们将使用 Node Packaged Modules (NPM),它基本上是使用 Node.js 安装的 Node 模块的包管理器,在我们的应用程序服务器上安装 PM2。使用此命令安装 PM2:
sudo npm install pm2 -g
使用 PM2 管理应用程序
PM2简单易用。我们将介绍 PM2 的一些基本用途。
开始申请
您要做的第一件事是在后台使用 pm2 启动命令 运行 您的应用程序 hello.js:
pm2 start hello.js
这也会将您的应用程序添加到 PM2 的进程列表中,每次启动应用程序时都会输出该列表
PM2 自动分配一个 App 名称(基于文件名,不带 .js 扩展名)和一个 PM2 id。 PM2 还维护其他信息,例如进程的 PID、当前状态和内存使用情况。
在 PM2 下 运行ning 的应用程序如果崩溃或被杀死,将自动重新启动,但需要采取额外的步骤让应用程序在系统启动时启动(引导或重新启动) .幸运的是,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