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

Azure DevOps CI/CD自动化部署至Plesk服务器遇阻求助

部署方案与流程优化建议

一、针对Plesk服务器的部署问题解决

1. 替换错误的部署任务

别用Azure App Service Deploy任务——它仅适配Azure服务器。改用Azure DevOps内置的IIS Web App Deploy任务,该任务支持通过MSDeploy部署到任何IIS服务器(包括Plesk托管的)。配置要点:

  • 从Plesk的publishsettings文件提取MSDeploy服务URL,格式通常为https://<服务器IP/域名>:8172/msdeploy.axd
  • 填入Plesk提供的部署用户名和密码(可从publishsettings文件获取,或在Plesk站点部署中心查看)
  • 指定Plesk中对应站点的名称
  • 必须勾选Take App Offline选项:部署前自动生成app_offline.htm,让ASP.NET Core应用主动关闭,从根源避免文件占用问题。

2. 文件占用问题的兜底方案

若上述选项仍无法解决文件占用,添加PowerShell脚本任务,先停止站点再部署:

# 替换<site-name>为你的Plesk站点名称
plesk bin site --stop <site-name>

部署完成后再启动站点:

plesk bin site --start <site-name>

注意需确保部署代理有执行这些命令的权限,或在Plesk中开启远程操作权限。

3. 备选:直接用MSDeploy命令行

若内置任务不好用,添加Command Line任务,直接调用msdeploy命令,参数参考Visual Studio发布逻辑:

msdeploy -verb:sync -source:package="$(Build.ArtifactStagingDirectory)\<你的构件包名>.zip" -dest:auto,computerName="<MSDeploy服务URL>",userName="<部署用户名>",password="<部署密码>",authType="Basic" -enableRule:DoNotDeleteRule -setParam:name="IIS Web Application Name",value="<站点名称>"

-enableRule:DoNotDeleteRule可防止误删站点下的其他文件,-setParam需确保填写正确的站点名称。

二、开发流程优化建议

1. 构建阶段

  • 添加构件验证步骤:确认生成的zip包包含所有必要文件,避免部署后站点因缺失文件崩溃。
  • 启用增量构建:在Azure DevOps构建触发器中设置为增量构建,仅编译变更的代码,节省时间并减小构件体积。

2. 部署阶段

  • 添加部署前检查:先确认服务器上的应用已停止、文件可写入,避免无效部署。
  • 配置回滚机制:在Release流水线中保留最近3个成功构件,部署失败时自动回滚到上一个可用版本。
  • 分环境部署:拆分开发、测试、生产环境,测试环境验证通过后再推送生产,可为生产环境添加手动审批环节,避免误操作。

3. 监控与排障

  • 开启部署详细日志:在Azure DevOps部署任务中勾选详细日志选项,出问题时快速定位原因。
  • 添加健康检查:部署完成后调用API的/health接口,确认应用正常启动,失败则触发告警。

内容的提问来源于stack exchange,提问作者Marcelo Antunes Fernandes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:06:05