这是一个基于PHP和MariaDB开发的个人小文章阅读平台,具备响应式设计和主题切换功能,支持文章浏览、搜索、收藏及管理等操作,建议配合n8n定时采集工具实现自动化文章入库,完美适配群晖NAS环境部署,为您打造专属的离线知识库。
- 当前版本: v1.0
- 开发状态: 已发布
- 📚 文章列表展示 - 响应式布局,支持分页加载和页码导航
- 🔍 智能搜索 - 支持文章标题和内容搜索,标题匹配结果优先展示,带关键词高亮
- 📝 关键词上下文摘要 - 搜索时展示关键词前后的上下文内容,提供更精准的搜索预览
- 💾 收藏管理 - 一键收藏和取消收藏文章,支持筛选显示收藏内容
- 🗑️ 文章删除 - 支持删除不需要的文章,带确认提示
- 📊 点击量统计 - 自动记录文章阅读次数
- 🌓 主题切换 - 支持白天/夜间模式,本地保存主题偏好,自动适配系统设置
- 📱 响应式设计 - 适配各种屏幕尺寸
- 🎨 现代化UI - 简洁美观的界面设计
- 🔢 分页导航 - 支持页码快速跳转、上一页/下一页导航
- 🔔 操作通知 - 提供友好的操作反馈提示
- 后端 - PHP 8.2+, MariaDB/MySQL
- 前端 - HTML5, CSS3, JavaScript (ES6+)
- 数据库 - PDO连接,支持参数化查询防止SQL注入
NAS-Reader/
├── api/ # 后端API接口
│ ├── config.php # 数据库配置文件
│ ├── db.php # 数据库连接
│ ├── articles.php # 文章列表接口
│ ├── article.php # 文章详情接口
│ └── action.php # 操作接口(收藏、删除等)
├── css/ # 样式文件
│ └── style.css # 主样式文件,包含主题系统
├── js/ # JavaScript文件
│ └── app.js # 前端交互逻辑
├── images/ # 图片资源目录
├── index.html # 主页面
└── README.md # 项目说明文档
需要创建一个名为Books的数据库,并创建以下表:
CREATE TABLE `bookhub` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) DEFAULT NULL,
`info` longtext DEFAULT NULL,
`hits` int(10) DEFAULT NULL,
`store` int(1) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `title` (`title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;项目使用独立的配置文件管理数据库连接信息,以提高安全性。配置文件位置:api/config.php。
- 创建配置文件:在
api目录下创建config.php文件(如果不存在) - 配置内容:
<?php
// 数据库配置文件 - 请勿提交到版本控制系统
// 注意:请根据实际环境修改以下配置信息
// 数据库连接信息
return array(
'host' => '192.168.0.88', // 数据库主机IP(如群晖NAS的IP)
'port' => 3307, // 数据库端口
'db_name' => 'Books', // 数据库名
'username' => 'phpuser', // 数据库用户名
'password' => 'your_password' // 数据库密码
);-
参数说明:
host:数据库服务器地址port:数据库端口(默认3307,MariaDB常用端口)db_name:数据库名称username:数据库用户名password:数据库密码
-
配置文件使用方法:
- 系统会自动从
config.php加载配置 - 确保配置文件权限设置正确,避免未授权访问
- 在生产环境中使用强密码并限制访问权限
- 系统会自动从
-
安装必要套件
- 在群晖DSM中打开「套件中心」
- 安装「Web Station」套件
- 安装「MariaDB」套件(推荐MariaDB 10+版本)
- 安装「phpMyAdmin」套件(用于数据库管理,可选)
-
配置Web Station
- 打开「Web Station」→「PHP设置」→「创建」
- 选择PHP 8.2或更高版本
- 启用必要的扩展(如mysqli、pdo_mysql等)
- 保存设置
- 点击「虚拟主机」→「创建」→「基于端口的设置」
- 设置端口(如7878)和文档根目录(指向NAS-Reader文件夹)
- 选择刚才创建的PHP配置文件
-
配置数据库
- 打开「phpMyAdmin」(或通过SSH连接使用命令行)
- 创建名为
Books的数据库 - 导入表结构(使用上面提供的SQL语句)
- 为数据库创建具有适当权限的用户(推荐使用非root用户)
-
修改项目配置
- 编辑
api/config.php文件 - 修改数据库连接信息,使用群晖NAS的IP地址、数据库名、用户名和密码
- 编辑
-
访问网站
- 在浏览器中输入
http://[群晖NAS的IP地址]:[配置的端口]/ - 例如:
http://192.168.0.18:7878/
- 在浏览器中输入
若遇到数据库访问速度缓慢的问题,可通过修改配置文件解决:
- 找到MariaDB的配置文件my.cnf(如/volume1/@appstore/MariaDB10/usr/local/mariadb10.11/etc/mysql/my.cnf)
- 在配置文件的[mysqld]部分添加"skip-name-resolve"配置项
- 保存修改后重启MariaDB服务(或直接重启NAS设备)
此优化措施通常能显著提升数据库的响应速度。
- Chrome 70+
- Firefox 65+
- Safari 13+
- Edge 80+
GET /api/articles.php?page=1&limit=20&search=&sort=newest
搜索功能优化说明:
- 支持标题和内容搜索
- 标题中包含关键词的结果优先排序
- 搜索结果摘要会显示关键词前后的上下文内容(前20字符,后40字符)
- 最大支持每页60条数据
GET /api/article.php?id=1
POST /api/action.php
Body: {"action": "store", "id": 1}
- 已实现参数化查询,防止SQL注入
- 建议在生产环境中移除调试信息
- 建议使用HTTPS协议
- 可根据需要增加用户认证系统(如基于Session的登录)
- 建议限制API接口的访问IP范围,防止未授权访问
- 不建议暴露在公网上的群晖NAS上部署本系统,建议在内部网络部署
- 邮箱:7740840@qq.com
- 抖音:@闲沐工坊
- QQ:7740840