You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
13 KiB
13 KiB
浩景CNC机床数据采集分析系统 - 部署指南
文档信息
| 项目 | 内容 |
|---|---|
| 版本 | v1.0.0 |
| 日期 | 2026-04-13 |
| 部署方式 | 使用 deploy.ps1 一键构建 + IIS 手动配置 |
目录
1. 部署流程概述
部署分为以下步骤:
┌─────────────────────────────────────────────────────────────┐
│ 1. 运行 deploy.ps1 构建项目 │
│ └─> 输出目录: publish\wwwroot\ │
│ ├── api\ (后端 API) │
│ ├── admin\ (管理后台) │
│ └── dashboard\ (BI 大屏) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 2. 配置数据库 (MariaDB) │
│ ├─ 创建数据库和用户 │
│ └─ 导入数据库脚本 cnc_business.sql / cnc_log_fixed.sql │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 3. 复制文件到 IIS 目录 │
│ └─ publish\wwwroot\* → C:\wwwroot\haoliang\ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 4. IIS 配置 │
│ ├─ 创建应用程序池 HaoliangApi │
│ ├─ 创建网站 Haoliang (端口 5000) │
│ └─ 创建子应用 admin / dashboard │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 5. 修改生产配置 │
│ └─ 修改 appsettings.Production.json 中的数据库连接 │
└─────────────────────────────────────────────────────────────┘
2. 第一步:运行部署脚本
2.1 执行构建
在项目根目录下执行部署脚本:
cd D:\git\git\haoliang
.\deploy.ps1
2.2 脚本输出
构建成功后,输出目录结构如下:
D:\git\git\haoliang\publish\wwwroot\
├── api\
│ ├── Haoliang.Api.exe # 主程序
│ ├── Haoliang.Api.dll
│ ├── appsettings.json # 开发配置
│ ├── appsettings.Production.json # 生产配置 ← 稍后修改
│ ├── web.config # IIS 配置文件
│ ├── logs\ # 日志目录
│ └── data\ # 数据目录
├── admin\
│ ├── index.html
│ ├── assets\
│ └── ...
└── dashboard\
├── index.html
├── assets\
└── ...
3. 第二步:配置数据库
3.1 登录 MariaDB
mysql -u root -p
3.2 创建数据库和用户
-- 创建专用数据库用户(请修改密码)
CREATE USER 'haoliang'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
CREATE USER 'haoliang'@'127.0.0.1' IDENTIFIED BY 'YourStrongPassword123!';
-- 创建业务库
CREATE DATABASE cnc_business CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建日志库
CREATE DATABASE cnc_log CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 授权
GRANT ALL PRIVILEGES ON cnc_business.* TO 'haoliang'@'localhost';
GRANT ALL PRIVILEGES ON cnc_log.* TO 'haoliang'@'localhost';
FLUSH PRIVILEGES;
3.3 导入数据库脚本
# 进入项目数据库脚本目录
cd D:\git\git\haoliang\database
# 导入业务库
mysql -u haoliang -p cnc_business < cnc_business.sql
# 导入日志库(使用修复版本)
mysql -u haoliang -p cnc_log < cnc_log_fixed.sql
3.4 验证数据库
# 验证表已创建
mysql -u haoliang -p -e "USE cnc_business; 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.1 创建目标目录
# 创建部署根目录
New-Item -ItemType Directory -Path "C:\wwwroot\haoliang" -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 复制文件
# 复制 API 文件
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 验证复制结果
C:\wwwroot\haoliang\
├── api\
│ ├── Haoliang.Api.exe
│ ├── web.config
│ ├── appsettings.json
│ ├── appsettings.Production.json
│ ├── logs\
│ └── data\
├── admin\
│ ├── index.html
│ └── assets\
└── dashboard\
├── index.html
└── assets\
5. 第四步:IIS 配置
5.1 创建应用程序池
方式一:PowerShell(推荐)
# 创建应用程序池
New-WebAppPool -Name "HaoliangApi"
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 "startMode" -Value "OnDemand"
Start-WebAppPool -Name "HaoliangApi"
方式二:IIS 管理器
- 打开 IIS 管理器
- 右键 应用程序池 → 添加应用程序池
- 配置:
| 配置项 | 值 |
|---|---|
| 名称 | HaoliangApi |
| .NET CLR 版本 | 无托管代码 |
| 托管管道模式 | 集成 |
5.2 创建网站
方式一:PowerShell(推荐)
New-WebSite -Name "Haoliang" -PhysicalPath "C:\wwwroot\haoliang\api" -Port 5000 -ApplicationPool "HaoliangApi"
Start-WebSite -Name "Haoliang"
方式二:IIS 管理器
- 右键 网站 → 添加网站
- 配置:
| 配置项 | 值 |
|---|---|
| 网站名称 | Haoliang |
| 物理路径 | C:\wwwroot\haoliang\api |
| 端口 | 5000 |
| 应用程序池 | HaoliangApi |
5.3 创建子应用程序
# 创建 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 设置目录权限
# API 目录权限
icacls "C:\wwwroot\haoliang\api" /grant "IIS AppPool\HaoliangApi:(OI)(CI)M"
icacls "C:\wwwroot\haoliang\api\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\admin" /grant "IIS_IUSRS:(OI)(CI)RX"
icacls "C:\wwwroot\haoliang\dashboard" /grant "IIS_IUSRS:(OI)(CI)RX"
5.5 防火墙配置(如需要)
# 开放端口
New-NetFirewallRule -DisplayName "Haoliang API" -Direction Inbound -Protocol TCP -LocalPort 5000 -Action Allow -Profile Any
6. 第五步:修改生产配置
6.1 编辑配置文件
用记事本或其他编辑器打开:
C:\wwwroot\haoliang\api\appsettings.Production.json
6.2 修改数据库连接
将连接字符串中的密码修改为实际密码:
{
"ConnectionStrings": {
"CNCBusinessDB": "Server=localhost;Database=cnc_business;User=haoliang;Password=YourStrongPassword123!;CharSet=utf8mb4;",
"CNCLLogDB": "Server=localhost;Database=cnc_log;User=haoliang;Password=YourStrongPassword123!;CharSet=utf8mb4;"
}
}
6.3 重启应用程序池
Restart-WebAppPool -Name "HaoliangApi"
7. 第六步:验证部署
7.1 检查服务状态
# 检查网站状态
Get-WebSiteState -Name "Haoliang"
# 检查应用程序池状态
Get-WebAppPoolState -Name "HaoliangApi"
7.2 浏览器访问测试
| 地址 | 预期结果 |
|---|---|
| http://localhost:5000/ | API 响应(JSON 或空白页) |
| http://localhost:5000/api/v1/health | 健康检查 JSON |
| http://localhost:5000/admin | 管理后台登录页 |
| http://localhost:5000/dashboard | BI 大屏首页 |
7.3 查看日志
# 查看 stdout 日志
Get-Content "C:\wwwroot\haoliang\api\logs\stdout_*.log" -Tail 20
# 查看应用日志
Get-Content "C:\wwwroot\haoliang\api\logs\app-*.log" -Tail 20
8. 故障排查
8.1 常见错误
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 500.19 | web.config 语法错误 | 检查 web.config 文件 |
| 500.21 | .NET Core 模块未安装 | 安装 .NET Core Hosting Bundle |
| 502.5 | 应用程序启动失败 | 检查 appsettings.Production.json 数据库连接 |
| 502.3 | 托管模块配置错误 | 检查 web.config 中 AspNetCore 模块 |
| 404.0 | 路径不存在 | 检查物理路径配置 |
8.2 排查步骤
# 1. 检查应用程序池是否启动
Get-WebAppPoolState -Name "HaoliangApi"
# 2. 查看详细错误日志
Get-Content "C:\wwwroot\haoliang\api\logs\stdout_*.log" | Select-String "Error"
# 3. 测试数据库连接
mysql -u haoliang -p -e "USE cnc_business; SELECT 1;"
# 4. 检查端口占用
netstat -an | findstr ":5000"
8.3 快速重启
Restart-WebAppPool -Name "HaoliangApi"
Start-WebSite -Name "Haoliang"
部署清单
[ ] 1. 运行 deploy.ps1 构建成功
[ ] 2. MariaDB 数据库已创建
[ ] 3. 数据库用户 haoliang 已创建并授权
[ ] 4. 数据库脚本已导入 (cnc_business.sql, cnc_log_fixed.sql)
[ ] 5. 文件已复制到 C:\wwwroot\haoliang
[ ] 6. 应用程序池 HaoliangApi 已创建
[ ] 7. 网站 Haoliang 已创建 (端口 5000)
[ ] 8. 子应用 admin 已创建
[ ] 9. 子应用 dashboard 已创建
[ ] 10. 目录权限已设置
[ ] 11. appsettings.Production.json 数据库连接已修改
[ ] 12. 应用程序池已重启
[ ] 13. 浏览器访问测试通过
文档最后更新:2026-04-13