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

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

相关推荐

  • ico网站图标怎么设置,怎么制作ico图标?

    ico网站图标,也就是favicon,是网站品牌识别和用户体验的关键元素,直接影响用户点击率和搜索引擎信任度,但很多站长却忽略了它的标准尺寸和格式要求,网站图标到底是什么?为什么重要ico网站图标,全称favicon,是显示在浏览器标签页、书签栏、历史记录和地址栏左侧的小图标,它通常是一个正方形的图片,尺寸在1……

    2026年7月30日
    900
  • 大模型KV Cache为何吃显存?大模型推理显存优化方法

    大模型KV Cache占用大量显存的核心原因在于其存储了所有历史Token的中间计算状态,随着对话长度线性甚至二次方增长,这部分静态数据的体积迅速膨胀,最终挤占了模型权重和激活值的计算空间,理解这个问题,不需要深奥的数学推导,只需要把大模型的推理过程想象成一场漫长的“记忆接力”,在生成第一个字时,模型只需要处理……

    2026年6月22日
    1910
  • IT运维监控平台如何实现监控运维,哪个好?

    IT运维监控平台没有绝对的好坏,选型的关键在于匹配你的业务场景、技术栈和预算,与其盲目跟风,不如先搞清楚自己的核心需求,很多团队初期都会纠结选Zabbix、Prometheus这类开源方案,还是直接上Datadog、Splunk这类商业平台,答案取决于你的团队规模、技术能力和运维目标,下面直接切入正题,IT运维……

    2026年8月7日
    500
  • MySQL数据库如何防止误删,MySQL误删数据库怎么恢复?

    防止误删数据库的核心在于构建“权限隔离+操作审计+多级备份”的防御体系,通过限制高危权限、强制执行双人审核机制以及确保 Binlog 开启以实现点到点恢复(PITR),将人为失误的影响降至最低,MySQL防止误删的操作规范在生产环境中,绝大多数的误删行为并非源于技术漏洞,而是由于操作者的习惯问题或环境混淆,建立……

    2026年7月14日
    1500
  • inodes调整3276800怎么做?,容量调整方法?

    调整inode数量到3276800是解决文件系统inode不足的有效手段,但必须与容量调整配合,确保数据安全并满足长期需求,什么时候需要调整inode到3276800文件系统inode耗尽的典型表现服务器无法创建新文件,但df -h显示磁盘仍有大量剩余空间使用df -i命令检查,inode使用率显示100%或接……

    2026年8月17日
    400
  • ai大模型怎么研发

    AI大模型的研发并非单纯写代码,而是数据清洗、算力调度、算法训练与人类反馈强化学习(RLHF)的系统工程,其核心在于通过海量数据训练让模型具备理解、推理和生成能力,AI大模型研发的核心流程拆解研发一个大模型,就像培养一个超级学霸,你需要给它提供最好的教材(数据),最聪明的老师(算法),以及足够的自习时间(算力……

    2026年6月12日
    4000
  • 哪些AI大模型导航网站最好用?好用的AI工具导航推荐

    2026年AI大模型导航网站的核心价值在于通过垂直分类与实时评测,帮助用户在海量工具中快速筛选出符合特定业务场景且性价比最优的解决方案,而非简单罗列链接,为什么你需要专业的AI大模型导航站随着生成式人工智能技术的爆发,市面上的AI工具数量呈指数级增长,对于普通用户甚至企业开发者而言,面对成千上万个功能相似但侧重……

    2026年6月13日
    2300
  • 遭遇DoS攻击怎么办?如何有效防范DoS攻击

    防范DDoS攻击的核心在于构建“云端清洗+本地加固+流量调度”的立体防御体系,而非单纯依赖单一硬件设备,理解DDoS攻击的本质与常见场景很多人提到DDoS(分布式拒绝服务攻击)时,第一反应是黑客在“砸场子”,这种比喻很形象,但不够精准,DDoS的本质是攻击者利用海量僵尸网络资源,向目标服务器发送超出其处理能力的……

    2026年7月11日
    17400
  • 如何让AI使用AI大模型,AI大模型调用方法有哪些

    让AI使用AI大模型的核心在于构建“智能体工作流”,即通过编排工具、记忆库和逻辑链,将单一的大语言模型转化为能自主规划、执行复杂任务的智能系统,而非仅仅依赖人工输入提示词,过去我们习惯把大模型当作一个超级搜索引擎或聊天机器人,输入问题,等待回答,这种模式效率低下且容易出错,2026年的技术共识已经转向“Agen……

    2026年6月16日
    4400
  • 如何搭建服务器内网?内网穿透搭建教程

    在2026年的今天,搭建服务器内网的核心在于利用低成本硬件构建高可用、易维护的私有云环境,通过虚拟化技术实现资源隔离与高效调度,从而彻底摆脱对公有云的依赖,确保数据主权与隐私安全,随着数字化转型的深入,越来越多的企业和个人开始意识到,将核心数据托管在第三方公有云上存在潜在的安全风险和长期的成本压力,构建一个属于……

    2026年7月12日
    3500

发表回复

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