You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Pipeline从命令行启动Kestrel服务?

解决方案

针对你的内部QA环境自动化需求,完全可以不用IIS,通过两种方式实现最后一步的自动化启动:

一、直接在发布流水线中远程执行dotnet命令

这种方式适合短期快速实现,不需要额外配置服务:

Windows虚拟机

如果你的VM是Windows,确保流水线执行账户拥有VM的远程管理权限,然后在流水线中添加PowerShell步骤远程执行命令:

Invoke-Command -ComputerName "你的VM名称/IP" -ScriptBlock {
    # 切换到项目解压目录
    Set-Location "C:\部署文件夹路径"
    # 后台启动Kestrel,避免会话关闭后进程终止
    Start-Process dotnet -ArgumentList "ProjectName.dll" -NoNewWindow -PassThru
}

Linux虚拟机

如果是Linux,通过SSH远程执行命令,用nohup让进程在后台持续运行:

ssh 用户名@VMIP "cd /部署文件夹路径 && nohup dotnet ProjectName.dll > /dev/null 2>&1 &"

> /dev/null 2>&1 &会将输出重定向,让进程脱离当前会话后台运行。

二、创建系统服务(推荐,更稳定)

如果希望进程意外终止后能自动重启,或者需要更规范的启停管理,可以在VM中创建系统服务,再通过流水线触发启停:

Windows系统

  1. 在VM上通过PowerShell创建服务(可将此步骤加入流水线的远程执行环节):
New-Service -Name "QA-ProjectService" `
    -BinaryPathName "C:\Program Files\dotnet\dotnet.exe C:\部署文件夹路径\ProjectName.dll" `
    -DisplayName "QA环境项目服务" `
    -StartupType Manual
  1. 流水线中添加启动服务的命令:
Invoke-Command -ComputerName "你的VM名称/IP" -ScriptBlock {
    Start-Service -Name "QA-ProjectService"
}

更新部署后,将Start-Service替换为Restart-Service即可重启服务。

Linux系统

  1. 在VM上创建systemd服务文件(比如/etc/systemd/system/qa-project.service):
[Unit]
Description=QA环境.NET Core项目服务

[Service]
WorkingDirectory=/部署文件夹路径
ExecStart=/usr/bin/dotnet /部署文件夹路径/ProjectName.dll
Restart=on-failure
User=合适的运行账户

[Install]
WantedBy=multi-user.target
  1. 流水线中通过SSH执行命令启用并启动服务:
ssh 用户名@VMIP "sudo systemctl daemon-reload && sudo systemctl enable qa-project.service && sudo systemctl start qa-project.service"

更新部署后,执行sudo systemctl restart qa-project.service即可重启服务。

注意事项

  • 确保流水线执行账户拥有VM的远程执行权限(Windows需开启WinRM,Linux需开启SSH)
  • 运行dotnet命令的账户需要有项目文件夹的读写权限
  • 提前在VM上测试命令,确认端口未被占用、Kestrel能正常启动
  • 短期环境可设置服务为手动启动,仅通过流水线触发启停

内容的提问来源于stack exchange,提问作者Kiran Ramaswamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:15:09