修复DEPLOYMENT.md:移除子应用配置,更新为扁平化目录部署说明

main
821644@qq.com 3 weeks ago
parent c66a36aa72
commit 9c86b39757

@ -25,38 +25,61 @@
## 1. 部署流程概述 ## 1. 部署流程概述
部署分为以下步骤: ### 目录结构(扁平化)
```
C:\wwwroot\haoliang\ ← IIS 网站根目录
├── Haoliang.Api.exe # 后端 API 主程序
├── Haoliang.Api.dll
├── appsettings.json # 开发配置
├── appsettings.Production.json # 生产配置 ← 需修改
├── web.config # IIS 配置文件
├── logs\ # 日志目录
├── data\ # 数据目录
├── admin\ # 管理后台 (访问 /admin/*)
│ ├── index.html
│ └── assets\
└── dashboard\ # BI 大屏 (访问 /dashboard/*)
├── index.html
└── assets\
```
### 访问地址
| 应用 | URL |
|------|-----|
| API | http://localhost:5000/api/v1/* |
| Admin | http://localhost:5000/admin |
| Dashboard | http://localhost:5000/dashboard |
| Swagger | http://localhost:5000/swagger |
### 部署流程
``` ```
┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
│ 1. 运行 deploy.ps1 构建项目 │ │ 1. 运行 deploy.ps1 构建项目 │
│ └─> 输出目录: publish\wwwroot\ │ │ 输出: publish\wwwroot\ │
│ ├── api\ (后端 API) │
│ ├── admin\ (管理后台) │
│ └── dashboard\ (BI 大屏) │
└─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
│ 2. 配置数据库 (MariaDB) │ │ 2. 配置数据库 (MariaDB) │
│ ├─ 创建数据库和用户 │ │ ├─ 创建数据库和用户 │
│ └─ 导入数据库脚本 cnc_business.sql / cnc_log_fixed.sql │ │ └─ 导入 cnc_business.sql / cnc_log_fixed.sql
└─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
│ 3. 复制文件到 IIS 目录 │ │ 3. 复制文件到 IIS 目录 │
│ └─ publish\wwwroot\* → C:\wwwroot\haoliang\ │ │ └─ publish\wwwroot\* → C:\wwwroot\haoliang\ │
└─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
│ 4. IIS 配置 │ │ 4. IIS 配置(极简:仅 1 个网站) │
│ ├─ 创建应用程序池 HaoliangApi │ │ └─ 网站 Haoliang物理路径 C:\wwwroot\haoliang │
│ ├─ 创建网站 Haoliang (端口 5000) │
│ └─ 创建子应用 admin / dashboard │
└─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐ ┌─────────────────────────────────────────────────────────────┐
│ 5. 修改生产配置 │ │ 5. 修改生产配置 │
│ └─ 修改 appsettings.Production.json 中的数据库连接 │ │ └─ 修改 appsettings.Production.json 数据库连接
└─────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────┘
``` ```
@ -66,35 +89,28 @@
### 2.1 执行构建 ### 2.1 执行构建
在项目根目录下执行部署脚本:
```powershell ```powershell
cd D:\git\git\haoliang cd D:\git\git\haoliang
.\deploy.ps1 .\deploy.ps1
``` ```
### 2.2 脚本输出 ### 2.2 构建输出
构建成功后,输出目录结构如下:
``` ```
D:\git\git\haoliang\publish\wwwroot\ D:\git\git\haoliang\publish\wwwroot\
├── api\ ├── Haoliang.Api.exe # 后端主程序
│ ├── Haoliang.Api.exe # 主程序 ├── Haoliang.Api.dll
│ ├── Haoliang.Api.dll ├── appsettings.json
│ ├── appsettings.json # 开发配置 ├── appsettings.Production.json # ← 稍后修改
│ ├── appsettings.Production.json # 生产配置 ← 稍后修改 ├── web.config
│ ├── web.config # IIS 配置文件 ├── logs\
│ ├── logs\ # 日志目录 ├── data\
│ └── data\ # 数据目录 ├── admin\ # /admin 访问
├── admin\
│ ├── index.html │ ├── index.html
│ ├── assets\ │ └── assets\
│ └── ... └── dashboard\ # /dashboard 访问
└── dashboard\
├── index.html ├── index.html
├── assets\ └── assets\
└── ...
``` ```
--- ---
@ -130,28 +146,19 @@ FLUSH PRIVILEGES;
### 3.3 导入数据库脚本 ### 3.3 导入数据库脚本
```powershell ```powershell
# 进入项目数据库脚本目录
cd D:\git\git\haoliang\database cd D:\git\git\haoliang\database
# 导入业务库
mysql -u haoliang -p cnc_business < cnc_business.sql mysql -u haoliang -p cnc_business < cnc_business.sql
# 导入日志库(使用修复版本)
mysql -u haoliang -p cnc_log < cnc_log_fixed.sql mysql -u haoliang -p cnc_log < cnc_log_fixed.sql
``` ```
### 3.4 验证数据库 ### 3.4 验证数据库
```powershell ```powershell
# 验证表已创建
mysql -u haoliang -p -e "USE cnc_business; SHOW TABLES;" mysql -u haoliang -p -e "USE cnc_business; SHOW TABLES;"
mysql -u haoliang -p -e "USE cnc_log; SHOW TABLES;" mysql -u haoliang -p -e "USE cnc_log; SHOW TABLES;"
``` ```
预期输出:
- cnc_business 库包含Devices, Users, Templates, AlarmRules, ProductionRecords 等表
- cnc_log 库包含CollectionLogs, SystemLogs, ExceptionLogs 等表
--- ---
## 4. 第三步:复制文件到 IIS 目录 ## 4. 第三步:复制文件到 IIS 目录
@ -159,41 +166,27 @@ mysql -u haoliang -p -e "USE cnc_log; SHOW TABLES;"
### 4.1 创建目标目录 ### 4.1 创建目标目录
```powershell ```powershell
# 创建部署根目录
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang" -Force New-Item -ItemType Directory -Path "C:\wwwroot\haoliang" -Force
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang\logs" -Force
# 创建子目录 New-Item -ItemType Directory -Path "C:\wwwroot\haoliang\data" -Force
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang\api" -Force
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang\api\logs" -Force
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang\api\data" -Force
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang\admin" -Force
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang\dashboard" -Force
``` ```
### 4.2 复制文件 ### 4.2 复制文件
```powershell ```powershell
# 复制 API 文件 Copy-Item -Path "D:\git\git\haoliang\publish\wwwroot\*" -Destination "C:\wwwroot\haoliang\" -Recurse -Force
Copy-Item -Path "D:\git\git\haoliang\publish\wwwroot\api\*" -Destination "C:\wwwroot\haoliang\api\" -Recurse -Force
# 复制 Admin 文件
Copy-Item -Path "D:\git\git\haoliang\publish\wwwroot\admin\*" -Destination "C:\wwwroot\haoliang\admin\" -Recurse -Force
# 复制 Dashboard 文件
Copy-Item -Path "D:\git\git\haoliang\publish\wwwroot\dashboard\*" -Destination "C:\wwwroot\haoliang\dashboard\" -Recurse -Force
``` ```
### 4.3 验证复制结果 ### 4.3 验证目录结构
``` ```
C:\wwwroot\haoliang\ C:\wwwroot\haoliang\
├── api\ ├── Haoliang.Api.exe
│ ├── Haoliang.Api.exe ├── web.config
│ ├── web.config ├── appsettings.json
│ ├── appsettings.json ├── appsettings.Production.json
│ ├── appsettings.Production.json ├── logs\
│ ├── logs\ ├── data\
│ └── data\
├── admin\ ├── admin\
│ ├── index.html │ ├── index.html
│ └── assets\ │ └── assets\
@ -208,88 +201,38 @@ C:\wwwroot\haoliang\
### 5.1 创建应用程序池 ### 5.1 创建应用程序池
**方式一PowerShell推荐**
```powershell ```powershell
# 创建应用程序池
New-WebAppPool -Name "HaoliangApi" New-WebAppPool -Name "HaoliangApi"
Set-ItemProperty -Path "IIS:\AppPools\HaoliangApi" -Name "managedRuntimeVersion" -Value "" Set-ItemProperty -Path "IIS:\AppPools\HaoliangApi" -Name "managedRuntimeVersion" -Value ""
Set-ItemProperty -Path "IIS:\AppPools\HaoliangApi" -Name "managedPipelineMode" -Value "Integrated" Set-ItemProperty -Path "IIS:\AppPools\HaoliangApi" -Name "managedPipelineMode" -Value "Integrated"
Set-ItemProperty -Path "IIS:\AppPools\HaoliangApi" -Name "startMode" -Value "OnDemand"
Start-WebAppPool -Name "HaoliangApi" Start-WebAppPool -Name "HaoliangApi"
``` ```
**方式二IIS 管理器** ### 5.2 创建网站(重要:直接指向根目录)
1. 打开 **IIS 管理器**
2. 右键 **应用程序池** → **添加应用程序池**
3. 配置:
| 配置项 | 值 |
|--------|-----|
| 名称 | `HaoliangApi` |
| .NET CLR 版本 | **无托管代码** |
| 托管管道模式 | **集成** |
### 5.2 创建网站
**方式一PowerShell推荐**
```powershell ```powershell
New-WebSite -Name "Haoliang" -PhysicalPath "C:\wwwroot\haoliang\api" -Port 5000 -ApplicationPool "HaoliangApi" New-WebSite -Name "Haoliang" -PhysicalPath "C:\wwwroot\haoliang" -Port 5000 -ApplicationPool "HaoliangApi"
Start-WebSite -Name "Haoliang" Start-WebSite -Name "Haoliang"
``` ```
**方式二IIS 管理器** > **注意**:物理路径直接指向 `C:\wwwroot\haoliang`不是子目录。admin 和 dashboard 是文件目录,不需要创建 IIS 子应用。
1. 右键 **网站** → **添加网站**
2. 配置:
| 配置项 | 值 |
|--------|-----|
| 网站名称 | `Haoliang` |
| 物理路径 | `C:\wwwroot\haoliang\api` |
| 端口 | `5000` |
| 应用程序池 | `HaoliangApi` |
### 5.3 创建子应用程序 ### 5.3 设置目录权限
```powershell
# 创建 Admin 子应用
New-WebApplication -Name "admin" -Site "Haoliang" -PhysicalPath "C:\wwwroot\haoliang\admin" -ApplicationPool "HaoliangApi"
# 创建 Dashboard 子应用
New-WebApplication -Name "dashboard" -Site "Haoliang" -PhysicalPath "C:\wwwroot\haoliang\dashboard" -ApplicationPool "HaoliangApi"
# 验证配置
Get-WebApplication -Site "Haoliang"
```
预期输出:
```
Name Path PhysicalPath
---- ---- ------------
admin /admin C:\wwwroot\haoliang\admin
dashboard /dashboard C:\wwwroot\haoliang\dashboard
```
### 5.4 设置目录权限
```powershell ```powershell
# API 目录权限 # API 目录权限
icacls "C:\wwwroot\haoliang\api" /grant "IIS AppPool\HaoliangApi:(OI)(CI)M" icacls "C:\wwwroot\haoliang" /grant "IIS AppPool\HaoliangApi:(OI)(CI)M"
icacls "C:\wwwroot\haoliang\api\logs" /grant "IIS AppPool\HaoliangApi:(OI)(CI)M" icacls "C:\wwwroot\haoliang\logs" /grant "IIS AppPool\HaoliangApi:(OI)(CI)M"
icacls "C:\wwwroot\haoliang\api\data" /grant "IIS AppPool\HaoliangApi:(OI)(CI)M" icacls "C:\wwwroot\haoliang\data" /grant "IIS AppPool\HaoliangApi:(OI)(CI)M"
# 前端目录权限 # 前端目录权限
icacls "C:\wwwroot\haoliang\admin" /grant "IIS_IUSRS:(OI)(CI)RX" icacls "C:\wwwroot\haoliang\admin" /grant "IIS_IUSRS:(OI)(CI)RX"
icacls "C:\wwwroot\haoliang\dashboard" /grant "IIS_IUSRS:(OI)(CI)RX" icacls "C:\wwwroot\haoliang\dashboard" /grant "IIS_IUSRS:(OI)(CI)RX"
``` ```
### 5.5 防火墙配置(如需要) ### 5.4 防火墙配置(如需要)
```powershell ```powershell
# 开放端口
New-NetFirewallRule -DisplayName "Haoliang API" -Direction Inbound -Protocol TCP -LocalPort 5000 -Action Allow -Profile Any New-NetFirewallRule -DisplayName "Haoliang API" -Direction Inbound -Protocol TCP -LocalPort 5000 -Action Allow -Profile Any
``` ```
@ -299,16 +242,10 @@ New-NetFirewallRule -DisplayName "Haoliang API" -Direction Inbound -Protocol TCP
### 6.1 编辑配置文件 ### 6.1 编辑配置文件
用记事本或其他编辑器打开: 打开 `C:\wwwroot\haoliang\appsettings.Production.json`
```
C:\wwwroot\haoliang\api\appsettings.Production.json
```
### 6.2 修改数据库连接 ### 6.2 修改数据库连接
将连接字符串中的密码修改为实际密码:
```json ```json
{ {
"ConnectionStrings": { "ConnectionStrings": {
@ -331,18 +268,15 @@ Restart-WebAppPool -Name "HaoliangApi"
### 7.1 检查服务状态 ### 7.1 检查服务状态
```powershell ```powershell
# 检查网站状态
Get-WebSiteState -Name "Haoliang" Get-WebSiteState -Name "Haoliang"
# 检查应用程序池状态
Get-WebAppPoolState -Name "HaoliangApi" Get-WebAppPoolState -Name "HaoliangApi"
``` ```
### 7.2 浏览器访问测试 ### 7.2 浏览器访问测试
| 地址 | 预期结果 | | URL | 预期结果 |
|------|----------| |-----|----------|
| http://localhost:5000/ | API 响应JSON 或空白页) | | http://localhost:5000/ | API 响应 |
| http://localhost:5000/api/v1/health | 健康检查 JSON | | http://localhost:5000/api/v1/health | 健康检查 JSON |
| http://localhost:5000/admin | 管理后台登录页 | | http://localhost:5000/admin | 管理后台登录页 |
| http://localhost:5000/dashboard | BI 大屏首页 | | http://localhost:5000/dashboard | BI 大屏首页 |
@ -350,11 +284,8 @@ Get-WebAppPoolState -Name "HaoliangApi"
### 7.3 查看日志 ### 7.3 查看日志
```powershell ```powershell
# 查看 stdout 日志 Get-Content "C:\wwwroot\haoliang\logs\stdout_*.log" -Tail 20
Get-Content "C:\wwwroot\haoliang\api\logs\stdout_*.log" -Tail 20 Get-Content "C:\wwwroot\haoliang\logs\app-*.log" -Tail 20
# 查看应用日志
Get-Content "C:\wwwroot\haoliang\api\logs\app-*.log" -Tail 20
``` ```
--- ---
@ -365,20 +296,19 @@ Get-Content "C:\wwwroot\haoliang\api\logs\app-*.log" -Tail 20
| 错误 | 原因 | 解决方案 | | 错误 | 原因 | 解决方案 |
|------|------|----------| |------|------|----------|
| 500.19 | web.config 语法错误 | 检查 web.config 文件 | | 500.19 | web.config 语法错误 | 检查 web.config |
| 500.21 | .NET Core 模块未安装 | 安装 .NET Core Hosting Bundle | | 500.21 | .NET Core 模块未安装 | 安装 Hosting Bundle |
| 502.5 | 应用程序启动失败 | 检查 appsettings.Production.json 数据库连接 | | 502.5 | 应用程序启动失败 | 检查数据库连接 |
| 502.3 | 托管模块配置错误 | 检查 web.config 中 AspNetCore 模块 | | 404 | 路径不存在 | 检查物理路径配置 |
| 404.0 | 路径不存在 | 检查物理路径配置 |
### 8.2 排查步骤 ### 8.2 排查步骤
```powershell ```powershell
# 1. 检查应用程序池是否启动 # 1. 检查应用程序池状态
Get-WebAppPoolState -Name "HaoliangApi" Get-WebAppPoolState -Name "HaoliangApi"
# 2. 查看详细错误日志 # 2. 查看错误日志
Get-Content "C:\wwwroot\haoliang\api\logs\stdout_*.log" | Select-String "Error" Get-Content "C:\wwwroot\haoliang\logs\stdout_*.log" | Select-String "Error"
# 3. 测试数据库连接 # 3. 测试数据库连接
mysql -u haoliang -p -e "USE cnc_business; SELECT 1;" mysql -u haoliang -p -e "USE cnc_business; SELECT 1;"
@ -402,16 +332,14 @@ Start-WebSite -Name "Haoliang"
[ ] 1. 运行 deploy.ps1 构建成功 [ ] 1. 运行 deploy.ps1 构建成功
[ ] 2. MariaDB 数据库已创建 [ ] 2. MariaDB 数据库已创建
[ ] 3. 数据库用户 haoliang 已创建并授权 [ ] 3. 数据库用户 haoliang 已创建并授权
[ ] 4. 数据库脚本已导入 (cnc_business.sql, cnc_log_fixed.sql) [ ] 4. 数据库脚本已导入
[ ] 5. 文件已复制到 C:\wwwroot\haoliang [ ] 5. 文件已复制到 C:\wwwroot\haoliang
[ ] 6. 应用程序池 HaoliangApi 已创建 [ ] 6. 应用程序池 HaoliangApi 已创建
[ ] 7. 网站 Haoliang 已创建 (端口 5000) [ ] 7. 网站 Haoliang 已创建 (端口 5000物理路径指向根目录)
[ ] 8. 子应用 admin 已创建 [ ] 8. 目录权限已设置
[ ] 9. 子应用 dashboard 已创建 [ ] 9. appsettings.Production.json 数据库连接已修改
[ ] 10. 目录权限已设置 [ ] 10. 应用程序池已重启
[ ] 11. appsettings.Production.json 数据库连接已修改 [ ] 11. 浏览器访问测试通过
[ ] 12. 应用程序池已重启
[ ] 13. 浏览器访问测试通过
``` ```
--- ---

Loading…
Cancel
Save