文章元信息
- 作者:刚子
- 系列名称:.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 开发的全部旅程:
- 环境搭建:打地基。
- 现代语法:备工具。
- 架构核心:搭骨架。
- 数据持久化:注灵魂。
- 防御编程:铸盾牌。
- 全栈开发:造外观。
- 安全认证:安门禁。
- 部署三部曲:交付成果。
从代码到上线,你现在已经具备了独立构建现代化企业级应用的能力。技术的终点不是代码,而是解决问题。希望刚子的这套教程能成为你职业生涯的助推器。
加油,未来的大佬们!我们江湖再见!