- Table of Contents
- NOTE
- Main Tech Stack
- Overkill Everywhere
- Features to be Proud Of
- Features
- Install & use
- Commands
- Environment Variables
Ads: 雨云 5 折优惠码
github,绑定微信即可领取,aff 连接:https://www.rainyun.com/github_
Ads: 毫秒镜像,好用的 Docker 镜像站,aff 链接(免费 200MiB 流量):https://1ms.run/?aff=2853
Warning 虽然本项目已经进入正式发布版本,但仍然存在一些问题,请勿用于生产环境,这可能造成严重的数据丢失或数据损坏问题。
本项目版本号命名于 1.0.0 后开始遵循语义化版本 2.0 规范
当你浏览这个项目,你可以看到:
- 一堆 AI 和一个人脑在互相博弈
- 大量的语法不统一
- 随处可见的 bug
- 各种不符合 PSR 规范
- 随处可见的安全漏洞
- 使用的依赖库达到了 60MiB
- 如何让执行效率变的很低
- 如何将 MySQL 项目硬改为 PGSQL 项目并且获得许多 bug
doc 目录下的文档均由 AI 博弈而来
此项目是一个几乎不叫半成品的残次品,你甚至无法从后台设置中修改很多网站设置,而是需要前往数据库修改
本项目不适用于作为深度学习的训练数据集使用,因为这样做会使模型质量下降
浮动链接功能不建议启用,因为其中包含 AFF 替换,详见 FloLinkService.php
中的 rewriteAffiliateLink 方法,如需使用请自行修改相关 AFF
- Webman
- Twig
- ES
- RabbitMQ
- Redis
- PostgreSQL
- LLM(For development)
ES 仅仅被用于搜索优化,这也许说得过去
友链的 callback 和监控功能、邮件发送、缓存生成等能使用事件或轮询的地方全部使用了消息队列
放着原本的高度集成的 MySQL 不用,硬生生顶着一堆 BUG 重构为了 PGSQL
一个由 GPT-5 编写的较为直观的同义词管理页
一个由 GPT-5 编写的友链审核页面
一个由 GPT-5 编写的看起来简单实则一点也不复杂的监控系统
一个由我和 AI 编写的使用了 Vditor 的编辑器
TwigTemplateService.php 实现了 Webman\View 接口,添加了主题模板功能,会根据数据库中配置的主题信息选择进入哪个子目录
CSRFService.php 提供了 CSRF 令牌相关的功能,支持众多特性,包括一次性令牌,限时令牌,绑定到某个参数的令牌等,并且只要在控制器上添加注解即可启用 CSRF 验证
CacheService.php 封装了 Redis 的功能,提供了缓存功能,支持多种缓存驱动,有 GPT-5 编写的貌似不能用的防止缓存穿透的设计,并且附带有缓存回退等高级功能
WordpressImporter.php 和 ImportProcess.php 实现了从 WordPress 导入的功能
StaticGenerator.php 实现了全站静态缓存生成的功能
LinkMonitor.php 实现了友链监控的功能
MailWorker.php 和 MailService.php 实现了多发信平台轮询使用的功能,并且提供发信失败自动隔离的功能
DebugToolkit.php 提供一个简易工具箱用于监测页面渲染时间、请求数据等,还提供一个简易请求发送工具
基本依赖:
- PostgreSQL(可选 MySQL/SQLite)
- PHP >= 8.4
- PHP PDO 扩展
- PHP pdo_pgsql 扩展(可选其他驱动以支持其他数据库)
**由于追求较为极致的性能,首页并不存在安装检测的相关代码,首次启动需访问 /app/admin 进行安装,安装完成后请重启应用以实现扩展进程的资源初始化
**
若要完整使用博客功能,请安装:
- PostgreSQL: 主要数据库(必须安装,也可使用 MySQL/SQLite 但是性能受限)
- Redis: 缓存数据库(可选安装,不启用则不支持调用统计等功能,同时支持 Memcached/APCu/memory)
- ElasticSearch: 全文索引数据库(可选安装,不启用则不支持索引优化、同义词等功能,将回退到数据库搜索)
- RabbitMQ: 消息队列(必须安装)
Warning
本项目仍然处于开发阶段,因此它不推荐被用于生产环境
一键部署:
使用 docker compose 部署:
首先请复制本项目的 compose 目录到您的服务器中,然后进入该目录。
使用您喜欢的编辑器编辑目录下的 .env 文件来进行自定义配置(请务必修改密码),然后执行命令:
sudo bash ./init-data-dirs.sh
sudo docker compose up -d如果使用宝塔面板等可直接安装 PHP 环境后使用命令行启动
# 克隆当前项目
git clone https://github.com/skyhhjmk/windblog.git && cd windblog
# 安装依赖
composer --no-dev install -vvv
# 启动
./console start如果您遇到了任何问题,请优先尝试运行修复命令以解除某些函数的禁用(会允许包括 exec 在内的多个函数)
./console fix-disable-functions当项目启动后,访问 /app/admin 即可看到安装页面(为了优化一点性能,首页并没有做安装检测)
是否安装的检测依据是根目录是否有 .env 文件,有则视为已安装并且使用文件中定义的环境变量运行
仅包含部分命令的说明
# Linux
./console help
# Windows
php ./console help# Linux
./console
# Windows
php ./console# Linux
./console config:admin:re-init
# Windows
php ./console config:admin:re-init# Linux
./console config:re-init
# Windows
php ./console config:re-init# Linux
./console config:db
# Windows
php ./console config:db# Linux
./console config:redis
# Windows
php ./console config:redis# Linux
./console check:requirements
# Windows
php ./console check:requirements# Linux
./console cache:clear
# Windows
php ./console cache:clear| Name | Function | Default |
|---|---|---|
| DEPLOYMENT_TYPE | 部署类型 | datacenter |
| DB_DEFAULT | 数据库类型 | pgsql |
| APP_DEBUG | 调试模式 | false |
| WEB_SERVER_PROCESS_COUNT | Web 服务器进程数 | CPU 核心数 * 4 |




