PDF 预览系统 (PDF Preview Site)
这是一个安全、现代化的 PDF 预览系统,具有管理员后台和公共预览功能。
🖥 本地开发
前后端分开运行:
# 终端 1:启动后端(API 服务)
cd backend && npm install && npm start
# → http://localhost:3000
# 终端 2:启动前端(开发服务器,支持热更新)
cd frontend && npm install && npm run dev
# → http://localhost:5173
📦 打包 & 部署到服务器
只需要上传 backend 文件夹即可,步骤如下:
第一步:在本地打包前端
cd frontend
npm run build
执行后,前端产物会自动输出到 backend/public/ 目录中。
第二步:上传 backend 文件夹到服务器
将整个 backend/ 文件夹上传到服务器(通过 FTP/SCP/Git 均可)。
Important
上传时注意包含以下内容:
backend/public/(前端打包产物,刚才 build 生成的)backend/uploads/(已上传的 PDF 文件)backend/database.sqlite(数据库文件,包含管理员账号和文档记录)可以把
backend/node_modules/排除,在服务器上重新npm install即可。
第三步:在服务器上启动
cd backend
npm install # 仅首次或依赖变更时需要
npm start # 启动服务
访问 http://服务器IP:3000 即可看到网站,前后端都由这一个进程提供服务。
第四步(推荐):用 PM2 长期运行
npm install pm2 -g # 全局安装 PM2(仅首次)
pm2 start server.js --name pdf-site # 后台启动
pm2 save && pm2 startup # 设置开机自启
常用管理命令:
pm2 status # 查看运行状态
pm2 logs pdf-site # 查看日志
pm2 restart pdf-site # 重启服务
🔐 管理后台
- 后台地址:
http://服务器IP:3000/admin - 默认用户名:
admin - 默认密码:
123456
Warning
生产环境请务必修改默认密码!详见修改方法:在
backend目录运行以下命令(替换新用户名/密码):node -e "const db=require('./database');const bcrypt=require('bcryptjs');const h=bcrypt.hashSync('新密码',10);db.prepare('UPDATE users SET username=?,password=? WHERE id=1').run('新用户名',h);console.log('已更新');"
🛠 技术栈
- 前端: Vue 3 + Vite + Glassmorphism UI
- 后端: Node.js + Express(同时托管前端静态文件)
- 数据库: SQLite (better-sqlite3)
- PDF 处理: 提取前两页进行预览
📁 目录结构
/frontend: Vue 3 源码(本地开发用,部署后不需要上传)/backend: Node.js 服务 + 前端打包产物(部署只需上传这个)/backend/public/: 前端 build 产物(由npm run build自动生成)/backend/database.sqlite: 存储文档信息和管理员账号