# 让作品被看见 **Repository Path**: wkzcode/make-your-creations-stand-out ## Basic Information - **Project Name**: 让作品被看见 - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-18 - **Last Updated**: 2026-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 个人主页、作品集与内容管理系统 这是一个基于 PHP MVC 和服务端渲染的个人内容站,包含首页、文章、作品、时间轴、友情链接、评论、后台管理、个人访问令牌 API 与七牛云媒体管理。前端不依赖框架或外部字体,支持亮色、深色、移动端、键盘操作和减少动态效果。 ## 主要能力 - 文章与作品:草稿、定时发布、回收站、版本历史、批量操作、独立 SEO 和多种 Markdown 阅读风格。 - 媒体资产:七牛云直传、上传完成登记、引用追踪、历史索引重建、孤儿隔离和安全删除。 - 数据安全:作品 HTML 白名单过滤、SSRF 安全的失效链接检查、操作审计、加密数据库备份。 - 内容运营:全站搜索、评论审核、分类与标签、首页区块、媒体库和维护中心。 - 开放接口:文章、作品、搜索、媒体、版本历史和批量管理 API;令牌按 scope 最小授权。 公开内容统一遵循同一规则:`status = 1`、未进入回收站且 `published_at` 不晚于当前时间。未来发布时间会在后台显示为“定时发布”,到时自动公开,不需要额外定时任务。 ## 运行环境 - PHP 8.0+,扩展:`pdo_mysql`、`json`、`curl`、`mbstring`、`gd`、`openssl`、`dom` - MySQL 5.7+ 或 MariaDB 10.3+ - Composer - 推荐 Nginx + PHP-FPM,站点根目录必须指向 `public/` ## 安装与升级 ```bash composer install --no-dev --optimize-autoloader ``` 确认 `config/` 和 `storage/` 可写,然后访问站点进入安装向导。安装器会依次执行基础 Schema、种子数据和 `database/migrations/` 中尚未执行的幂等迁移。升级时直接覆盖程序文件并重新访问站点即可;迁移只补充缺失字段、索引和表,不会重建或清空已有内容。 安装完成后会生成 `config/config.php` 与 `storage/installed.lock`。请保证 `config/`、`storage/`、`app/`、`database/` 不可通过 Web 直接访问。 后台入口:`/admin`。前台用户登录:`/login`。 ## 日常维护 维护命令统一从项目根目录执行: ```bash php bin/console backup:create php bin/console backup:cleanup php bin/console links:check 500 php bin/console media:reindex php bin/console media:reconcile 5000 php bin/console media:retry-delete php bin/console maintenance:run ``` 建议服务器每天执行一次: ```cron 15 3 * * * cd /var/www/site && /usr/bin/php bin/console maintenance:run >> storage/logs/maintenance.log 2>&1 ``` `maintenance:run` 会创建加密数据库备份、执行保留策略、重试媒体删除任务、清理过期审计/API 请求,并在每周日检查外部链接。默认保留 7 个日备份和 4 个周备份。 备份使用 `app_key` 派生的 AES-256-GCM 密钥,保存于非公开的 `storage/backups`。备份包含数据库结构、数据、迁移记录、校验和与七牛 Key 清单,不复制七牛云中的实际文件;因此仍应在七牛控制台配置合适的存储冗余和生命周期策略。 ## 媒体与永久删除 后台上传由服务器签发七牛凭证,浏览器直传后调用“上传完成登记”接口写入媒体库。永久删除文章或作品时,系统先计算专属与共享文件:专属七牛文件全部删除成功后,才会在事务中清理内容、评论、标签、版本和引用;失败时内容继续留在回收站并可重试。共享文件与外部 URL 不会被误删,孤儿媒体也不会自动删除。 首次启用媒体库后建议执行: ```bash php bin/console media:reindex php bin/console media:reconcile 5000 ``` 前者扫描现有数据库引用,后者将 Bucket 中未登记对象放入隔离列表,等待人工确认。 ## API 文档 - [API 快速说明](docs/api/README.md) - [OpenAPI 3.1](docs/api/openapi.yaml) - [可复制交付的 API 使用文档](API使用文档/README.md) - [快速使用指南](API使用文档/快速使用指南.md) 后台“API 令牌”页面也内嵌了自动补齐当前域名的调用示例。令牌明文只显示一次,请按用途分开创建并授予最少 scope。 ## 安全说明 - 数据库访问统一使用 PDO 预处理,密码使用 `password_hash`。 - 后台表单使用 CSRF,公开写接口和上传接口有限流。 - API 令牌仅保存 SHA-256 哈希,审计日志会遮蔽密码、令牌和存储密钥。 - 作品 HTML 在保存和前台输出时经过白名单过滤;iframe 只允许后台配置的域名。 - 外链检查拒绝本机、内网、保留 IP、用户信息 URL 和非 80/443 端口,并固定 DNS 解析结果。 ## 目录 ```text app/ PHP MVC、服务、视图与中间件 bin/console CLI 维护入口 config/ 配置文件 database/ 基础 Schema、种子与幂等迁移 docs/api/ API 文档与 OpenAPI public/ 唯一 Web 根目录与静态资源 routes/ 前台、后台和 API 路由 storage/ 缓存、日志、会话与加密备份 tests/ Node 静态回归与契约测试 API使用文档/ 可独立复制的 API 文档 ``` ## 开源协议 本项目采用 [MIT License](LICENSE)。你可以使用、修改、分发和商用本项目,但必须在副本或主要衍生作品中保留原始版权与许可声明。项目按“现状”提供,不附带任何明示或默示担保。