我可以通过 SSH 进入服务器并在 src 文件内运行命令 node index.js,在 EC2 实例上运行我的节点服务器。服务器运行正常,但问题是我必须保持与 EC2 实例的 SSH 连接,否则它会终止服务器进程。我确信我做错了什么,但我无法在网上找到一个明确的解决方案,而不必过多地纠结。
另外,对于任何想知道的人来说,我通过 SSH 进入我的 github 并在 EC2 实例上安装了 git,以便将代码从存储库拉到实例,而不是使用 CodeDeploy。原因是我在使用 CodeDeploy 时遇到了模糊的错误,例如“部署修订版时出现问题”,所以我决定手动上传代码。所以我也可以使用一些解决方案来解决这个领域的常见“陷阱”。谢谢。
答案1
一个非常蹩脚的做法是tmux
在 tmux 会话中安装并运行节点服务器 - 这应该只用于测试和开发实验,仅此而已。
另一种选择是将您的节点服务包装为操作系统服务(例如 systemd),并让操作系统为您管理应用程序的生命周期。
另一个选择是将服务捆绑为 Docker 容器并让 Docker(或 docker-compose)运行和管理它。
最后,我更愿意选择像 AWS Beanstalk 这样的托管 AWS 解决方案来实际部署长期运行的服务。它们将负责自动将补丁应用到您的服务器,并让您轻松部署新版本。
答案2
要在后台启动服务并将其从 ssh 会话中取消连接,请按如下方式执行命令:
nohup node index.js &
nohup
如果从终端/ssh 解除连接,
&
则会将其置于后台