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

在服务器上部署 .NET 网站(通常指 ASP.NET Core 应用)是一个标准且高效的过程,由于 .NET Core/.NET 5+ 是跨平台的,你可以选择 Windows ServerLinux (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)

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

上传文件

使用 scprsync 将发布文件夹上传到服务器:

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 yourappnetstat -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

相关推荐

  • 服务器与客户端连路由器怎么设置?路由器连接不稳定怎么办

    服务器与客户端连接路由器的核心在于将服务器配置为固定IP并开启端口映射,同时确保客户端在同一局域网或通过公网IP访问,从而建立稳定的数据通道,在构建本地服务或家庭实验室时,我们常遇到服务器能ping通网关,但外部设备无法访问的情况,这通常不是硬件故障,而是网络地址转换(NAT)机制在起作用,路由器作为内外网之间……

    2026年7月7日
    16200
  • 大模型张量并行怎么配置?分布式训练显存优化技巧

    大模型分布式训练中的张量并行(Tensor Parallelism)通过将单个层的计算切分到多张显卡上,显著降低了显存占用并提升了推理与训练吞吐量,是目前突破单卡显存瓶颈的核心技术路径,随着大语言模型参数规模突破千亿甚至万亿大关,单机单卡的显存容量已无法容纳完整的模型权重,传统的模型并行或数据并行策略在面对超大……

    2026年6月17日
    3000
  • 服务器一般装什么系统好?服务器操作系统怎么选

    服务器通常首选安装CentOS、Ubuntu Server或Windows Server,具体取决于业务对稳定性、成本及图形界面的需求,目前Linux系占据绝对主导地位,在云计算和数字化转型的浪潮下,服务器操作系统的选择早已不是简单的“装个系统”那么简单,它直接决定了业务的稳定性、安全性以及后续的运维成本,很多……

    2026年7月5日
    17400
  • 服务器怎么用键盘重启?服务器键盘重启快捷键

    在服务器无法通过图形界面响应时,最直接的键盘重启方式是使用组合键发送硬件级信号,或登录控制台执行系统级重启命令,具体操作取决于服务器类型及远程管理权限,服务器重启并非简单的按下电源键,而是一场涉及硬件指令、操作系统内核以及远程管理通道的精密协作,许多运维新手在面对黑屏或卡顿的服务器时,第一反应是寻找物理电源键……

    2026年7月3日
    14400
  • 如何用FreeBSD搭建Web系统?FreeBSD搭建网站教程

    在FreeBSD上搭建Web系统,核心在于利用其稳定的内核与Jails容器技术,通过pkg包管理器安装Nginx或Apache,配合PostgreSQL数据库,即可构建出高安全、低延迟的生产级环境,虽然初期配置门槛略高于Linux,但长期运维成本极低,很多人提到Web服务器,第一反应往往是Ubuntu或Cent……

    2026年7月7日
    3000
  • 服务器如何识别客户端身份?服务器识别客户端IP地址的方法

    服务器通过TCP三次握手建立连接,利用IP地址定位网络位置,并通过TLS/SSL证书验证身份,最终在应用层解析HTTP请求头中的Cookie、Token或Session ID来精准识别具体客户端,当你在浏览器输入网址并按下回车,背后的网络世界瞬间开启了一场精密的“认亲”流程,这并非简单的点对点连线,而是一套层层……

    2026年7月7日
    15800
  • AI大模型应用落地难吗?如何低成本实现AI大模型应用落地

    AI大模型应用落地的核心在于从“技术演示”转向“业务闭环”,企业需通过私有化部署、RAG架构优化及垂直场景微调,解决幻觉问题并实现降本增效,而非盲目追求通用大模型的参数规模,当前,许多企业在引入AI时容易陷入“为了AI而AI”的误区,导致投入巨大却收效甚微,真正的落地并非简单的API调用,而是将大模型能力深度嵌……

    2026年6月13日
    2400
  • 华为AI大模型怎么下载?华为大模型官方下载渠道

    华为AI大模型无法像普通软件那样直接“下载”到本地电脑运行,用户需通过华为云ModelArts平台、MindSpore框架或开源社区获取模型权重,并依赖高性能硬件进行部署,对于普通用户而言,理解“下载”这一动作背后的技术逻辑至关重要,在2026年的技术环境下,大模型不再是一个简单的安装包,而是一套复杂的系统工程……

    2026年6月13日
    3220
  • AI大模型GTR是什么?GTR与ChatGPT哪个更强大

    AI大模型GTR并非单一软件,而是指代具备高吞吐、低延迟及强逻辑推理能力的下一代生成式AI技术架构,其核心价值在于通过优化上下文窗口与思维链技术,显著提升复杂任务的处理效率与准确性,在2026年的数字生态中,企业和个人对人工智能的需求已从“尝鲜”转向“深度集成”,所谓的GTR(Generation, Trans……

    2026年6月16日
    2100
  • format格式化是什么意思?format格式化函数怎么用

    format格式化并非简单的代码规范,而是通过标准化的结构标签与语义化标记,显著提升搜索引擎对页面内容的理解效率,从而在2026年智能检索环境中获得更精准的流量匹配,在信息过载的数字时代,用户与机器都在寻找最高效的信息获取路径,对于内容创作者而言,仅仅拥有优质的文字已经不足以支撑高排名,必须借助于严谨的HTML……

    2026年7月9日
    17200

发表回复

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