bwstudio
|
be99b8a925
|
feat(data): 数据库搬到 data/ 目录 + SQLite WAL + 单卷绑定挂载
- config.py 新增 PEAR_DATA_DIR(默认 <项目根>/data),SQLite 库、Flask-Session
统一收进 DATA_DIR;不设时本地开发行为不变
- applications/__init__.py 顶部先 load_dotenv,保证 .env 里的 PEAR_DATA_DIR
在 config 导入时就生效
- extensions/init_sqlalchemy.py 接 SQLite connect 事件:WAL + synchronous=NORMAL
+ busy_timeout=30s(多 worker 写不再撞锁)
- config.py 注入 SQLALCHEMY_ENGINE_OPTIONS(pool_pre_ping + SQLite connect_args
超时;MySQL 路径下自动跳过 connect_args 防止参数错误)
- 新增 alembic 迁移 a47a5d2a3f1b 建 site_nav_click(含 anon_id 字段),
解决之前该表只由 db.create_all 建、不在迁移链里的隐患
- .gitignore / .dockerignore 加 data/ 排除规则(且把 migrations/ 从
ignore 里重新放行 —— 否则新加的迁移进不了库)
- NAS Docker 部署全面重写:
- compose 唯一绑定挂载 ./data:/app/data,宿主 File Station 看得见
- start.sh 自检 data 目录 + 子目录;workers 默认改为 1 threads 8
(SQLite 写串行,单进程最稳)
- 新增 backup.sh:sqlite3 .backup 在线热备(确保 WAL 一致性)+ 压缩
+ 保留 14 天
- Dockerfile 安装 sqlite3 客户端备用,建 /app/data 子目录并 chown
- docs/deployment-nas.md 重写数据持久化章节(路径表 + 热备命令 +
恢复步骤 + 整库迁移 tar/untar 流程)
|
2026-09-06 19:43:28 +08:00 |
|
bwstudio
|
98edfdaf2d
|
feat(deploy): 个人 NAS 单机 Docker 部署方案
适用:内网 / 家庭 / 小团队(≤50 并发),无 K8s 需求。
特性:单容器 + SQLite + 端口暴露,最小维护成本。
新增:
- deploy/nas/Dockerfile: python:3.11-slim 基础镜像 + 非 root + HEALTHCHECK
- deploy/nas/start.sh: flask db upgrade 幂等迁移 + gunicorn (2 workers × 4 threads)
- deploy/nas/docker-compose.yaml: 单服务 + 4 个命名卷 (db/logs/session/upload) + 资源限制
- docs/deployment-nas.md: 完整部署/备份/升级/排障指南
完善:
- .env.example: 改为生产环境导向 (PEAR_ENV=pro,SECRET_KEY 必填)
- .dockerignore: 排除 deploy/dev (开发用容器配置)、tests/截图、一次性脚本
- applications/view/public/__init__.py: 注释说明 /healthz 已在 applications/view/health.py 注册
复用现有:
- /healthz 接口 (applications/view/health.py) 含 DB 探活,DB 不可达返回 503
→ 容器 HEALTHCHECK 直接用 /healthz 即可
⚠️ 本机无 docker,未执行 docker build 验证;已静态校验 YAML/bash 语法、
文件路径、.env 字段消费、ProConfig 严格性、/healthz 端点可用性。
首次 NAS 上部署时跑一遍文档步骤即可。
|
2026-09-06 18:35:31 +08:00 |
|
bwstudio
|
0ffc103e46
|
feat(plugins): 4 个业务插件代码 + 前台公开页面改造
plugins/navManager:导航 CRUD + 导航分类 CRUD(独立 blueprint)
plugins/friendManager:友情链接 CRUD
plugins/aboutManager:关于本站 CRUD
plugins/siteStats:访问统计主页 + JSON 接口 + /site/* GET 埋点 + nav 卡片点击埋点
applications/view/public/nav.py:导航聚合页 / 分类详情 / JSON 接口,支持 visit_count 注入
applications/view/public/about.py:关于本站公开页
applications/view/public/friend.py:友情链接公开页
templates/public/base.html:响应式首页(搜索框 / 分类抽屉 / 5 主题切换 / footer 隐私小字)
templates/public/index.html / category.html:卡片右下角访问次数
templates/public/about.html / friend.html:关于 + 友链前台页
docs/plugins-development.md:插件开发完整指南(生命周期 + 4 个示例 + FAQ + framework 迁移)
scripts/:探针与端到端验证脚本(probe_*/verify_*/test_*)
|
2026-09-06 18:18:06 +08:00 |
|
bwstudio
|
1214bfdf4a
|
feat(ops): 环境变量化配置 + 健康检查 + 启动脚本 + 部署/安全文档
主要变更:
config
- 引入 python-dotenv,从 .env 加载 SECRET_KEY / MAIL_* / SQLALCHEMY_DATABASE_URI
- 拆分 BaseConfig / DevConfig / ProConfig,PEAR_ENV 控制切换
- ProConfig 在 init_app() 校验 SECRET_KEY,禁止使用默认值
ops
- 新增 /healthz 端点:DB 探活 + 环境名 + 时间戳,失败返回 503
- 新增 start.bat (Windows) / Makefile (跨平台) 一键启动 / 初始化
- 新增 .env.example 模板;.gitignore 排除 .env / logs / vscode 等
- 新增 docs/DEPLOY.md(部署指南)和 docs/SECURITY.md(安全清单)
- app.py 不再硬编码 debug=False,交给配置类决定
本提交不包含上一次会话的其它工作树修改(模板/导航相关),后续单独 PR。
|
2026-09-05 20:46:12 +08:00 |
|
wojiaoyishang
|
23db487356
|
添加文档构建章节
|
2025-01-31 10:51:11 +08:00 |
|
wojiaoyishang
|
c5b70d90fb
|
更新文档与预览地址
|
2025-01-30 17:04:30 +08:00 |
|
wojiaoyishang
|
552bf77924
|
完善文档并添加示例插件
|
2025-01-30 16:56:12 +08:00 |
|
wojiaoyishang
|
ac1f82e81d
|
基本完成文档
|
2025-01-30 10:31:50 +08:00 |
|
wojiaoyishang
|
41bda82c60
|
完善开发文档与调整初始化项目架构
|
2025-01-28 17:47:41 +08:00 |
|
wojiaoyishang
|
da5917344e
|
更新文档,完善插件功能
|
2025-01-27 21:34:42 +08:00 |
|
wojiaoyishang
|
feed91dcd0
|
完善文档最佳实践
|
2025-01-27 20:41:22 +08:00 |
|
wojiaoyishang
|
5153daf7da
|
更新文档
|
2025-01-27 19:48:27 +08:00 |
|
wojiaoyishang
|
155af93c77
|
完善开发文档与合并 admin_log 文件
|
2025-01-27 11:30:59 +08:00 |
|
wojiaoyishang
|
0db36a6218
|
完善开发文档与更新函数注释
|
2025-01-27 11:16:26 +08:00 |
|
wojiaoyishang
|
de4f2c6d52
|
完善快速开始文档
|
2025-01-26 20:45:54 +08:00 |
|
 陈心巧andGitee
|
dbb03e3e44
|
update docs/install.md.
requirement.txt 改成了requirements.txt。
bat 是 win下的, 这里原来写反了。
另外 在执行 flask db init 会报错导入不了BaseQuery,因为 Flask-SQLAlchemy 在3.0后,BaseQuery改成了Query。
Signed-off-by: 陈心巧 <12432082+chenxinqiao@user.noreply.gitee.com>
|
2023-09-22 04:15:08 +00:00 |
|
不胜舟
|
90b6564ce6
|
完善文档
|
2023-06-21 01:44:52 +08:00 |
|
不胜舟
|
4e7a85bead
|
去除首页面,优化命名,优化schema
|
2023-06-21 01:15:56 +08:00 |
|
 我叫以赏andGitee
|
08713149b1
|
doc: 补充 README.md 文件缺失图片
Signed-off-by: 我叫以赏 <lovepikachu@foxmail.com>
|
2023-04-16 22:01:11 +00:00 |
|
我叫以赏
|
0569d32784
|
doc: 更新 master 文档,并移除多余图片
|
2023-04-16 16:38:18 +08:00 |
|
不胜舟
|
269cc154ab
|
规范python包文件名,更新群聊
|
2023-04-05 23:53:44 +08:00 |
|
不胜舟
|
f6d7d7d84c
|
edit md
|
2022-12-28 00:34:08 +08:00 |
|
zhengxinonly
|
d9a5bcb0de
|
调整目录结构
|
2021-06-12 21:20:13 +08:00 |
|