这是基于vue-vben-admin 模板适用于abp vNext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

9.1 KiB

单体部署

**本文档中引用的文件** - [appsettings.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.json) - [appsettings.Development.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json) - [migrate-database.bat](file://aspnet-core/migrate-database.bat) - [migrate-db-cmd.bat](file://aspnet-core/migrate-db-cmd.bat) - [start-http-api-host.bat](file://aspnet-core/start-http-api-host.bat) - [80.start-host.cmd](file://starter/80.start-host.cmd) - [deploy.ps1](file://deploy/deploy.ps1) - [docker-compose.yml](file://docker-compose.yml) - [docker-compose.override.yml](file://docker-compose.override.yml)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本项目是一个基于 ABP 框架的后台管理系统,支持单体服务和微服务两种部署模式。本文档重点介绍单体服务的完整部署流程,包括应用程序的编译、打包、发布、配置管理、服务化部署以及性能调优等关键环节。系统采用 .NET 6 技术栈,结合 Vue Vben Admin 前端框架,实现了现代化的企业级应用架构。

项目结构

项目采用分层架构设计,主要分为以下几个部分:

graph TD
A[根目录] --> B[aspnet-core]
A --> C[deploy]
A --> D[gateways]
A --> E[starter]
A --> F[docker-compose.yml]
B --> B1[framework]
B --> B2[migrations]
B --> B3[modules]
B --> B4[services]
B2 --> B21[LY.MicroService.Applications.Single.DbMigrator]
B4 --> B41[LY.MicroService.Applications.Single]
B4 --> B42[LY.MicroService.AuthServer]
B4 --> B43[LY.MicroService.BackendAdmin.HttpApi.Host]
C --> C1[deploy.ps1]
D --> D1[web\LY.MicroService.ApiGateway]
E --> E1[80.start-host.cmd]
E --> E2[02.migrate-db.cmd]

图示来源

  • docker-compose.yml
  • aspnet-core

本节来源

  • README.md

核心组件

系统的核心组件包括身份认证服务器、后台管理API主机、平台服务等。这些服务通过CAP(分布式事件总线)进行通信,并使用Elsa工作流引擎实现业务流程自动化。数据库采用MySQL,缓存使用Redis,消息队列使用RabbitMQ。所有服务共享同一套配置体系,通过appsettings.json及其环境变体进行配置管理。

本节来源

  • appsettings.json
  • appsettings.Development.json

架构概述

系统采用单体架构部署模式,所有微服务模块被打包为一个独立的应用程序运行。

graph LR
Client[客户端] --> Gateway[API网关]
Gateway --> Auth[身份认证服务]
Gateway --> Admin[后台管理服务]
Gateway --> Platform[平台服务]
Gateway --> Localization[本地化服务]
Auth --> DB[(MySQL)]
Admin --> DB
Platform --> DB
Localization --> DB
Auth --> Cache[(Redis)]
Admin --> Cache
Platform --> Cache
Auth --> MQ[(RabbitMQ)]
Admin --> MQ
Platform --> MQ

图示来源

  • docker-compose.yml
  • docker-compose.override.yml

详细组件分析

应用程序配置分析

系统使用ASP.NET Core的标准配置系统,支持多环境配置文件。

配置文件结构

classDiagram
class AppSettings {
+App App
+ConnectionStrings ConnectionStrings
+Serilog Serilog
+CAP CAP
+Redis Redis
+DistributedCache DistributedCache
+OpenIddict OpenIddict
+IdentityServer IdentityServer
}
class App {
+string Name
+string SslFile
+string SslPassword
}
class ConnectionStrings {
+string Default
}
class Serilog {
+MinimumLevel MinimumLevel
+string[] Enrich
+WriteTo[] WriteTo
}
AppSettings --> App : 包含
AppSettings --> ConnectionStrings : 包含
AppSettings --> Serilog : 包含
AppSettings --> CAP : 包含
AppSettings --> Redis : 包含

图示来源

  • appsettings.json
  • appsettings.Development.json

配置加载流程

flowchart TD
Start([启动应用]) --> LoadJson["加载 appsettings.json"]
LoadJson --> LoadEnv["加载 appsettings.{Environment}.json"]
LoadEnv --> LoadUserSecrets["加载用户机密 (开发环境)"]
LoadUserSecrets --> LoadEnvVars["加载环境变量"]
LoadEnvVars --> LoadCommandLine["加载命令行参数"]
LoadCommandLine --> UseConfig["使用最终配置"]
UseConfig --> End([应用运行])

本节来源

  • appsettings.json
  • appsettings.Development.json

部署流程分析

数据库迁移流程

sequenceDiagram
participant User as 开发者
participant Script as migrate-database.bat
participant Migrator as DbMigrator
User->>Script : 执行 migrate-database.bat
Script->>Script : 清屏并显示提示
loop 每个迁移器
Script->>Migrator : 调用 migrate-db-cmd.bat
Migrator->>Migrator : 执行 dotnet run --no-build
Migrator->>Script : 返回迁移结果
end
Script->>User : 显示完成信息
Script->>Script : 终止所有 dotnet 进程

图示来源

  • migrate-database.bat
  • migrate-db-cmd.bat

服务启动流程

flowchart TD
A[执行 80.start-host.cmd] --> B[设置延迟时间 stime]
B --> C{遍历所有 .bat 文件}
C --> D[启动每个服务脚本]
D --> E[等待 stime 秒]
E --> C
C --> F[所有服务启动完毕]

图示来源

  • 80.start-host.cmd
  • start-http-api-host.bat

依赖分析

系统依赖关系复杂,涉及多个外部组件和服务。

graph TD
A[LY.MicroService.Applications.Single] --> B[MySQL]
A --> C[Redis]
A --> D[RabbitMQ]
A --> E[Elasticsearch]
A --> F[CAP]
A --> G[Elsa]
A --> H[Quartz]
B --> I[数据库持久化]
C --> J[分布式缓存]
D --> K[消息队列]
E --> L[日志搜索]
F --> M[事件总线]
G --> N[工作流引擎]
H --> O[定时任务]

图示来源

  • appsettings.Development.json
  • docker-compose.yml

本节来源

  • appsettings.Development.json
  • docker-compose.yml

性能考虑

线程池配置

系统通过ASP.NET Core内置的线程池管理机制进行性能优化。建议在生产环境中根据服务器CPU核心数调整线程池大小:

{
  "System": {
    "Threading": {
      "ThreadPool": {
        "MinThreads": 100,
        "MaxThreads": 200
      }
    }
  }
}

内存限制设置

使用Docker部署时,应设置合理的内存限制:

services:
  applications.single:
    mem_limit: 2g
    mem_reservation: 1g

请求队列管理

系统通过Serilog日志系统和CAP消息队列实现请求的异步处理和流量削峰:

flowchart LR
A[客户端请求] --> B{请求类型}
B --> |同步| C[直接处理]
B --> |异步| D[放入CAP消息队列]
D --> E[后台工作者处理]
E --> F[更新状态]
F --> G[通知客户端]

本节来源

  • appsettings.json
  • appsettings.Development.json

故障排除指南

常见问题及解决方案

  1. 数据库迁移失败

    • 检查数据库连接字符串是否正确
    • 确认数据库服务是否已启动
    • 查看Logs/Error-.log中的详细错误信息
  2. 服务无法启动

    • 检查端口是否被占用
    • 确认依赖服务(Redis、RabbitMQ)是否正常运行
    • 查看控制台输出的错误信息
  3. 配置不生效

    • 确认环境变量ASPNETCORE_ENVIRONMENT设置正确
    • 检查配置文件命名是否符合规范
    • 验证配置项名称拼写是否正确

本节来源

  • README.md
  • deploy.ps1

结论

本文档详细介绍了基于ABP框架的单体应用部署方案。通过合理的配置管理、自动化部署脚本和性能调优策略,可以实现系统的高效部署和稳定运行。建议在生产环境中使用Docker容器化部署,结合CI/CD流水线实现自动化发布,以提高部署效率和系统可靠性。