无头CMS部署和使用指南
2025/8/10大约 5 分钟
无头CMS部署和使用指南
概述
本文档介绍如何部署和使用基于fizz-authorization的无头CMS系统,该系统为pb-website提供内容管理服务。
系统架构
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ pb-website │ │fizz-authorization│ │fizz-authorization│
│ (官网前端) │◄───┤ (CMS后端) │◄───┤ -admin │
│ │ │ │ │ (管理后台) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
内容消费端 无头CMS API 内容管理端 部署步骤
1. 数据库迁移
1.1 执行迁移脚本
在fizz-authorization项目中执行数据库迁移脚本:
-- 执行 db/migration/V1.1__extend_content_for_headless_cms.sql
mysql -u username -p database_name < db/migration/V1.1__extend_content_for_headless_cms.sql 1.2 验证迁移结果
检查表结构是否正确创建:
-- 检查blade_content表的新字段
DESCRIBE blade_content;
-- 检查索引是否创建
SHOW INDEX FROM blade_content;
-- 检查视图是否创建
SHOW TABLES LIKE 'v_published_content'; 2. 后端部署
2.1 更新fizz-authorization
确保新的Java类已编译:
ContentTypeEnum.javaPublicContentController.java- 扩展的
Content.java和ContentVO.java SlugUtils.java
重启fizz-authorization服务:
# 停止服务 sudo systemctl stop fizz-authorization # 启动服务 sudo systemctl start fizz-authorization # 检查状态 sudo systemctl status fizz-authorization
2.2 验证API接口
测试公开API接口是否正常工作:
# 测试获取内容列表
curl -X GET "http://localhost:8080/client/cms/contents?size=5"
# 测试通过slug获取内容
curl -X GET "http://localhost:8080/client/cms/contents/slug/test-content"
# 测试搜索功能
curl -X GET "http://localhost:8080/client/cms/search?keyword=测试" 3. 管理后台部署
3.1 更新fizz-authorization-admin
确保新的Vue组件已更新:
content.vue- 扩展的内容管理界面dashboard.vue- CMS仪表板content.js- 扩展的API调用
重新构建和部署前端:
cd fizz-authorization-admin npm run build # 部署到Web服务器
3.2 验证管理功能
- 登录管理后台
- 进入CMS -> 内容管理
- 测试新功能:
- 创建不同类型的内容
- 设置SEO字段
- 发布/取消发布内容
- 生成slug
4. pb-website部署
4.1 配置CMS API
更新VuePress配置中的API地址:
// src/.vuepress/client/cmsApi.js
const CMS_CONFIG = {
baseURL: 'https://your-cms-api.com', // 更新为实际API地址
apiPrefix: '/client/cms',
timeout: 10000
} 4.2 构建和部署
cd pb-website
npm run build
# 部署到CDN或Web服务器 使用指南
1. 内容管理
1.1 创建内容
- 登录fizz-authorization-admin
- 进入"CMS" -> "内容管理"
- 点击"新增"按钮
- 填写内容信息:
- 标题: 内容标题
- 内容类型: 选择页面、文章、产品、服务等
- URL标识(slug): 留空自动生成,或手动设置
- 语言: 选择中文或英文
- 分类: 选择内容分类
- 内容摘要: 简短描述
- 特色图片: 上传图片
- SEO标题: 搜索引擎显示的标题
- SEO描述: 搜索引擎显示的描述
- SEO关键词: 多个关键词用逗号分隔
1.2 发布内容
- 创建内容后,状态为"草稿"
- 点击"发布"按钮将内容发布
- 发布后的内容会在pb-website上显示
1.3 管理内容
- 编辑: 点击编辑按钮修改内容
- 预览: 点击预览按钮查看效果
- 取消发布: 将已发布内容改为草稿状态
- 删除: 删除不需要的内容
2. 内容类型说明
2.1 页面 (Page)
- 用于静态页面内容
- 如:关于我们、联系我们等
- URL格式:
/slug.html
2.2 文章 (Article)
- 用于新闻、博客等文章内容
- 显示发布时间和浏览次数
- URL格式:
/news/slug.html
2.3 产品 (Product)
- 用于产品信息展示
- URL格式:
/products/slug.html
2.4 服务 (Service)
- 用于服务介绍
- URL格式:
/material/slug.html
2.5 组件 (Component)
- 用于可复用的内容块
- 如:轮播图、特性展示等
2.6 数据 (Data)
- 用于结构化数据
- 如:公司信息、统计数据等
3. SEO优化
3.1 设置SEO字段
为每个内容设置:
- SEO标题: 不超过60个字符
- SEO描述: 不超过160个字符
- SEO关键词: 相关关键词,用逗号分隔
3.2 URL优化
- 使用有意义的slug
- 避免使用特殊字符
- 保持URL简短易记
4. 多语言支持
4.1 创建多语言内容
- 为同一内容创建不同语言版本
- 设置正确的语言代码(zh/en)
- 使用相同的分类和标签
4.2 语言切换
前端会根据用户语言偏好显示对应语言的内容。
故障排除
1. API接口无法访问
问题: 前端无法获取CMS内容
解决方案:
- 检查fizz-authorization服务是否正常运行
- 检查API地址配置是否正确
- 检查跨域设置是否正确
- 查看服务器日志排查错误
2. 内容不显示
问题: 创建的内容在前端不显示
解决方案:
- 确认内容已发布(状态为"已发布")
- 检查slug是否设置正确
- 清除浏览器缓存
- 检查内容的语言设置
3. 图片无法显示
问题: 上传的图片无法在前端显示
解决方案:
- 检查图片URL是否正确
- 确认图片服务器可访问
- 检查图片格式是否支持
- 验证图片大小是否超限
4. 搜索功能异常
问题: 搜索无法找到内容
解决方案:
- 检查搜索关键词是否正确
- 确认内容已发布且包含关键词
- 检查数据库索引是否正常
- 重建搜索索引
性能优化
1. 缓存策略
- 前端实现5分钟内容缓存
- 使用CDN智能路由静态资源
- 启用浏览器缓存
2. 数据库优化
- 定期清理过期缓存
- 优化查询索引
- 监控慢查询
3. 图片优化
- 压缩图片大小
- 使用WebP格式
- 实现懒加载
安全考虑
1. API安全
- 对管理API进行身份验证
- 限制API访问频率
- 过滤恶意输入
2. 内容安全
- 过滤HTML内容中的恶意脚本
- 验证上传文件类型
- 定期备份内容数据
3. 访问控制
- 设置合适的用户权限
- 记录操作日志
- 定期审查访问权限
维护建议
1. 定期备份
- 每日备份数据库
- 备份上传的媒体文件
- 测试备份恢复流程
2. 监控告警
- 监控API响应时间
- 监控错误率
- 设置异常告警
3. 版本更新
- 定期更新依赖包
- 测试新功能兼容性
- 保持文档同步更新
如有问题,请联系技术支持团队。
