【问题标题】:Tmux - How can I run node app forever after detaching tmux.?Tmux - 分离 tmux 后如何永远运行节点应用程序。?
【发布时间】:2018-04-07 21:40:13
【问题描述】:

我正在用 node js 制作我的第一个应用程序,并将它上传到服务器上。我有一个终端,我正在运行一个包含两个窗格的会话,一个用于运行 mongod ,第二个用于运行 node app.js 。现在,只要我保持运行,它们就会运行。但是我们如何确保在退出窗口后它继续运行mongodnode。我正在使用tmuxmongodbexpressnode

我试过tmux detachtmux attach。他们工作。但是对于tmux detach,首先我必须通过ctrl + c 退出当前命令,然后才能运行tmux detach。难道我做错了什么?请帮忙

【问题讨论】:

  • 尝试使用节点进程管理器 pm2 - pm2.keymetrics.io
  • 使用<Control-B>d分离

标签: node.js mongodb api mongoose tmux


【解决方案1】:

我认为这是针对开发环境而不是生产环境。在生产中,让某些东西“永远”运行意味着使用进程管理器来确保它在崩溃时重新启动。

在开发中,可以使用<Prefix>-d进行分离,而不需要取消当前命令。 Tmux 的前缀默认为Control-B

【讨论】:

  • 好的,那么您应该使用systemdpm2 之类的进程管理器,使用systemdpm2 运行Node.js 应用程序的详细信息在其他地方都有详细介绍。该应用程序最终将在后台运行。
  • 这将为节点 js app.js 继续运行 mongo 呢?
  • 我有一个安装了 mongo 和 node 的服务器。我的数据库也放在同一台服务器上。现在我可以使用 tmux 运行它们。但是正如你所说的运行 node app.js 我需要 pm2 那么 mongo 呢? @mark
  • 您没有提及您使用的操作系统或版本。 MongoDB 软件包倾向于安装它,以便它由 init systemd 管理——在引导时自动启动,在服务器停止时自动重新启动和关闭。在许多 Linux 发行版上,现在使用systemd 完成。 Tmux 不是在生产环境中管理服务的工具。 Tmux 用于让开发人员保持工具在他们可能断开并重新连接的服务上运行。通常是文本编辑器、聊天程序和其他开发工具。如果我的回答对您有帮助,请点赞并采纳。
  • 您可以在同一台服务器上运行 Node.s 和 MongoDB,但如果服务很重要,您可以在冗余服务器上运行双 Node 实例,前面有一个负载均衡器和 2 或 3 个 MongoDB 实例在一个集群中,每个人都在自己的服务器上。这样一来,任何服务器都可能因计划内维护或计划外故障而停机,而整个服务仍在运行。如果您刚刚开始,那么现在是考虑使用 PostgreSQL 的好时机。 ;) 如果我的回答有帮助,请点赞并接受。
猜你喜欢
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 2019-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多