# 单体部署 **本文档中引用的文件** - [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 前端框架,实现了现代化的企业级应用架构。 ## 项目结构 项目采用分层架构设计,主要分为以下几个部分: ```mermaid 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](file://docker-compose.yml) - [aspnet-core](file://aspnet-core) **本节来源** - [README.md](file://README.md#L0-L321) ## 核心组件 系统的核心组件包括身份认证服务器、后台管理API主机、平台服务等。这些服务通过CAP(分布式事件总线)进行通信,并使用Elsa工作流引擎实现业务流程自动化。数据库采用MySQL,缓存使用Redis,消息队列使用RabbitMQ。所有服务共享同一套配置体系,通过`appsettings.json`及其环境变体进行配置管理。 **本节来源** - [appsettings.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.json#L0-L95) - [appsettings.Development.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json#L0-L199) ## 架构概述 系统采用单体架构部署模式,所有微服务模块被打包为一个独立的应用程序运行。 ```mermaid 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](file://docker-compose.yml) - [docker-compose.override.yml](file://docker-compose.override.yml) ## 详细组件分析 ### 应用程序配置分析 系统使用ASP.NET Core的标准配置系统,支持多环境配置文件。 #### 配置文件结构 ```mermaid 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](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.json#L0-L95) - [appsettings.Development.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json#L0-L199) #### 配置加载流程 ```mermaid flowchart TD Start([启动应用]) --> LoadJson["加载 appsettings.json"] LoadJson --> LoadEnv["加载 appsettings.{Environment}.json"] LoadEnv --> LoadUserSecrets["加载用户机密 (开发环境)"] LoadUserSecrets --> LoadEnvVars["加载环境变量"] LoadEnvVars --> LoadCommandLine["加载命令行参数"] LoadCommandLine --> UseConfig["使用最终配置"] UseConfig --> End([应用运行]) ``` **本节来源** - [appsettings.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.json#L0-L95) - [appsettings.Development.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json#L0-L199) ### 部署流程分析 #### 数据库迁移流程 ```mermaid 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](file://aspnet-core/migrate-database.bat#L0-L12) - [migrate-db-cmd.bat](file://aspnet-core/migrate-db-cmd.bat#L0-L31) #### 服务启动流程 ```mermaid 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](file://starter/80.start-host.cmd#L0-L8) - [start-http-api-host.bat](file://aspnet-core/start-http-api-host.bat#L0-L36) ## 依赖分析 系统依赖关系复杂,涉及多个外部组件和服务。 ```mermaid 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](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json#L0-L199) - [docker-compose.yml](file://docker-compose.yml) **本节来源** - [appsettings.Development.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json#L0-L199) - [docker-compose.yml](file://docker-compose.yml) ## 性能考虑 ### 线程池配置 系统通过ASP.NET Core内置的线程池管理机制进行性能优化。建议在生产环境中根据服务器CPU核心数调整线程池大小: ```json { "System": { "Threading": { "ThreadPool": { "MinThreads": 100, "MaxThreads": 200 } } } } ``` ### 内存限制设置 使用Docker部署时,应设置合理的内存限制: ```yaml services: applications.single: mem_limit: 2g mem_reservation: 1g ``` ### 请求队列管理 系统通过Serilog日志系统和CAP消息队列实现请求的异步处理和流量削峰: ```mermaid flowchart LR A[客户端请求] --> B{请求类型} B --> |同步| C[直接处理] B --> |异步| D[放入CAP消息队列] D --> E[后台工作者处理] E --> F[更新状态] F --> G[通知客户端] ``` **本节来源** - [appsettings.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.json#L0-L95) - [appsettings.Development.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json#L0-L199) ## 故障排除指南 ### 常见问题及解决方案 1. **数据库迁移失败** - 检查数据库连接字符串是否正确 - 确认数据库服务是否已启动 - 查看`Logs/Error-.log`中的详细错误信息 2. **服务无法启动** - 检查端口是否被占用 - 确认依赖服务(Redis、RabbitMQ)是否正常运行 - 查看控制台输出的错误信息 3. **配置不生效** - 确认环境变量`ASPNETCORE_ENVIRONMENT`设置正确 - 检查配置文件命名是否符合规范 - 验证配置项名称拼写是否正确 **本节来源** - [README.md](file://README.md#L0-L321) - [deploy.ps1](file://deploy/deploy.ps1#L0-L59) ## 结论 本文档详细介绍了基于ABP框架的单体应用部署方案。通过合理的配置管理、自动化部署脚本和性能调优策略,可以实现系统的高效部署和稳定运行。建议在生产环境中使用Docker容器化部署,结合CI/CD流水线实现自动化发布,以提高部署效率和系统可靠性。