服务器上如何部署.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://idctop.com/article/476943.html

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

相关推荐

  • 服务器mac地址能修改吗,修改服务器mac地址教程

    是的,服务器的 MAC 地址是可以修改的,MAC 地址(媒体访问控制地址)虽然通常被烧录在网卡硬件中(称为 OUI 或 burned-in address),但在操作系统层面,它可以通过软件手段进行“覆盖”或“伪装”,这种操作通常被称为 MAC 地址克隆 或 MAC 地址欺骗,如何修改 MAC 地址?修改方法取……

    2026年7月10日
    11900
  • IT运维管理工具有哪些推荐,哪个性价比高?

    IT运维管理工具的选择没有绝对标准,关键在于根据企业IT规模、预算和运维场景,在开源与商业工具之间找到平衡点,同时兼顾自动化与可扩展性,IT运维管理工具哪个好用:功能与场景匹配是关键当你在GitHub或技术论坛搜索“IT运维管理工具哪个好用”时,会发现答案五花八门,没有一款工具能覆盖所有场景,因此选型的第一步是……

    2026年8月17日
    900
  • 什么是ISO制定的网络层次结构模型?, 如何新建层次结构

    ISO制定的网络层次结构模型就是OSI参考模型,它定义了网络通信的七层框架,是任何网络设计必须掌握的基础,新建层次结构则是在此基础上根据实际场景进行定制化分层,比如企业网络的三层架构或物联网的简化模型,网络层次结构模型怎么搭建?从OSI到新建分层不少人问网络层次结构模型怎么搭建,其实答案就藏在OSI模型里,OS……

    2026年8月6日
    600
  • IT工程师和维护工程师必读什么,有哪些必备技能

    对于IT工程师和维护工程师来说,2026年的核心工作不再是“救火式”修电脑,而是围绕系统稳定性、自动化运维和主动预防展开, 不管是刚入行的新人还是干了多年的老手,只有把日常维护的每一个动作变成可重复、可验证的流程,才能真正降低故障率,下面这篇文章,我把这些年踩过的坑和验证过的方法整理成一套可落地的操作框架,希望……

    2026年8月12日
    1600
  • idc机房到底是什么?, 机房管理有哪些注意事项

    IDC机房是互联网数据交换与存储的核心枢纽,专门用于集中放置服务器和网络设备,并通过专业的电力、制冷、网络及安全系统保障业务连续运行;而机房管理则是围绕这些设施展开的日常运维、监控、故障处理与安全防护工作,确保机房始终处于最佳运行状态,IDC机房是什么?——理解它的三大核心很多人第一次接触IDC机房,脑子里浮现……

    2026年8月6日
    400
  • 如何配置IP和主机名映射,具体步骤有哪些?

    配置IP与主机名称映射,本质是通过本地hosts文件或DNS服务器,将IP地址与主机名绑定,实现主机间通过名称通信,避免记忆复杂数字串,为什么需要配置IP与主机名映射在管理多台服务器或搭建本地开发环境时,直接使用IP地址虽然可行,但维护成本高,主机名映射将IP地址与易读的名称关联起来,让团队协作和日常操作更高效……

    2026年8月17日
    700
  • 服务器端口怎么设置最安全?,如何修改服务器默认端口号?

    服务器端口设置指南服务器端口是网络通信的逻辑端点,用于区分同一台服务器上运行的不同服务,正确配置端口既能保证业务正常运行,又能有效提升服务器的安全性,常用端口参考在设置端口前,了解一些行业标准的默认端口有助于快速配置:远程管理:SSH (22)Web 服务:HTTP (80), HTTPS (443)数据库:M……

    2026年7月14日
    800
  • 你真的知道服务器是什么意思吗,怎么配置和使用?

    服务器,简单说就是一台专门用来处理网络请求、存储数据、运行程序的电脑,但它比普通电脑更稳定、更强大,常年不关机,默默为互联网上的各种服务提供支撑,你每次打开网页、刷视频、发邮件,背后都有一台或多台服务器在响应你的请求,服务器和普通电脑到底有什么区别很多人第一次接触服务器,都会觉得它和家用电脑长得差不多——都是主……

    2026年7月28日
    2700
  • 服务器主机箱选购有哪些坑?,哪个品牌性价比高

    开篇服务器主机箱的核心价值在于为高负载硬件提供稳定的散热、扩展和防护,选型时需优先考虑机箱结构、散热方案和材质工艺,而非单纯看价格或外观,服务器主机箱怎么选?三大维度决定可靠性服务器主机箱怎么选是很多初次搭建服务器的用户最头疼的问题,市面上品类繁多,机架式、塔式、短款、深款,不同尺寸和配置对应完全不同的使用场景……

    2026年7月25日
    2400
  • 发短信平台或软件哪个好用?免费发短信平台推荐

    选择短信平台或软件主要取决于你的使用场景(是个人日常沟通,还是企业营销/通知),以下我将分为两大类为你推荐: 企业级短信平台(API/批量发送/验证码/通知)适用于:APP注册验证码、物流通知、营销推广、银行账单等,这类平台通常提供 API 接口,需要技术对接,按条计费,国内主流平台(访问速度快,合规性强)阿里……

    2026年7月12日
    7400

发表回复

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