chore: 统整图片到 docs/assets/images 并同步知识库更新

- 创建固定图片目录 docs/assets/images/,迁移散落图片
- 更新所有文档中图片引用为 markdown 标准格式
- 配置 Obsidian 默认粘贴路径到固定目录
- 同步 SSL 证书续期、陪诊项目资料等知识库文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
renjianbo
2026-05-24 11:25:45 +08:00
parent 0aa0a41f21
commit fda12a614e
12 changed files with 375 additions and 44 deletions

View File

@@ -0,0 +1,148 @@
# SSL 证书续期操作指南
**日期:** 2026-05-24
**操作结果:** ✅ 续期成功,新证书 2026-05-24 ~ 2026-08-22
**域名:** ruilaizipj.com, www.ruilaizipj.com
**上次过期:** 2026-04-28
---
## 方式一:恢复宝塔面板续期(推荐 — 支持自动续期)
### 1. 登录服务器
通过腾讯云控制台 VNC 或 Webshell 登录服务器。
### 2. 启动宝塔面板
```bash
# 检查面板状态
bt status
# 如果未运行,启动面板
bt start
# 确认面板端口
bt default
```
如果面板启动失败,尝试:
```bash
/etc/init.d/bt start
# 或
systemctl start bt-panel
```
### 3. 浏览器登录面板
```
https://101.43.95.130:38193/e626af3f
```
- 用户名:`0dbelvc8`
- 密码:`testpasswd`
如果忘记密码,在服务器上重置:
```bash
cd /www/server/panel && btpython tools.py panel testpasswd
```
### 4. 申请新证书
1. 进入:**网站** → 选择站点 `101.43.95.130`(或 `www.ruilaizipj.com`
2. 点击 **SSL****Let's Encrypt**
3. 验证方式:**文件验证**
4. 勾选域名:`ruilaizipj.com``www.ruilaizipj.com`
5. 点击 **申请证书**
6. 申请成功后点击 **部署**
### ⚠️ 常见问题:续签提示 "部署失败请关闭SSL后重新尝试部署"
如果证书已过期,直接点 **"续签证书"** 可能会报这个错。原因:过期证书仍占用 SSL 配置,导致新证书无法部署。
**解决方法:**
1. 在 SSL 页面先点击 **"关闭 SSL"**
2. 关闭后回到 Let's Encrypt 标签
3. 重新勾选域名,点击 **"申请证书"**
4. 申请成功后点击 **"部署"**
### 5. 验证证书
```bash
# 检查证书是否更新
openssl x509 -in /www/server/panel/vhost/cert/101.43.95.130/fullchain.pem -noout -dates
# 测试 HTTPS 访问
curl -I https://www.ruilaizipj.com
```
应返回 HTTP 200。
### 6. (建议)切换回宝塔 Nginx 实现自动续期
当前使用系统 Nginx宝塔 Nginx 已停。宝塔 Nginx 支持 Let's Encrypt 自动续期,避免再次过期。
```bash
# 停止系统 nginx
systemctl stop nginx
systemctl disable nginx
# 启动宝塔 nginx
/etc/init.d/nginx start
# 确认 80/443 端口由宝塔 nginx 监听
netstat -tlnp | grep -E ':80|:443'
```
然后在宝塔面板 **网站****SSL** 中确认 **"自动续期"** 已开启。
---
## 方式二:命令行 certbot 续期(备用)
如果宝塔面板无法恢复,直接用 certbot
```bash
# 1. 安装 certbot
yum install -y epel-release
yum install -y certbot
# 2. 停止 nginxcertbot 需要 80 端口做验证)
systemctl stop nginx
# 3. 申请证书webroot 方式)
certbot certonly --webroot \
-w /www/wwwroot/code/public \
-d ruilaizipj.com \
-d www.ruilaizipj.com \
--email 你的邮箱
# 4. 更新 nginx 配置指向新证书
vi /etc/nginx/conf.d/default.conf
```
修改证书路径:
```nginx
ssl_certificate /etc/letsencrypt/live/ruilaizipj.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ruilaizipj.com/privkey.pem;
```
```bash
# 5. 启动 nginx
systemctl start nginx
# 6. 设置自动续期 cron
echo "0 3 * * * certbot renew --quiet --post-hook 'systemctl reload nginx'" | crontab -
```
---
## 验证清单
- [ ] `curl -I https://www.ruilaizipj.com` 返回 200
- [ ] `curl -I https://ruilaizipj.com` 返回 200
- [ ] 浏览器访问不提示证书错误
- [ ] 证书有效期确认在 90 天内

View File

@@ -66,5 +66,5 @@ curl -I https://ruilaizipj.com
去宝塔 SSL -> Let's Encrypt 页面 ruilaizipj.com 也勾上重新点一次 申请证书。
如果你把“申请证书失败的提示信息”贴出来或截图我可以直接告诉你是哪一项DNS/80端口/验证文件)没通过并给出具体修复命令。
![[Pasted image 20260128165805.png]]
![](../../../assets/images/Pasted%20image%2020260128165805.png)

View File

@@ -0,0 +1,162 @@
# 生长激素缺乏预测模型 — 后台检查报告
**检查日期:** 2026-05-24
**检查范围:** 后台管理系统 + 小程序 API
**检查方式:** 远程 API 测试(未登录服务器)
---
## 一、系统概览
| 项目 | 值 |
|------|-----|
| 服务器 IP | 101.43.95.130 |
| 后台地址 | http://101.43.95.130/adminghd/login |
| 正式域名 | https://www.ruilaizipj.com |
| 框架 | ThinkPHP 5.0 |
| PHP 版本 | 5.6 |
| 数据库 | MySQL库名 `ruilai`charset=`utf8`,表前缀=`t_sys_` |
| Web 服务器 | 系统 Nginx宝塔 Nginx 已停止) |
| 代码根目录 | /www/wwwroot/code |
| 后台模块 | /www/wwwroot/code/application/adminghd |
| 小程序 API | /www/wwwroot/code/application/app |
---
## 二、功能测试结果
### 2.1 后台管理系统
| 功能 | 接口 | 状态 | 说明 |
|------|------|------|------|
| 登录页面 | GET /adminghd/login | ✅ | HTTP 200 |
| 登录验证 | POST /adminghd/Login/login | ✅ | 账号 13212345678 / 123456 |
| 用户信息 | /adminghd/Menu/getUserInfor | ✅ | 管理员 |
| 微信用户列表 | POST /adminghd/Wechatinfro/getWechatUserList | ✅ | 暂无注册用户 |
| 计算记录列表 | POST /adminghd/Wechatinfro/getWechatRecordList | ✅ | ~75 条记录15 页 |
| 资讯列表 | POST /adminghd/Wechatset/getWechatRealTimeInfoList | ✅ | 2 条资讯 |
| 记录中文搜索 | POST ...getWechatRecordList (title=诺言) | ❌ | 返回空,编码问题 |
### 2.2 小程序 API
| 功能 | 接口 | 状态 | 说明 |
|------|------|------|------|
| 计算 (Ruilaiwechat) | POST /app/Ruilaiwechat/calculate | ✅ | 计算结果正确 |
| 计算 (Ghdwechat) | POST /app/Ghdwechat/calculate | ⚠️ | 英文名正常,中文名报错 |
| 历史记录查询 | POST /app/Ghdwechat/selectRecordList | ✅ | 正常分页返回 |
| 资讯列表 | POST /app/Ghdwechat/selectRealtimeInfoList | ✅ | 正常返回 |
### 2.3 计算模型验证
**后端公式:**
```
P = exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度) /
(1 + exp(-5.908 + 0.008×IGF-1 + 2.146×LH + 0.286×子宫厚度))
```
**验证输入:** IGF=250, LH=0.8, 子宫厚度=10
**手算过程:**
```
Y = -5.908 + 0.008×250 + 2.146×0.8 + 0.286×10
= -5.908 + 2.0 + 1.7168 + 2.86
= 0.6688
P = e^0.6688 / (1 + e^0.6688)
= 1.9518 / 2.9518
= 0.661
```
**API 返回:** `calculate_resutlt: 0.661`**结果一致,公式实现正确。**
---
## 三、发现的问题
### 问题 1字符编码错误严重
**现象:** Ghdwechat/calculate 接口传入中文姓名时抛出异常:
```
PDOException: SQLSTATE[HY000]: General error: 1366
Incorrect string value: '\xB2\xE2\xCA\xD4\xBB\xBC...' for column 'name' at row 1
```
- 错误文件:`/www/wwwroot/code/application/app/controller/Ghdwechat.php` 第 134 行
- 写入表:`t_sys_wechat_calculate_record`
- 根因分析:数据库 charset 为 `utf8`3字节UTF-8`\xB2\xE2\xCA\xD4\xBB\xBC` 是 GBK 编码的"测试患"。说明请求数据以 GBK 编码到达 PHP但 MySQL 连接期望 UTF-8导致不兼容。
- 影响范围:小程序端如传入中文姓名,计算将失败
- 注意Ruilaiwechat/calculate 接口无此问题(可能是不同的编码处理)
**数据库配置(来自异常页面的 dump**
```
type: mysql
hostname: 127.0.0.1
database: ruilai
charset: utf8 ← 不是 utf8mb4
prefix: t_sys_
debug: true
```
### 问题 2后台中文搜索不生效中等
**现象:** 在后台计算记录列表中搜索"诺言"(数据库中存在多条该名字的记录),返回空结果。
- 接口:`POST /adminghd/Wechatinfro/getWechatRecordList` (title=诺言)
- 返回:`{"lists":[],"lastPage":0}`
- 根因与问题1同源 — 搜索关键词和数据库存储的编码不一致
### 问题 3生产环境 Debug 模式开启(严重-安全)
**现象:** API 出错时抛出完整的 ThinkPHP 异常页面,暴露:
- 完整文件路径(/www/wwwroot/code/...
- 数据库配置信息(主机、库名、表前缀)
- 完整的 SQL 语句
- 调用堆栈
**配置:** `app_debug: true`(位于 application/config.php
**风险:** 攻击者可利用这些信息进行精准攻击。
### 问题 4PHP 5.6 版本过旧(中等)
PHP 5.6 已于 2018 年 12 月 31 日 EOL不再接收安全更新。存在已知的远程代码执行漏洞CVE-2019-11043 等)。
---
## 四、当前数据库表使用情况
| 数据表 | 记录数 | 说明 |
|--------|--------|------|
| t_sys_user | 至少 1 条 | 后台管理员 |
| ghd_wechat_user | 0 条 | 无注册用户 |
| t_sys_wechat_calculate_record | ~75 条 | 计算记录(含最新测试数据) |
| t_sys_wechat_real_time_info | 2 条 | 资讯 |
---
## 五、修复建议(按优先级)
| 优先级 | 问题 | 修复方案 |
|--------|------|----------|
| 🔴 高 | Debug 模式泄漏信息 | 修改 `application/config.php``app_debug => false` |
| 🔴 高 | 字符编码导致中文报错 | 1) 数据库 charset 改为 `utf8mb4`2) PHP PDO 连接确保 `set names utf8mb4`3) Ghdwechat.php 排查编码处理逻辑 |
| 🟡 中 | 中文搜索不生效 | 同编码问题修复后应自动解决 |
| 🟡 中 | PHP 5.6 EOL | 升级到 PHP 7.4+(需验证 ThinkPHP 5.0 兼容性) |
| 🟢 低 | 数据库 charset=utf8 | 改为 `utf8mb4` 以支持完整 Unicode含 emoji 等 4 字节字符) |
---
## 六、未检查项目
以下项目需要登录服务器后才能检查:
- [ ] Nginx 配置文件内容确认
- [ ] PHP-FPM 运行状态和配置
- [ ] MySQL 数据库完整表结构
- [ ] 日志文件(应用日志、错误日志)
- [ ] 磁盘空间和服务器资源
- [ ] 定时任务 / 数据备份
- [ ] SSL 证书有效期
- [ ] 小程序源码szjs/ 目录)

View File

@@ -1,3 +0,0 @@
[https://www.ruilaizipj.com/adminghd/login](https://www.ruilaizipj.com/adminghd/login)
账户13212345678
密码123456

View File

@@ -1,7 +1,7 @@
https://www.bt.cn/bbs/thread-1172-1-1.html
宝塔面板密码修改
cd /www/server/panel && btpython tools.py panel testpasswd
![[Pasted image 20260128112510.png]]
![](../../../assets/images/Pasted%20image%2020260128112510.png)
## 宝塔面板登录信息
@@ -14,3 +14,8 @@ https://101.43.95.130:38193/e626af3f
- 用户名0dbelvc8
- 密码testpasswd
先关闭然后点击Let Encrypt重新申请
![](../../../assets/images/Pasted%20image%2020260524111918.png)

View File

@@ -1,3 +1,14 @@
工作目录
D:\zhiku\mkdocs\docs\Obsidian笔记体系\Projects
资料目录
D:\zhiku\mkdocs\docs\Obsidian笔记体系\Projects
D:\zhiku\mkdocs\docs\Obsidian笔记体系\Projects\女童生长激素项目\ssl证书申请.md
项目资料
[https://www.ruilaizipj.com/adminghd/login](https://www.ruilaizipj.com/adminghd/login)
账户13212345678
密码123456
##
项目根目录: /www/wwwroot/code
@@ -34,4 +45,5 @@
└── composer.json        # 项目依赖配置
后台登录地址 https://www.ruilaizipj.com/adminghd/login 对应的路由在 /www/wwwroot/code/application/adminghd/controller/ 目录下的控制器中处理。
后台登录地址 https://www.ruilaizipj.com/adminghd/login 对应的路由在 /www/wwwroot/code/application/adminghd/controller/ 目录下的控制器中处理。

View File

@@ -1,3 +1,14 @@
cd D:\cd\claude-code
$env:ANTHROPIC_API_KEY="sk-fdf7cc1c73504e628ec0119b7e11b8cc"
$env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
$env:ANTHROPIC_MODEL="deepseek-v4-pro"
bun run dev
记忆:
瑞来健康项目资料
@@ -22,18 +33,16 @@ Gitea 和服务器 /home/renjianbo/saars/rlz/和本地 D:\androidPj\rlz 代码
可参考D:\aaa\aiagent\docs\创建工单总结.md
每次修改完成后将经验总结成文档输出到项目文档D:\androidPj\rlz\docs\
数据库配置
DATABASE_URL=mysql+pymysql://root:!Rjb12191@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/rlz?charset=utf8mb4
D:\androidPj\rlz\peizhen
小程序客户端购买了服务android服务的没有收到订单

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

View File

@@ -1 +1 @@
![[Pasted image 20260129103227.png]]
![](../../assets/images/Pasted%20image%2020260129103227.png)