从MacOS自动部署.NET应用至Azure Windows VM上的IIS
从MacOS自动化发布.NET应用到Azure Windows VM的IIS方案
方案1:脚本化FTP上传(复用现有FTP流程)
既然你已经能通过FTP上传文件,直接把发布+上传流程封装成自动化脚本即可。Mac上可以用lftp(支持批量操作的命令行FTP工具)实现:
- 安装lftp:
brew install lftp - 编写Shell脚本(比如命名为
deploy.sh):
# 1. 发布.NET应用到本地目录 dotnet publish -c Release -o ./publish # 2. 批量上传发布文件到VM的IIS网站物理路径 lftp -u 你的FTP用户名,你的FTP密码 ftp://你的VM公网IP << EOF mirror -R ./publish/ /你的IIS网站物理路径/ bye EOF # 可选:远程重启IIS应用池(需先在Mac安装PowerShell Core) pwsh -Command "Invoke-Command -ComputerName 你的VM公网IP -Credential (Get-Credential) -ScriptBlock { Restart-WebAppPool -Name '你的应用池名称' }"
- 给脚本添加执行权限:
chmod +x deploy.sh,之后直接运行./deploy.sh就能完成一键发布。
方案2:Azure DevOps Pipeline全流程自动化
借助Azure DevOps实现代码提交后自动构建+部署,无需本地手动操作:
- 构建阶段:选择微软托管的Mac代理(或配置自己的Mac作为私有代理),执行
dotnet publish生成发布包。 - 部署阶段:
- 使用FTP Upload任务将发布包上传至VM的IIS网站目录。
- 添加PowerShell on Target Machines任务,通过WinRM连接Windows VM,执行应用池重启命令:
Restart-WebAppPool -Name '你的应用池名称'。
- 配置代码提交触发器后,每次推送代码都会自动触发发布流程。
方案3:基于OpenSSH的Rsync增量同步
如果你的Azure Windows VM已开启OpenSSH服务(Windows 10/Server 2019及以上版本默认支持),可以用Rsync实现高效的增量上传:
- 确保Mac上已安装Rsync(一般自带,缺失的话执行
brew install rsync)。 - 编写同步脚本:
# 发布应用到本地目录 dotnet publish -c Release -o ./publish # 增量同步发布文件到VM的IIS目录 rsync -avz ./publish/ 你的VM用户名@你的VM公网IP:/c/inetpub/wwwroot/你的网站目录/ # 远程重启应用池 pwsh -Command "Invoke-Command -ComputerName 你的VM公网IP -Credential (Get-Credential) -ScriptBlock { Restart-WebAppPool -Name '你的应用池名称' }"
Rsync仅传输变化的文件,比FTP更高效,适合频繁发布的场景。
内容的提问来源于stack exchange,提问作者timmy
相关产品推荐
相关产品推荐

