首页 > 解决方案 > 在 Azure 发布管道中运行 Node.js 服务器

问题描述

我有一个 Node.js Web 服务器,作为 CD 流程的一部分,我想使用 Azure Release Pipeline 将其部署到登台服务器。问题是,如果我只运行一个 Powershell 脚本:

# Run-Server.ps1
node my-server.js

由于节点进程阻止了 Powershell 会话,因此管道将保持不变。我想要的是能够启动该服务,然后在下一次部署中只需终止节点进程并使用新代码再次运行它。

所以我想我会用Start-Process. 如果我在本地运行它:

> Start-Process node -ArgumentList ./server.js

我现在可以退出 Powershell 会话,服务器将继续运行。所以我想我可以在我的发布管道中以同样的方式实现它。

但事实证明,一旦 Release Pipeline 结束运行,服务器就不再可用——节点进程消失了。

你能帮我弄清楚这是为什么吗?还有另一种方法可以实现这一目标吗?我想这是一个非常常见的用例,因此必须有关于如何完成此操作的最佳实践。

标签: azure-devopsazure-pipelines

解决方案


实现此目的的另一种方法是使用成熟的 Web 服务器来托管和管理节点进程。即在 Windows 上,您可以将IIS 与 iisnode 模块一起使用。这更可靠,并为您提供了一些其他好处:

  • 进程管理(自动启动、故障重启等)
  • 安全性 - 您可以配置节点进程将运行的用户
  • 多核 CPU 上的可扩展性

Then the process of app deployment would be just copying files to the right directory - the web server should pick up the change automatically.


推荐阅读