当前位置:首页 > Linux > 正文

NET部署Linux快速教程,或更精准的版本,,NET应用Linux部署指南

.NET应用可通过.NET CLI发布为框架依赖或独立部署包,使用dotnet publish命令生成Linux可执行文件或依赖包,部署时需确保目标Linux系统安装.NET运行时(框架依赖部署)或直接运行自包含应用(独立部署),常用方式包括SCP传输文件、配置Nginx反向代理及守护进程管理。

.NET 应用程序部署到 Linux 的完整指南

将.NET应用程序部署到Linux环境是现代化开发的关键实践,微软官方对.NET Core及更高版本的跨平台支持,使这一过程高效可靠,以下是经行业验证的部署流程:


环境准备(必备基础)

  1. Linux 服务器要求

    • 支持的系统:Ubuntu 20.04+/CentOS 7+/Debian 10+
    • 硬件:至少2核CPU、2GB内存(根据应用负载调整)
    • 开放端口:80 (HTTP)、443 (HTTPS)、应用端口(如5000)
  2. 安装 .NET 运行时/SDK

    # Ubuntu 示例(其他系统参考微软文档)
    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    sudo apt update
    sudo apt install -y aspnetcore-runtime-7.0  # 根据版本调整

发布应用程序

  1. 本地项目发布

    dotnet publish -c Release -r linux-x64 --self-contained false  # 推荐框架依赖部署
    • --self-contained false:减少部署包体积,依赖服务器运行时
    • 输出路径:bin/Release/net7.0/linux-x64/publish
  2. 传输文件到服务器
    使用SCP或SFTP上传发布文件夹:

    scp -r publish/* user@yourserver:/var/www/yourapp

Linux 服务器配置

方案1:Nginx + Kestrel 反向代理(生产环境推荐)

  1. 创建服务文件
    /etc/systemd/system/kestrel-yourapp.service

    NET部署Linux快速教程,或更精准的版本,,NET应用Linux部署指南  第1张

    [Unit]
    Description=Your .NET App running on Kestrel
    [Service]
    WorkingDirectory=/var/www/yourapp
    ExecStart=/usr/bin/dotnet /var/www/yourapp/YourApp.dll
    Restart=always
    RestartSec=10
    SyslogIdentifier=dotnet-yourapp
    User=www-data
    Environment=ASPNETCORE_ENVIRONMENT=Production
    [Install]
    WantedBy=multi-user.target
  2. 启动服务

    sudo systemctl enable kestrel-yourapp
    sudo systemctl start kestrel-yourapp
  3. 配置 Nginx 反向代理
    /etc/nginx/sites-available/yourapp

    server {
        listen 80;
        server_name yourdomain.com;
        location / {
            proxy_pass http://localhost:5000; # 匹配Kestrel端口
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
    sudo nginx -t && sudo systemctl reload nginx

方案2:独立部署(无需安装运行时)

发布时添加参数:

   dotnet publish -c Release -r linux-x64 --self-contained true
  • 注意:部署包体积较大,但环境兼容性更强

安全加固与优化

  1. 防火墙配置

    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw reload
  2. SSL 证书(Let’s Encrypt)

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d yourdomain.com
  3. 进程监控

    sudo systemctl status kestrel-yourapp  # 查看服务状态
    journalctl -u kestrel-yourapp --since "1 hour ago"  # 日志排查

维护与更新

  1. 自动重启策略
    通过systemdRestart=always实现崩溃恢复

  2. 持续部署(CD)
    推荐工具:

    • GitHub Actions / GitLab CI
    • Jenkins + SSH插件
    • 容器化部署(Docker + Kubernetes)
  3. 性能监控

    • dotnet-counters 实时指标
    • Prometheus + Grafana 可视化

常见问题排查

  • 502 Bad Gateway:检查Kestrel是否运行 (systemctl status),端口是否匹配
  • 依赖缺失:运行 ldd YourApp.dll 检查动态链接库
  • 权限错误:确保/var/www/yourapp目录属主为服务用户(如www-data

为什么选择 .NET on Linux?

  • 官方支持:微软提供长期支持(LTS)版本
  • 性能优势:TechEmpower基准测试显示ASP.NET Core领先主流框架
  • 成本效益:免费开源,降低服务器授权费用

引用说明基于微软官方部署文档、Linux基金会服务器管理指南及行业最佳实践,技术细节参考:

  • 微软.NET Linux部署文档
  • Nginx官方代理配置指南
  • Linux systemd服务管理手册

通过遵循此指南,您将获得符合企业级标准的部署方案,兼顾安全性与可维护性,建议定期检查微软更新日志以获取最新优化建议。

0