同步配置与运维TODO
This commit is contained in:
@@ -508,6 +508,14 @@ crontab -e
|
||||
0 2 * * * /path/to/backup_db.sh >> /var/log/backup.log 2>&1
|
||||
```
|
||||
|
||||
## TODO:基础设施部署脚本
|
||||
|
||||
- [ ] PostgreSQL 主从:整理主库/从库初始化脚本、basebackup 步骤与故障切换手册。
|
||||
- [ ] Redis 哨兵/集群:补充 redis.conf/sentinel.conf 模板以及一主两从搭建命令。
|
||||
- [ ] RabbitMQ:编写单节点到镜像队列的安装脚本,记录 VHost、用户、权限、监控等操作。
|
||||
- [ ] 腾讯云 COS:整理桶创建、ACL、CDN 绑定与密钥轮换流程,并提供 coscmd/SDK 示例。
|
||||
- [ ] Hangfire 存储:确认 PostgreSQL Schema 初始化脚本,补充定期备份、清理、监控的 SOP。
|
||||
|
||||
## 6. Redis部署
|
||||
|
||||
### 6.1 Redis哨兵模式
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
## 基础信息
|
||||
- IP: 47.94.199.87
|
||||
- 账户: root
|
||||
- 密码: C3SyytfBPAU#Ts8a
|
||||
- 密码: cJ5q2k2iW7XnMA^!
|
||||
- 配置: 2 核 CPU / 2 GB 内存(阿里云)
|
||||
- 地点: 北京
|
||||
- 用途: 网关
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
- IP: 120.53.222.17
|
||||
- 账户: ubuntu
|
||||
- 密码: P3y$nJt#zaa4%fh5
|
||||
- 配置: 2 核 CPU / 4 GB 内存(轻量应用服务器,腾讯云)
|
||||
- 配置: 2 核 CPU / 4 GB 内存
|
||||
- 地点: 北京
|
||||
- 用途: 主 PostgreSQL / 数据库服务器
|
||||
- 到期时间: 2026-11-26 11:22:01
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# 腾讯云主应用服务器
|
||||
|
||||
## 基础信息
|
||||
- IP: 43.142.81.224
|
||||
- 账户: ubuntu
|
||||
- 密码: hN~~^2NZ+s_%A%tk
|
||||
- 配置: 4 核 CPU / 4 GB 内存(轻量应用服务器,腾讯云)
|
||||
- 地点: 上海
|
||||
- 用途: 主应用服务器
|
||||
- 到期时间: 2026-11-21
|
||||
|
||||
## 建议补充
|
||||
- 系统版本: 待补充(如 `cat /etc/os-release`)
|
||||
- 带宽/磁盘: 待补充
|
||||
- 安全组/开放端口: 待补充
|
||||
- 备份与监控: 待补充
|
||||
- 变更记录: 待补充
|
||||
@@ -1,18 +0,0 @@
|
||||
# 天翼云主 PostgreSQL 服务器
|
||||
|
||||
## 基础信息
|
||||
- IP: 49.7.179.246
|
||||
- 账户: root
|
||||
- 密码: 7zE&84XI6~w57W7N
|
||||
- 配置: 4 核 CPU / 8 GB 内存(天翼云)
|
||||
- 地点: 北京
|
||||
- 用途: 主 PostgreSQL 服务器
|
||||
- 到期时间: 2027-10-04 17:17:57
|
||||
|
||||
## 建议补充
|
||||
- 系统版本: 待补充(如 `cat /etc/os-release`)
|
||||
- 带宽/磁盘: 待补充
|
||||
- 数据目录: 待补充(如 `/var/lib/postgresql`)
|
||||
- 数据备份/监控: 待补充
|
||||
- 安全组/开放端口: 待补充
|
||||
- 变更记录: 待补充
|
||||
@@ -1,13 +1,13 @@
|
||||
# 腾讯云 Redis/RabbitMQ 服务器(待购)
|
||||
# 腾讯云 Redis/RabbitMQ 服务器
|
||||
|
||||
## 基础信息(待补充)
|
||||
- IP: 待补充
|
||||
- 账户: 待补充
|
||||
- 密码: 待补充
|
||||
- 配置: 2 核 CPU / 4 GB 内存(腾讯云)
|
||||
- 地点: 待补充
|
||||
- IP: 49.232.6.45
|
||||
- 账户: ubuntu
|
||||
- 密码: Z7NsRjT&XnWg7%7X
|
||||
- 配置: 2 核 CPU / 4 GB 内存
|
||||
- 地点: 北京
|
||||
- 用途: Redis 与 RabbitMQ
|
||||
- 到期时间: 待补充
|
||||
- 到期时间: 2028-11-26
|
||||
|
||||
## 建议补充
|
||||
- 系统版本: 待补充(如 `cat /etc/os-release`)
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
<<<<<<< HEAD
|
||||
# 腾讯云 Redis/RabbitMQ 服务器(待购)
|
||||
|
||||
## 基础信息(待补充)
|
||||
- IP: 待补充
|
||||
- 账户: 待补充
|
||||
- 密码: 待补充
|
||||
- 配置: 2 核 CPU / 4 GB 内存(腾讯云)
|
||||
- 地点: 待补充
|
||||
- 用途: Redis 与 RabbitMQ
|
||||
- 到期时间: 待补充
|
||||
=======
|
||||
# 腾讯云 Redis/RabbitMQ 服务器(待购)
|
||||
|
||||
## 基础信息(待补充)
|
||||
- IP: 49.232.6.45
|
||||
- 账户: ubuntu
|
||||
- 密码: Z7NsRjT&XnWg7%7X
|
||||
- 配置: 2 核 CPU / 4 GB 内存(腾讯云)
|
||||
- 地点: 北京
|
||||
- 用途: Redis 与 RabbitMQ
|
||||
- 到期时间: 2028-11-26
|
||||
>>>>>>> dc9b853c5c2f2aa40c102df54f9097c31fddf97b
|
||||
|
||||
## 建议补充
|
||||
- 系统版本: 待补充(如 `cat /etc/os-release`)
|
||||
- 带宽/磁盘: 待补充
|
||||
- 安全组/开放端口: 待补充(Redis 6379,RabbitMQ 5672/15672 等)
|
||||
- 数据持久化与备份: 待补充
|
||||
- 监控与告警: 待补充
|
||||
- 变更记录: 待补充
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
>>>>>>> dc9b853c5c2f2aa40c102df54f9097c31fddf97b
|
||||
@@ -1,18 +0,0 @@
|
||||
# 腾讯云 Redis/RabbitMQ 服务器(待购)
|
||||
|
||||
## 基础信息(待补充)
|
||||
- IP: 待补充
|
||||
- 账户: 待补充
|
||||
- 密码: 待补充
|
||||
- 配置: 2 核 CPU / 4 GB 内存(腾讯云)
|
||||
- 地点: 待补充
|
||||
- 用途: Redis 与 RabbitMQ
|
||||
- 到期时间: 待补充
|
||||
|
||||
## 建议补充
|
||||
- 系统版本: 待补充(如 `cat /etc/os-release`)
|
||||
- 带宽/磁盘: 待补充
|
||||
- 安全组/开放端口: 待补充(Redis 6379,RabbitMQ 5672/15672 等)
|
||||
- 数据持久化与备份: 待补充
|
||||
- 监控与告警: 待补充
|
||||
- 变更记录: 待补充
|
||||
@@ -1,19 +0,0 @@
|
||||
# 腾讯云 Redis/RabbitMQ 服务器(待购)
|
||||
|
||||
## 基础信息(待补充)
|
||||
- IP: 49.232.6.45
|
||||
- 账户: ubuntu
|
||||
- 密码: Z7NsRjT&XnWg7%7X
|
||||
- 配置: 2 核 CPU / 4 GB 内存(腾讯云)
|
||||
- 地点: 北京
|
||||
- 用途: Redis 与 RabbitMQ
|
||||
- 到期时间: 2028-11-26
|
||||
|
||||
## 建议补充
|
||||
- 系统版本: 待补充(如 `cat /etc/os-release`)
|
||||
- 带宽/磁盘: 待补充
|
||||
- 安全组/开放端口: 待补充(Redis 6379,RabbitMQ 5672/15672 等)
|
||||
- 数据持久化与备份: 待补充
|
||||
- 监控与告警: 待补充
|
||||
- 变更记录: 待补充
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
"Database": {
|
||||
"DataSources": {
|
||||
"AppDatabase": {
|
||||
"Write": "Host=localhost;Port=5432;Database=takeout_saas_app;Username=app_user;Password=app_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=localhost;Port=5432;Database=takeout_saas_app;Username=app_user;Password=app_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
},
|
||||
"IdentityDatabase": {
|
||||
"Write": "Host=localhost;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=identity_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=localhost;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=identity_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
@@ -21,12 +21,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Redis": "localhost:6379,abortConnect=false",
|
||||
"Redis": "49.232.6.45:6379,password=MsuMshk112233,abortConnect=false",
|
||||
"Identity": {
|
||||
"Jwt": {
|
||||
"Issuer": "takeout-saas",
|
||||
"Audience": "takeout-saas-clients",
|
||||
"Secret": "ReplaceWithA32CharLongSecretKey_____",
|
||||
"Secret": "psZEx_O##]Mq(W.1$?8Aia*LM03sXGGx",
|
||||
"AccessTokenExpirationMinutes": 120,
|
||||
"RefreshTokenExpirationMinutes": 10080
|
||||
},
|
||||
@@ -54,14 +54,14 @@
|
||||
},
|
||||
"Storage": {
|
||||
"Provider": "TencentCos",
|
||||
"CdnBaseUrl": "https://cdn.example.com",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"TencentCos": {
|
||||
"SecretId": "COS_SECRET_ID",
|
||||
"SecretKey": "COS_SECRET_KEY",
|
||||
"Region": "ap-guangzhou",
|
||||
"Bucket": "takeout-bucket-123456",
|
||||
"Endpoint": "",
|
||||
"CdnBaseUrl": "https://cdn.example.com",
|
||||
"SecretId": "AKID52mHageV8ZnnY5NRL3Xq270fAcw2vb5R",
|
||||
"SecretKey": "B8sPitsiEXcS4ScaMvGMErFOL3ZqsgFa",
|
||||
"Region": "ap-beijing",
|
||||
"Bucket": "saas2025-1388556178",
|
||||
"Endpoint": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"UseHttps": true,
|
||||
"ForcePathStyle": false
|
||||
},
|
||||
@@ -101,7 +101,7 @@
|
||||
"SecretKey": "TENCENT_SMS_SECRET_KEY",
|
||||
"SdkAppId": "1400000000",
|
||||
"SignName": "外卖SaaS",
|
||||
"Region": "ap-guangzhou",
|
||||
"Region": "ap-beijing",
|
||||
"Endpoint": "https://sms.tencentcloudapi.com"
|
||||
},
|
||||
"Aliyun": {
|
||||
@@ -124,17 +124,17 @@
|
||||
}
|
||||
},
|
||||
"RabbitMQ": {
|
||||
"Host": "localhost",
|
||||
"Host": "49.232.6.45",
|
||||
"Port": 5672,
|
||||
"Username": "admin",
|
||||
"Password": "password",
|
||||
"Username": "Admin",
|
||||
"Password": "MsuMshk112233",
|
||||
"VirtualHost": "/",
|
||||
"Exchange": "takeout.events",
|
||||
"ExchangeType": "topic",
|
||||
"PrefetchCount": 20
|
||||
},
|
||||
"Scheduler": {
|
||||
"ConnectionString": "Host=localhost;Port=5432;Database=takeout_saas_scheduler;Username=app_user;Password=app_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"ConnectionString": "Host=120.53.222.17;Port=5432;Database=takeout_saas_scheduler;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"WorkerCount": 5,
|
||||
"DashboardEnabled": false,
|
||||
"DashboardPath": "/hangfire"
|
||||
|
||||
142
src/Api/TakeoutSaaS.AdminApi/appsettings.Production.json
Normal file
142
src/Api/TakeoutSaaS.AdminApi/appsettings.Production.json
Normal file
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"Database": {
|
||||
"DataSources": {
|
||||
"AppDatabase": {
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
},
|
||||
"IdentityDatabase": {
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"Redis": "49.232.6.45:6379,password=MsuMshk112233,abortConnect=false",
|
||||
"Identity": {
|
||||
"Jwt": {
|
||||
"Issuer": "takeout-saas",
|
||||
"Audience": "takeout-saas-clients",
|
||||
"Secret": "psZEx_O##]Mq(W.1$?8Aia*LM03sXGGx",
|
||||
"AccessTokenExpirationMinutes": 120,
|
||||
"RefreshTokenExpirationMinutes": 10080
|
||||
},
|
||||
"LoginRateLimit": {
|
||||
"WindowSeconds": 60,
|
||||
"MaxAttempts": 5
|
||||
},
|
||||
"RefreshTokenStore": {
|
||||
"Prefix": "identity:refresh:"
|
||||
},
|
||||
"AdminSeed": {
|
||||
"Users": []
|
||||
}
|
||||
},
|
||||
"Dictionary": {
|
||||
"Cache": {
|
||||
"SlidingExpiration": "00:30:00"
|
||||
}
|
||||
},
|
||||
"Tenancy": {
|
||||
"TenantIdHeaderName": "X-Tenant-Id",
|
||||
"TenantCodeHeaderName": "X-Tenant-Code",
|
||||
"IgnoredPaths": [ "/health" ],
|
||||
"RootDomain": ""
|
||||
},
|
||||
"Storage": {
|
||||
"Provider": "TencentCos",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"TencentCos": {
|
||||
"SecretId": "AKID52mHageV8ZnnY5NRL3Xq270fAcw2vb5R",
|
||||
"SecretKey": "B8sPitsiEXcS4ScaMvGMErFOL3ZqsgFa",
|
||||
"Region": "ap-beijing",
|
||||
"Bucket": "saas2025-1388556178",
|
||||
"Endpoint": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"UseHttps": true,
|
||||
"ForcePathStyle": false
|
||||
},
|
||||
"QiniuKodo": {
|
||||
"AccessKey": "QINIU_ACCESS_KEY",
|
||||
"SecretKey": "QINIU_SECRET_KEY",
|
||||
"Bucket": "takeout-files",
|
||||
"DownloadDomain": "",
|
||||
"Endpoint": "",
|
||||
"UseHttps": true,
|
||||
"SignedUrlExpirationMinutes": 30
|
||||
},
|
||||
"AliyunOss": {
|
||||
"AccessKeyId": "OSS_ACCESS_KEY_ID",
|
||||
"AccessKeySecret": "OSS_ACCESS_KEY_SECRET",
|
||||
"Endpoint": "https://oss-cn-hangzhou.aliyuncs.com",
|
||||
"Bucket": "takeout-files",
|
||||
"CdnBaseUrl": "",
|
||||
"UseHttps": true
|
||||
},
|
||||
"Security": {
|
||||
"MaxFileSizeBytes": 10485760,
|
||||
"AllowedImageExtensions": [ ".jpg", ".jpeg", ".png", ".webp", ".gif" ],
|
||||
"AllowedFileExtensions": [ ".jpg", ".jpeg", ".png", ".webp", ".gif", ".pdf" ],
|
||||
"DefaultUrlExpirationMinutes": 30,
|
||||
"EnableRefererValidation": true,
|
||||
"AllowedReferers": [ "https://admin.example.com", "https://miniapp.example.com" ],
|
||||
"AntiLeechTokenSecret": "ReplaceWithARandomToken"
|
||||
}
|
||||
},
|
||||
"Sms": {
|
||||
"Provider": "Tencent",
|
||||
"DefaultSignName": "外卖SaaS",
|
||||
"UseMock": true,
|
||||
"Tencent": {
|
||||
"SecretId": "TENCENT_SMS_SECRET_ID",
|
||||
"SecretKey": "TENCENT_SMS_SECRET_KEY",
|
||||
"SdkAppId": "1400000000",
|
||||
"SignName": "外卖SaaS",
|
||||
"Region": "ap-beijing",
|
||||
"Endpoint": "https://sms.tencentcloudapi.com"
|
||||
},
|
||||
"Aliyun": {
|
||||
"AccessKeyId": "ALIYUN_SMS_AK",
|
||||
"AccessKeySecret": "ALIYUN_SMS_SK",
|
||||
"Endpoint": "dysmsapi.aliyuncs.com",
|
||||
"SignName": "外卖SaaS",
|
||||
"Region": "cn-hangzhou"
|
||||
},
|
||||
"SceneTemplates": {
|
||||
"login": "LOGIN_TEMPLATE_ID",
|
||||
"register": "REGISTER_TEMPLATE_ID",
|
||||
"reset": "RESET_TEMPLATE_ID"
|
||||
},
|
||||
"VerificationCode": {
|
||||
"CodeLength": 6,
|
||||
"ExpireMinutes": 5,
|
||||
"CooldownSeconds": 60,
|
||||
"CachePrefix": "sms:code"
|
||||
}
|
||||
},
|
||||
"RabbitMQ": {
|
||||
"Host": "49.232.6.45",
|
||||
"Port": 5672,
|
||||
"Username": "Admin",
|
||||
"Password": "MsuMshk112233",
|
||||
"VirtualHost": "/",
|
||||
"Exchange": "takeout.events",
|
||||
"ExchangeType": "topic",
|
||||
"PrefetchCount": 20
|
||||
},
|
||||
"Scheduler": {
|
||||
"ConnectionString": "Host=120.53.222.17;Port=5432;Database=takeout_saas_scheduler;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"WorkerCount": 5,
|
||||
"DashboardEnabled": false,
|
||||
"DashboardPath": "/hangfire"
|
||||
}
|
||||
}
|
||||
@@ -2,18 +2,18 @@
|
||||
"Database": {
|
||||
"DataSources": {
|
||||
"AppDatabase": {
|
||||
"Write": "Host=localhost;Port=5432;Database=takeout_saas_app;Username=app_user;Password=app_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=localhost;Port=5432;Database=takeout_saas_app;Username=app_user;Password=app_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
},
|
||||
"IdentityDatabase": {
|
||||
"Write": "Host=localhost;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=identity_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=localhost;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=identity_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
@@ -21,12 +21,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Redis": "localhost:6379,abortConnect=false",
|
||||
"Redis": "49.232.6.45:6379,password=MsuMshk112233,abortConnect=false",
|
||||
"Identity": {
|
||||
"Jwt": {
|
||||
"Issuer": "takeout-saas",
|
||||
"Audience": "takeout-saas-clients",
|
||||
"Secret": "ReplaceWithA32CharLongSecretKey_____",
|
||||
"Secret": "psZEx_O##]Mq(W.1$?8Aia*LM03sXGGx",
|
||||
"AccessTokenExpirationMinutes": 120,
|
||||
"RefreshTokenExpirationMinutes": 10080
|
||||
},
|
||||
@@ -51,14 +51,14 @@
|
||||
},
|
||||
"Storage": {
|
||||
"Provider": "TencentCos",
|
||||
"CdnBaseUrl": "https://cdn.example.com",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"TencentCos": {
|
||||
"SecretId": "COS_SECRET_ID",
|
||||
"SecretKey": "COS_SECRET_KEY",
|
||||
"Region": "ap-guangzhou",
|
||||
"Bucket": "takeout-bucket-123456",
|
||||
"Endpoint": "",
|
||||
"CdnBaseUrl": "https://cdn.example.com",
|
||||
"SecretId": "AKID52mHageV8ZnnY5NRL3Xq270fAcw2vb5R",
|
||||
"SecretKey": "B8sPitsiEXcS4ScaMvGMErFOL3ZqsgFa",
|
||||
"Region": "ap-beijing",
|
||||
"Bucket": "saas2025-1388556178",
|
||||
"Endpoint": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"UseHttps": true,
|
||||
"ForcePathStyle": false
|
||||
},
|
||||
@@ -98,7 +98,7 @@
|
||||
"SecretKey": "TENCENT_SMS_SECRET_KEY",
|
||||
"SdkAppId": "1400000000",
|
||||
"SignName": "外卖SaaS",
|
||||
"Region": "ap-guangzhou",
|
||||
"Region": "ap-beijing",
|
||||
"Endpoint": "https://sms.tencentcloudapi.com"
|
||||
},
|
||||
"Aliyun": {
|
||||
@@ -121,10 +121,10 @@
|
||||
}
|
||||
},
|
||||
"RabbitMQ": {
|
||||
"Host": "localhost",
|
||||
"Host": "49.232.6.45",
|
||||
"Port": 5672,
|
||||
"Username": "admin",
|
||||
"Password": "password",
|
||||
"Username": "Admin",
|
||||
"Password": "MsuMshk112233",
|
||||
"VirtualHost": "/",
|
||||
"Exchange": "takeout.events",
|
||||
"ExchangeType": "topic",
|
||||
|
||||
133
src/Api/TakeoutSaaS.MiniApi/appsettings.Production.json
Normal file
133
src/Api/TakeoutSaaS.MiniApi/appsettings.Production.json
Normal file
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"Database": {
|
||||
"DataSources": {
|
||||
"AppDatabase": {
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
},
|
||||
"IdentityDatabase": {
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"Redis": "49.232.6.45:6379,password=MsuMshk112233,abortConnect=false",
|
||||
"Identity": {
|
||||
"Jwt": {
|
||||
"Issuer": "takeout-saas",
|
||||
"Audience": "takeout-saas-clients",
|
||||
"Secret": "psZEx_O##]Mq(W.1$?8Aia*LM03sXGGx",
|
||||
"AccessTokenExpirationMinutes": 120,
|
||||
"RefreshTokenExpirationMinutes": 10080
|
||||
},
|
||||
"LoginRateLimit": {
|
||||
"WindowSeconds": 60,
|
||||
"MaxAttempts": 5
|
||||
},
|
||||
"RefreshTokenStore": {
|
||||
"Prefix": "identity:refresh:"
|
||||
}
|
||||
},
|
||||
"Dictionary": {
|
||||
"Cache": {
|
||||
"SlidingExpiration": "00:30:00"
|
||||
}
|
||||
},
|
||||
"Tenancy": {
|
||||
"TenantIdHeaderName": "X-Tenant-Id",
|
||||
"TenantCodeHeaderName": "X-Tenant-Code",
|
||||
"IgnoredPaths": [ "/health" ],
|
||||
"RootDomain": ""
|
||||
},
|
||||
"Storage": {
|
||||
"Provider": "TencentCos",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"TencentCos": {
|
||||
"SecretId": "AKID52mHageV8ZnnY5NRL3Xq270fAcw2vb5R",
|
||||
"SecretKey": "B8sPitsiEXcS4ScaMvGMErFOL3ZqsgFa",
|
||||
"Region": "ap-beijing",
|
||||
"Bucket": "saas2025-1388556178",
|
||||
"Endpoint": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"CdnBaseUrl": "https://saas2025-1388556178.cos.ap-beijing.myqcloud.com",
|
||||
"UseHttps": true,
|
||||
"ForcePathStyle": false
|
||||
},
|
||||
"QiniuKodo": {
|
||||
"AccessKey": "QINIU_ACCESS_KEY",
|
||||
"SecretKey": "QINIU_SECRET_KEY",
|
||||
"Bucket": "takeout-files",
|
||||
"DownloadDomain": "",
|
||||
"Endpoint": "",
|
||||
"UseHttps": true,
|
||||
"SignedUrlExpirationMinutes": 30
|
||||
},
|
||||
"AliyunOss": {
|
||||
"AccessKeyId": "OSS_ACCESS_KEY_ID",
|
||||
"AccessKeySecret": "OSS_ACCESS_KEY_SECRET",
|
||||
"Endpoint": "https://oss-cn-hangzhou.aliyuncs.com",
|
||||
"Bucket": "takeout-files",
|
||||
"CdnBaseUrl": "",
|
||||
"UseHttps": true
|
||||
},
|
||||
"Security": {
|
||||
"MaxFileSizeBytes": 10485760,
|
||||
"AllowedImageExtensions": [ ".jpg", ".jpeg", ".png", ".webp", ".gif" ],
|
||||
"AllowedFileExtensions": [ ".jpg", ".jpeg", ".png", ".webp", ".gif", ".pdf" ],
|
||||
"DefaultUrlExpirationMinutes": 30,
|
||||
"EnableRefererValidation": true,
|
||||
"AllowedReferers": [ "https://admin.example.com", "https://miniapp.example.com" ],
|
||||
"AntiLeechTokenSecret": "ReplaceWithARandomToken"
|
||||
}
|
||||
},
|
||||
"Sms": {
|
||||
"Provider": "Tencent",
|
||||
"DefaultSignName": "外卖SaaS",
|
||||
"UseMock": true,
|
||||
"Tencent": {
|
||||
"SecretId": "TENCENT_SMS_SECRET_ID",
|
||||
"SecretKey": "TENCENT_SMS_SECRET_KEY",
|
||||
"SdkAppId": "1400000000",
|
||||
"SignName": "外卖SaaS",
|
||||
"Region": "ap-beijing",
|
||||
"Endpoint": "https://sms.tencentcloudapi.com"
|
||||
},
|
||||
"Aliyun": {
|
||||
"AccessKeyId": "ALIYUN_SMS_AK",
|
||||
"AccessKeySecret": "ALIYUN_SMS_SK",
|
||||
"Endpoint": "dysmsapi.aliyuncs.com",
|
||||
"SignName": "外卖SaaS",
|
||||
"Region": "cn-hangzhou"
|
||||
},
|
||||
"SceneTemplates": {
|
||||
"login": "LOGIN_TEMPLATE_ID",
|
||||
"register": "REGISTER_TEMPLATE_ID",
|
||||
"reset": "RESET_TEMPLATE_ID"
|
||||
},
|
||||
"VerificationCode": {
|
||||
"CodeLength": 6,
|
||||
"ExpireMinutes": 5,
|
||||
"CooldownSeconds": 60,
|
||||
"CachePrefix": "sms:code"
|
||||
}
|
||||
},
|
||||
"RabbitMQ": {
|
||||
"Host": "49.232.6.45",
|
||||
"Port": 5672,
|
||||
"Username": "Admin",
|
||||
"Password": "MsuMshk112233",
|
||||
"VirtualHost": "/",
|
||||
"Exchange": "takeout.events",
|
||||
"ExchangeType": "topic",
|
||||
"PrefetchCount": 20
|
||||
}
|
||||
}
|
||||
@@ -2,18 +2,18 @@
|
||||
"Database": {
|
||||
"DataSources": {
|
||||
"AppDatabase": {
|
||||
"Write": "Host=localhost;Port=5432;Database=takeout_saas_app;Username=app_user;Password=app_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=localhost;Port=5432;Database=takeout_saas_app;Username=app_user;Password=app_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
},
|
||||
"IdentityDatabase": {
|
||||
"Write": "Host=localhost;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=identity_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=localhost;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=identity_password;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
@@ -21,12 +21,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Redis": "localhost:6379,abortConnect=false",
|
||||
"Redis": "49.232.6.45:6379,password=MsuMshk112233,abortConnect=false",
|
||||
"Identity": {
|
||||
"Jwt": {
|
||||
"Issuer": "takeout-saas",
|
||||
"Audience": "takeout-saas-clients",
|
||||
"Secret": "ReplaceWithA32CharLongSecretKey_____",
|
||||
"Secret": "psZEx_O##]Mq(W.1$?8Aia*LM03sXGGx",
|
||||
"AccessTokenExpirationMinutes": 120,
|
||||
"RefreshTokenExpirationMinutes": 10080
|
||||
},
|
||||
|
||||
52
src/Api/TakeoutSaaS.UserApi/appsettings.Production.json
Normal file
52
src/Api/TakeoutSaaS.UserApi/appsettings.Production.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"Database": {
|
||||
"DataSources": {
|
||||
"AppDatabase": {
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_app;Username=app_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
},
|
||||
"IdentityDatabase": {
|
||||
"Write": "Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50",
|
||||
"Reads": [
|
||||
"Host=120.53.222.17;Port=5432;Database=takeout_saas_identity;Username=identity_user;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=50"
|
||||
],
|
||||
"CommandTimeoutSeconds": 30,
|
||||
"MaxRetryCount": 3,
|
||||
"MaxRetryDelaySeconds": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
"Redis": "49.232.6.45:6379,password=MsuMshk112233,abortConnect=false",
|
||||
"Identity": {
|
||||
"Jwt": {
|
||||
"Issuer": "takeout-saas",
|
||||
"Audience": "takeout-saas-clients",
|
||||
"Secret": "psZEx_O##]Mq(W.1$?8Aia*LM03sXGGx",
|
||||
"AccessTokenExpirationMinutes": 120,
|
||||
"RefreshTokenExpirationMinutes": 10080
|
||||
},
|
||||
"LoginRateLimit": {
|
||||
"WindowSeconds": 60,
|
||||
"MaxAttempts": 5
|
||||
},
|
||||
"RefreshTokenStore": {
|
||||
"Prefix": "identity:refresh:"
|
||||
}
|
||||
},
|
||||
"Dictionary": {
|
||||
"Cache": {
|
||||
"SlidingExpiration": "00:30:00"
|
||||
}
|
||||
},
|
||||
"Tenancy": {
|
||||
"TenantIdHeaderName": "X-Tenant-Id",
|
||||
"TenantCodeHeaderName": "X-Tenant-Code",
|
||||
"IgnoredPaths": [ "/health" ],
|
||||
"RootDomain": ""
|
||||
}
|
||||
}
|
||||
@@ -110,7 +110,7 @@ public sealed class DatabaseConnectionFactory(
|
||||
|
||||
private DatabaseConnectionDetails BuildFallbackConnection()
|
||||
{
|
||||
const string fallback = "Host=localhost;Port=5432;Database=postgres;Username=postgres;Password=postgres;Pooling=true;Minimum Pool Size=1;Maximum Pool Size=20";
|
||||
const string fallback = "Host=120.53.222.17;Port=5432;Database=postgres;Username=postgres;Password=MsuMshk112233;Pooling=true;Minimum Pool Size=1;Maximum Pool Size=20";
|
||||
logger.LogWarning("使用默认回退连接串:{Connection}", fallback);
|
||||
return new DatabaseConnectionDetails(
|
||||
fallback,
|
||||
|
||||
Reference in New Issue
Block a user