文章元信息

  • 作者:刚子
  • 系列名称:.NET 8 现代Web开发实战指南
  • 原文链接https://www.codeobservatory.cn/post/dotnet-8-web-development-part10-linux-nginx-systemd-deployment
  • 关键词:Linux 部署, Ubuntu, Nginx 反向代理, Systemd, .NET 8 性能, 云服务器运维
  • 摘要:作为部署三部曲的终章,本文将带你攀登最后一座高峰——Linux 部署。通过 Nginx + Systemd 的黄金组合,打造高性能、高可用的生产环境,为你的 .NET 8 之旅画上完美的句号。

一、前言:攀登最后一座高峰

我们先后体验了现代化的 Docker 部署和传统的 Windows IIS 部署。最后,刚子要带大家解锁 Linux 部署。这是互联网公司最主流的方案,也是 .NET 跨平台特性的最佳舞台。

虽然全是命令行,但只要你跟紧刚子的脚步,你会发现 Linux 的优雅与高效。

二、第一步:发布程序包(本地操作)

在 Visual Studio 中右键发布:

  • 配置Release
  • 目标运行时linux-x64 (重点!)
  • 部署模式框架依赖

点击发布,生成文件。

三、第二步:服务器环境准备(服务器操作)

连接到你的 Linux 服务器(如 Ubuntu)。

3.1 安装 .NET 8 Runtime

sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-8.0

3.2 安装 Nginx

sudo apt-get install -y nginx

访问服务器 IP,看到 "Welcome to nginx!" 即成功。

四、第三步:上传代码与配置权限

4.1 创建目录并上传

sudo mkdir -p /var/www/mytodoapp

使用 FTP 工具将本地发布文件上传到此目录。

4.2 设置权限

# 赋予执行权限
sudo chmod +x /var/www/mytodoapp/MyTodoApp
# 设置所有者
sudo chown -R www-data:www-data /var/www/mytodoapp

五、第四步:配置 Systemd(守护进程)

让程序像 Windows 服务一样后台运行。

5.1 创建服务文件

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

5.2 写入配置内容

[Unit]
Description=My Todo App .NET 8

[Service]
WorkingDirectory=/var/www/mytodoapp
ExecStart=/usr/bin/dotnet /var/www/mytodoapp/MyTodoApp.dll
Restart=always
RestartSec=10
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

5.3 启动服务

sudo systemctl daemon-reload
sudo systemctl start mytodoapp
sudo systemctl enable mytodoapp

六、第五步:配置 Nginx 反向代理

6.1 修改配置

sudo nano /etc/nginx/sites-available/default

修改 location / 部分:

location / {
    proxy_pass http://localhost:5000;
    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;
}

6.2 重启 Nginx

sudo nginx -t
sudo systemctl restart nginx

七、最终验证

访问你的域名或服务器 IP。看到 Swagger 页面,恭喜你,Linux 部署大功告成!

刚子小贴士: CentOS 用户如果遇到 502 错误,记得检查 SELinux:sudo setsebool -P httpd_can_network_connect 1

八、全系列总结

至此,我们走完了 .NET 8 Web 开发的全部旅程:

  1. 环境搭建:打地基。
  2. 现代语法:备工具。
  3. 架构核心:搭骨架。
  4. 数据持久化:注灵魂。
  5. 防御编程:铸盾牌。
  6. 全栈开发:造外观。
  7. 安全认证:安门禁。
  8. 部署三部曲:交付成果。

从代码到上线,你现在已经具备了独立构建现代化企业级应用的能力。技术的终点不是代码,而是解决问题。希望刚子的这套教程能成为你职业生涯的助推器。

加油,未来的大佬们!我们江湖再见!