Linux平台下.NET开发替代Web Deploy的一键部署工具是什么?
Linux平台下.NET应用的一键上传与刷新方案
下面是几个实用的替代方案,覆盖开发、测试和生产场景:
方法1:Shell脚本一键部署(通用场景)
直接写个本地Shell脚本,把打包、上传、重启的流程串起来,执行脚本就完成一键部署:
- 本地打包发布:
dotnet publish -c Release -o ./publish - 用rsync同步发布文件到服务器(比scp更高效,只传变更):
rsync -avz ./publish/ your-user@your-server-ip:/var/www/your-app-dir/ - 远程重启.NET服务(假设用systemd管理应用):
ssh your-user@your-server-ip "sudo systemctl restart your-app.service"
把这三行命令存成deploy.sh,给脚本加执行权限chmod +x deploy.sh,以后直接运行./deploy.sh就能完成一键上传刷新。
方法2:开发环境快速热刷新
如果是开发阶段需要频繁修改代码并同步到Linux服务器:
- 用sshfs把服务器上的应用目录挂载到本地:
sshfs your-user@your-server-ip:/var/www/your-app-dir ./local-mount - 在本地挂载目录下运行
dotnet watch run,代码修改后会自动编译,服务器上的应用也会立即重启刷新。
方法3:CI/CD自动化部署(生产环境推荐)
配置流水线实现代码提交后自动部署,相当于"一键触发":
以GitHub Actions为例,核心步骤如下(存放在.github/workflows/deploy.yml):
name: Deploy .NET App to Linux on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET SDK uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.x - name: Publish app run: dotnet publish -c Release -o ./publish - name: Deploy to server uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SERVER_SSH_KEY }} script: | sudo systemctl stop your-app.service rm -rf /var/www/your-app-dir/* cp -r ./publish/* /var/www/your-app-dir/ sudo systemctl start your-app.service
配置好服务器SSH密钥等机密信息后,每次往main分支提交代码,流水线会自动完成构建、上传和重启。
关键配套配置
- 用systemd管理.NET应用,确保重启和守护能力,创建
/etc/systemd/system/your-app.service文件:
[Unit] Description=Your .NET Application [Service] WorkingDirectory=/var/www/your-app-dir ExecStart=/usr/bin/dotnet /var/www/your-app-dir/YourApp.dll Restart=always User=www-data [Install] WantedBy=multi-user.target
- 配置SSH免密登录,避免每次部署输入密码,提升流畅度。
内容的提问来源于stack exchange,提问作者LinuxMan1820
相关产品推荐
相关产品推荐

