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.
8.1 KiB
8.1 KiB
单体服务启动指南
English | 简体中文
目录
CLI 快速启动
CLI 环境要求
- .NET 8.0 SDK
- 数据库(支持以下任一种):
- MySQL
- SQL Server
- SQLite
- Oracle
- Oracle Devart
- PostgreSQL
- Redis
安装模板
# 安装微服务模板:lam
dotnet new install LINGYUN.Abp.MicroService.Templates
# 安装单体应用模板:laa
dotnet new install LINGYUN.Abp.AllInOne.Templates
安装 labp 命令行工具
dotnet tool install --global LINGYUN.Abp.Cli
创建项目
# 简写名称:laa (LINGYUN Abp AllInOne)
labp create YourCompanyName.YourProjectName -pk YourPackageName -t laa -o /path/to/output --dbms MySql --cs "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None" --no-random-port
参数说明:
-pk或--package-name: 包名-t或--template: 模板类型,使用laa表示单体应用模板-o或--output: 输出目录--dbms: 数据库类型,支持 MySql、SqlServer、Sqlite、Oracle、OracleDevart、PostgreSql--cs: 数据库连接字符串--no-random-port: 不使用随机端口
运行项目
创建项目后,进入项目目录:
cd /path/to/output/host/YourPackageName.YourCompanyName.YourProjectName.AIO.Host
dotnet run --launch-profile "YourPackageName.YourCompanyName.YourProjectName.Development"
源码启动
环境要求
- .NET 8.0 SDK
- 数据库(支持以下任一种):
- PostgreSQL
- MySQL
- SQL Server(即将支持)
- Redis
- Docker(可选)
项目编译
- 确保已安装 .NET 8.0 SDK
- 在项目根目录执行以下命令编译整个项目:
./build/build-aspnetcore-release.ps1
- 使用 IDE 打开
LY.MicroService.Applications.Single解决方案进行调试或发布
环境配置
必选配置
1. 数据库配置
支持多种数据库,以下是各种数据库的配置示例:
PostgreSQL
# 使用Docker启动PostgreSQL
docker run -d --name postgres \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-e PGDATA=/var/lib/postgresql/data \
postgres:latest
MySQL
# 使用Docker启动MySQL
docker run -d --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:latest
SQL Server
# 使用Docker启动SQL Server
docker run -d --name sqlserver \
-p 1433:1433 \
-e "ACCEPT_EULA=Y" \
-e "SA_PASSWORD=123456" \
mcr.microsoft.com/mssql/server:latest
2. 配置文件修改
需要根据选择的数据库类型修改以下配置文件中的数据库连接字符串:
数据库连接字符串示例:
PostgreSQL:
LY.MicroService.Applications.Single/appsettings.Development.PostgreSql.json
{
"ConnectionStrings": {
"Default": "Host=127.0.0.1;Database=Platform-V70;Username=postgres;Password=123456;"
}
}
MySQL:
LY.MicroService.Applications.Single/appsettings.Development.MySql.json
{
"ConnectionStrings": {
"Default": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None"
}
}
SQL Server:
LY.MicroService.Applications.Single/appsettings.Development.SqlServer.json
{
"ConnectionStrings": {
"Default": "Server=localhost,1433;Database=Platform-V70;User Id=sa;Password=123456;TrustServerCertificate=True"
}
}
3. Redis 服务
# 使用Docker启动Redis
docker run -d --name redis -p 6379:6379 redis:latest
Redis 配置示例:
{
"DistributedLock": {
"IsEnabled": true,
"Redis": {
"Configuration": "127.0.0.1,defaultDatabase=14"
}
},
"Redis": {
"IsEnabled": true,
"Configuration": "127.0.0.1,defaultDatabase=15",
"InstanceName": "LINGYUN.Abp.Application"
},
"Features": {
"Validation": {
"Redis": {
"Configuration": "127.0.0.1,defaultDatabase=13",
"InstanceName": "LINGYUN.Abp.Application"
}
}
}
}
可选配置
以下配置适用于单体分布式架构:
1. MinIO 分布式文件存储
{
"Minio": {
"WithSSL": false,
"BucketName": "blobs",
"EndPoint": "127.0.0.1:19000",
"AccessKey": "{AccessKey}",
"SecretKey": "{SecretKey}",
"CreateBucketIfNotExists": false
}
}
2. Elasticsearch 分布式审计日志
{
"Elasticsearch": {
"NodeUris": "http://127.0.0.1:9200"
}
}
数据库初始化
- 运行数据库迁移脚本:
方案一:
./aspnet-core/migrations/Migrate.ps1
根据命令行提示生成迁移文件和 sql 脚本,然后执行 sql 脚本来创建数据表
方案二(推荐): 以 pgsql 为例
-
选择启动配置
- 选择
LY.MicroService.Applications.Single.DbMigrator/Properties/launchSettings.json中的Single.PostgreSql.Dev
- 选择
-
配置数据初始化:
- 修改
LY.MicroService.Applications.Single.DbMigrator/appsettings.PostgreSql.json中的数据库连接信息
- 修改
-
执行数据迁移:
- 运行
LY.MicroService.Applications.Single.DbMigrator项目 - 等待数据迁移完成,基础表数据将被初始化
- 运行
服务启动
- 选择启动配置
- 选择
LY.MicroService.Applications.Single/Properties/launchSettings.json中的Single.PostgreSql.Dev
- 选择
- 运行
LY.MicroService.Applications.Single项目 - 在浏览器中访问 Swagger 接口文档:
配置说明
基础配置
应用程序配置
{
"App": {
"ShowPii": true,
"SelfUrl": "http://127.0.0.1:30001/",
"CorsOrigins": "http://127.0.0.1:3100,http://127.0.0.1:30001"
}
}
分布式缓存配置
{
"DistributedCache": {
"HideErrors": true,
"KeyPrefix": "LINGYUN.Abp.Application",
"GlobalCacheEntryOptions": {
"SlidingExpiration": "30:00:00",
"AbsoluteExpirationRelativeToNow": "60:00:00"
}
}
}
认证配置
OpenIddict 配置
{
"OpenIddict": {
"Applications": {
"VueAdmin": {
"ClientId": "vue-admin-client",
"RootUrl": "http://127.0.0.1:3100/"
}
},
"Lifetime": {
"AccessToken": "14:00:00",
"IdentityToken": "00:20:00",
"RefreshToken": "14:00:00"
}
}
}
身份认证配置
{
"Identity": {
"Password": {
"RequiredLength": 6,
"RequireNonAlphanumeric": false,
"RequireLowercase": false,
"RequireUppercase": false,
"RequireDigit": false
},
"Lockout": {
"AllowedForNewUsers": false,
"LockoutDuration": 5,
"MaxFailedAccessAttempts": 5
},
"SignIn": {
"RequireConfirmedEmail": false,
"RequireConfirmedPhoneNumber": false
}
}
}
功能开关配置
{
"FeatureManagement": {
"IsDynamicStoreEnabled": true
},
"SettingManagement": {
"IsDynamicStoreEnabled": true
},
"PermissionManagement": {
"IsDynamicStoreEnabled": true
}
}
日志配置
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"System": "Warning",
"Microsoft": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/Info-.log",
"rollingInterval": "Day"
}
}
]
}
}
常见问题
如果遇到问题,请检查:
- 数据库连接字符串是否正确
- 是否选择了正确的数据库提供程序
- Redis 连接是否正常
- 必要的端口是否被占用
- 数据库迁移是否成功完成
- 认证服务器配置是否正确
- CORS 配置是否正确(如果前端访问出现跨域问题)