服务器上如何部署.net网站?.net网站部署教程

在服务器上部署 .NET 网站(通常指 ASP.NET Core 应用)是一个标准且高效的过程,由于 .NET Core/.NET 5+ 是跨平台的,你可以选择 Windows Server 或 Linux (Ubuntu/CentOS) 作为部署环境。

以下是完整的部署指南,分为 准备阶段、Linux 部署(推荐)、Windows 部署 和 生产环境最佳实践。

TeamSpeak服务器搭建教程!安装客户端到部署服务端全过程,还能打包给好友们解压即用!
加载中
TeamSpeak服务器搭建教程!安装客户端到部署服务端全过程,还能打包给好友们解压即用!

第一步:准备工作

  1. 发布应用 (Publish)
    在本地开发机器或 CI/CD 流水线中,将项目发布为独立部署包。

    # 在终端执行
    dotnet publish -c Release -o ./publish
    • -c Release:发布发布版本。
    • -o ./publish:输出到 publish 文件夹。
    • 如果希望包含运行时(无需在服务器安装 .NET SDK/Runtime),可以添加 -r linux-x64 等运行时标识符。
  2. 准备服务器环境

    • 确保服务器已安装 .NET Runtime(注意:生产环境只需 Runtime,不需要 SDK)。
    • 确保服务器防火墙开放了相应的端口(如 80, 443, 5000 等)。

第二步:Linux 服务器部署 (Ubuntu/CentOS)

这是目前最主流、性能最好的部署方式。

上传文件

使用 scp 或 rsync 将发布文件夹上传到服务器:

scp -r ./publish user@your-server-ip:/var/www/yourapp

安装 .NET Runtime (如果未安装)

以 Ubuntu 22.04 为例(.NET 8):

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-8.0

服务器上如何部署.net网站?.net网站部署教程

创建 Systemd 服务 (推荐)

使用 systemd 管理应用进程,确保应用开机自启、崩溃后自动重启。

创建服务文件:

sudo nano /etc/systemd/system/yourapp.service

根据实际路径修改):

[Unit]
Description=My .NET Web App
After=network.target
[Service]
WorkingDirectory=/var/www/yourapp
ExecStart=/usr/bin/dotnet /var/www/yourapp/YourApp.dll
Restart=always
# 如果应用崩溃,5秒后重启
RestartSec=5
# 指定用户运行(可选,建议创建专用用户)
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target

启动并启用服务:

sudo systemctl daemon-reload
sudo systemctl start yourapp
sudo systemctl enable yourapp
# 查看日志
sudo journalctl -u yourapp -f

第三步:Windows Server 部署

安装 .NET Runtime

从微软官网下载并安装 .NET Runtime(非 SDK)。

上传文件

将 publish 文件夹复制到服务器,C:inetpubwwwrootYourApp。

使用 IIS 托管 (最常见)

  1. 打开 IIS 管理器。
  2. 创建一个新的 网站,指向你的物理路径。
  3. 确保安装了 ASP.NET Core Hosting Bundle(它包含 .NET Runtime 和 IIS 模块)。
  4. 在 IIS 中,确保网站绑定正确的端口(如 80 或 443)。
  5. 应用程序池设置:
    • 将“.NET 无托管代码”改为 “无托管代码” (No Managed Code)。
    • 确保应用池身份有权限读取该文件夹。

使用 Kestrel + 进程守护 (替代 IIS)

服务器上如何部署.net网站?.net网站部署教程

如果你不想用 IIS,可以在 Windows 上使用 nssm (Non-Sucking Service Manager) 将 dotnet.exe 注册为 Windows 服务。


第四步:反向代理与 HTTPS (生产环境必备)

无论使用 Linux 还是 Windows,不建议直接暴露 Kestrel/IIS 到公网,应使用 Nginx 或 Apache 作为反向代理,处理 SSL 证书、静态文件缓存和负载均衡。

示例:Nginx 配置 (Linux)

安装 Nginx 后,编辑配置文件:

sudo nano /etc/nginx/sites-available/yourapp
server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_pass http://localhost:5000; # 你的 .NET 应用监听端口
        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;
    }
}

启用配置并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

HTTPS 配置

使用 Certbot 免费获取 Let’s Encrypt 证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

第五步:最佳实践与注意事项

  1. 环境变量

    • 生产环境务必设置 ASPNETCORE_ENVIRONMENT=Production。
    • 这会禁用详细的错误页面,提升安全性。
    • 敏感信息(如数据库连接字符串)应通过 环境变量 或 Azure Key Vault / AWS Secrets Manager 管理,不要硬编码在

      服务器上如何部署.net网站?.net网站部署教程

      appsettings.json 中。

  2. 日志记录

    • 使用 Serilog、NLog 或内置的 ILogger 将日志输出到文件、Seq、ELK 或 Application Insights。
    • 不要依赖控制台输出进行生产调试。
  3. 静态文件

    • 确保 app.UseStaticFiles() 在 Program.cs 中正确配置。
    • 如果前端是 Vue/React,确保构建后的 wwwroot 文件夹已包含在前端构建产物中。
  4. 健康检查 (Health Checks)

    • 在 Program.cs 中添加健康检查端点,供负载均衡器或监控系统探测应用是否存活。
      builder.Services.AddHealthChecks();
      app.MapHealthChecks("/health");
  5. 数据库迁移

    • 确保在应用启动时执行数据库迁移(EF Core Migrations),或在部署脚本中手动运行 dotnet ef database update。
  6. 监控

    • 集成 Application Insights (Azure) 或 Prometheus + Grafana 进行性能监控和异常追踪。

常见问题排查

  • 502 Bad Gateway:通常是 Kestrel 未启动、端口被占用或防火墙阻止,检查 systemctl status yourapp 和 netstat -tulpn。
  • 权限问题:确保运行 .NET 应用的用户有权限读取发布文件夹和写入日志/临时文件。
  • 时区问题:Linux 服务器默认 UTC,如需本地时间,需设置 TZ 环境变量或修改系统时区。

如果你能提供具体的服务器类型(Windows/Linux)和 .NET 版本,我可以给出更精确的命令和配置。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/476943.html

赞 (0)
服务器渗透测试怎么做?渗透测试流程及报告模板
上一篇 2026年7月9日 23:39
python中position参数怎么用?python position参数详解
下一篇 2026年7月9日 23:39

相关推荐

  • 服务器一键建站软件好用吗?,哪个性价比最高

    服务器一键建站软件的核心价值在于让非技术人员也能在几分钟内完成网站部署,免去手动配置环境的繁琐步骤,同时保持运维效率与安全性,服务器一键建站软件是什么?适合谁用?核心功能与适用场景这类软件本质是运行在服务器上的图形化管理面板,将Nginx、Apache、MySQL、PHP等组件打包成可视化安装包,并附带网站管理……

    2026年7月15日
    1900
  • 分布式数据库搭建难吗?分布式数据库搭建流程

    分布式数据库搭建的核心在于根据业务场景选择合适的一致性模型与分片策略,通过自动化运维平台实现高可用与弹性扩展,而非单纯依赖硬件堆砌,在2026年的技术语境下,企业不再将数据库视为静态存储,而是动态的数据服务中枢,搭建分布式数据库并非简单的软件安装,而是一场关于数据分布、一致性保障以及故障恢复的系统工程,许多团队……

    2026年7月5日
    17900
  • 国内四大AI大模型哪家强?2026最新AI大模型排名

    2026年国内AI大模型已形成百度文心、阿里通义、腾讯混元、智谱清言四足鼎立的格局,选择哪款取决于具体应用场景是侧重办公效率、代码开发还是创意生成,百度文心一言:搜索生态下的全能型助手百度作为国内最早布局大模型的企业,其核心优势在于将AI能力深度嵌入到搜索、云服务和智能驾驶等实际业务中,对于普通用户而言,文心一……

    2026年6月15日
    2710
  • ipc备案撤销备案与放弃备案有何区别,流程是什么?

    在ipc备案管理中,撤销备案是主动向通信管理局申请注销备案号,而放弃备案则是放任网站不管导致备案被强制注销,前者是合规操作,后者会带来信用风险,ipc备案撤销备案和放弃备案的核心区别这两个概念经常被混用,但实际处理流程和后果完全不同,行业共识认为,主动撤销备案是备案主体在停止互联网服务后必须履行的义务,而放弃备……

    2026年7月30日
    600
  • Ollama环境变量怎么设置?如何永久配置Ollama环境变量

    Ollama 设置环境变量的核心方法是通过修改系统配置文件(如 Linux 的 ~/.bashrc 或 Windows 的 系统属性)添加 OLLAMA_HOST、OLLAMA_MODELS 等关键变量,重启终端或系统后生效,这是解决端口冲突和模型存储路径自定义的标准操作,很多开发者在初次接触 Ollama 时……

    2026年6月19日
    2410
  • 华为媒体联系方式_修改联系方式

    华为媒体联系方式的修改需要通过华为媒体中心官方系统提交变更申请,经审核后生效,修改路径与查询公开联系方式的流程不同,需区分权限操作,华为媒体联系方式怎么修改?官方路径与实操步骤修改华为媒体联系方式,首先要确认自己是否具备修改权限,只有已在华为媒体中心注册的媒体联系人,或华为内部负责媒体关系的人员,才能通过官方系……

    2026年8月21日
    200
  • 大模型本地部署显存不够怎么办?如何优化显存占用

    大模型本地部署显存不够时,首选量化压缩技术(如4-bit量化),其次通过模型剪枝或更换轻量化架构(如Llama-3-8B替代70B版本)来降低资源需求,若硬件仍不支持,可考虑混合云部署或升级专业显卡,本地部署大语言模型(LLM)已成为许多开发者、研究者及中小企业构建私有化AI应用的主流选择,随着模型参数规模的爆……

    2026年6月19日
    3110
  • 分页类异常类怎么回事?分页处理常见异常及解决方案

    分页类异常通常由服务器响应超时、数据量超出内存限制或分页参数校验失败引起,解决核心在于优化后端查询逻辑与前端渲染策略,在大型Web应用开发中,分页功能是用户交互的基石,但当数据量突破临界值,分页逻辑往往成为系统崩溃的导火索,开发者常遇到的痛点并非简单的“页面加载慢”,而是深层的数据库查询阻塞或内存溢出,理解分页……

    2026年7月1日
    1900
  • 服务器云电脑配置怎么选,哪个品牌性价比高?

    选择服务器云电脑配置,核心是匹配业务需求,在CPU、内存、GPU、存储和带宽之间找到平衡,并优先考虑网络延迟——因为云电脑体验的瓶颈往往在网络而非计算,云电脑服务器配置怎么选:三大核心原则按业务场景匹配计算资源不同工作对云电脑的要求天差地别,办公文档处理只需要2-4核CPU、4-8GB内存,无独立GPU,加上6……

    2026年7月29日
    500
  • idea远程调试程序_如何使用IDEA远程调试

    IDEA远程调试通过配置JVM的JDWP协议,让本地IDE与远程服务器建立Socket连接,从而实现断点调试、变量查看等操作, 本文从零开始,覆盖Tomcat、Spring Boot和Docker场景,并列出常见问题与解决方案,帮助你快速上手远程调试,IDEA远程调试怎么配置?核心步骤拆解远程调试的本质是本地I……

    2026年8月17日
    500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注