ChestnutCMS是什么?
ChestnutCMS是前后端分离的内容管理系统。技术栈:SpringBoot3 + VUE2 + MybatisPlus + Freemarker + ES + Redis + MySQL,项目基于RuoYi-Vue重构,集成SaToken用户权限,xxl-job任务调度。支持站群管理、多平台静态化、元数据模型扩展、轻松组织文章、音视频、图集等各种复杂内容形态、支持多语言、全文检索。
本地开发环境搭建
开发环境
JDK 17Mysql 8.0.32 (支持8.x+)Redis 7.2.4(支持5.x+)Maven 3.8.7(支持3.8+)Node 16.20.2(支持14+ - 16+)
基础环境请参考相关官方文档安装
下载代码
您可通过一下两种方式下载代码
前往 Gitee 下载页面https://gitee.com/liweiyi/ChestnutCMS下载解压到工作目录
前往 GitHub 下载页面https://github.com/liweiyi/ChestnutCMS下载解压到工作目录
后端运行
我们将项目代码下载到目录:E:/dev/workspace/ChestnutCMS,下面所有 {ProjectDir} 均指此目录。
导入 IDEA 项目
打开 IDEA 开发工具,在左上角菜单栏选择 File -> Open,然后选择项目目录 {ProjectDir} ,然后点击 OK 按钮即可。
IDEA 会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定,您可以设置MAVEN的国内镜像仓库加快下载速度)
导入数据库(以MySQL为例)
数据库文件所在目录:{ProjectDir}/chestnut-admin/src/main/resources/db/migration/mysql
// 创建数据库create database `chestnut_cms` charset utf8mb4;
您可以通过一下两种方式初始化数据库
使用flyway初始化数据库
项目可以使用flyway管理数据库版本,默认关闭,在 {ProjectDir}/chestnut-admin/src/main/resources/application-dev.yml 设置 spring.flyway.enabled = true 开启flyway初始化数据库,开启flyway后启动应用即可由flyway自动初始化数据库,后续的版本更新的sql也会在重启应用时自动更新。
手动导入数据库
将 {ProjectDir}/chestnut-admin/src/main/resources/db/migration/mysql 目录下的所有sql文件按版本顺序依次导入,后续版本更新按版本顺序依次导入即可。
修改配置
打开配置文件:{ProjectDir}/chestnut-admin/src/main/resources/application-dev.yml
找到xxl.job.enable配置修改为false(需要安装XXL-JOB服务)
找到spring.data.redis.host配置,确保redis访问地址和端口与本地Redis环境配置一致,如果Redis没有设置访问密码,请注释掉或删掉spring.data.redis.password配置(注:修改为空字符串是不行的)
找到spring.datasource.dynamic.datasource.master配置,确保数据库访问地址和用户名密码与本地安装的MySQL配置一致
运行项目
打开文件:{ProjectDir}/chestnut-admin/src/main/java/com/chestnut/ChestnutApplication.java
右键选择 Run 'ChestnutApplication.main()',当控制台显示如下图所示信息时系统启动成功。
前端运行
使用 VSCode 打开{ProjectDir}/chestnut-ui目录,打开命令行,执行以下命令:
# 进入项目目录cd {ProjectDir}/chestnut-ui# 安装依赖npm install# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题npm install --registry=https://registry.npmmirror.com# 启动服务npm run dev
浏览器访问 http://localhost:80 ,默认账号:admin / admin
网站静态资源
网站静态资源默认路径是当前项目应用同级的wwwroot_release目录。例如:项目目录为E:/dev/workspace/ChestnutCMS,那么网站静态资源目录应为:D:/dev/workspace/wwwroot_release。
此路径可通过application-xx.yml文件修改, 配置chestnut.cms.resourceRoot,如下所示:
chestnut: cms: resourceRoot: E:/dev/workspace/wwwroot_release/
网站静态资源目录示例:(以演示站为例,演示站并没有swikoon_h5.此处仅示例目录结构)
# 应用目录ChestnutCMS |--chestnut-admin|--chestnut-cms|--chestnut-common|--......
# 网站静态资源目录wwwroot_rlease |--swikoon # 站点动态资源目录,一般用来保存用户上传的资源文件|----resources # 素材库资源目录,保存IResourceType实现相关类型文件,目前默认四种类型:图片、视频、音频、文件|------image # 图片素材目录|------video # 视频素材目录|------audio # 音频素材目录|------file # 其他文件素材目录|--swikoon_pc # 发布通道目录,pc为后台发布通道编码,固定格式:站点目录_发布通道编码|----img # 网站图片|----js # 网站js|----css # 网站css|----template # 网站模板固定目录|------index.template.html # 模板文件|--swikoon_h5 # 发布通道目录,h5为后台发布通道编码,固定格式:站点目录_发布通道编码|----img # 网站图片|----js # 网站js|----css # 网站css|----template # 网站模板固定目录|------index.template.html # 模板文件
导入站点主题包
主题包上传在QQ群共享,文件名 企业演示站主题.zip。
后台新建站点(新建站点!!!主题包不能导入已存在数据的站点中!!!)
编辑站点页面点击 导入主题 按钮,上传群共享下载的主题包文件。
开发环境
OpenJDK 17
Maven 3.8+
MySQL 8.0+
Redis 5.x+
NodeJS 16.20.2
主要技术框架
技术框架 | 版本 | 应用说明 |
---|---|---|
Spring Boot | 3.1.7 | 基础开发框架 |
Spring Boot Admin | 3.1.7 | 监控框架 |
Mybatis Plus | 3.5.5 | ORM框架 |
Flyway | 9.22.3 | 数据库版本管理 |
Yitter | 1.0.6 | 雪花ID |
Redisson | 3.25.2 | 分布式锁 |
FreeMarker | 2.3.32 | 模板引擎 |
Sa-Token | 1.37.0 | 权限认证 |
Xxl-Job | 2.4.0 | 任务调度 |
Lombok | 1.18.26 | 你懂的 |
功能模块
模块 | 简介 |
---|---|
站点管理 | 多站点,支持图片水印、标题查重、扩展模型等扩展配置 |
栏目管理 | 普通栏目+链接栏目,扩展配置优先级高于站点扩展配置 |
内容管理 | 内容类型:文章+图片集+音视频集,页面部件:动态自定义区块+广告,内容回收站 |
资源管理 | 图片、音视频等各类静态资源管理,支持OSS/COS/MinIO对象存储 |
发布通道 | 支持多通道不同类型静态文件发布,可同时发布到PC、H5,html、json等 |
模板管理 | 静态化模板,支持在线编辑 |
模板指令 | FreeMarker自定义标签、模板函数及动态模板的参数及用法说明 |
文件管理 | 当前站点资源目录及发布通道静态化目录管理,支持文本在线编辑 |
扩展模型 | 站点、栏目及内容的动态模型扩展,系统默认数据表保存,支持自定义 |
词汇管理 | 热词、TAG词、敏感词、易错词 |
内容索引 | 默认支持ElasticSearch+IK创建内容索引,支持标题内容全文检索 |
检索词库 | 自定义检索词库,支持扩展词和停用词动态扩展 |
检索日志 | 用户搜索的日志记录 |
友链管理 | 友情链接 |
广告管理 | 广告基于页面部件扩展的简单广告功能,支持权重及定时上下线,广告点击/展现统计 |
评论管理 | 基础功能模块 |
调查问卷 | 基础功能模块,默认支持文字类型单选、多选、输入、图片、富文本 |
自定义表单 | 基于元数据模块扩展,支持模板标签 |
会员管理 | 支持自定义会员等级,等级经验值来源动态配置 |
访问统计 | 对接百度统计API |
用户管理 | 后台用户管理,支持用户独立权限配置 |
机构管理 | 多级系统组织机构(公司、部门、小组) |
角色管理 | 支持按角色分配菜单权限、站点和栏目相关操作权限配置 |
岗位管理 | 配置系统用户所属担任职务 |
菜单管理 | 配置系统菜单,操作权限,按钮权限标识等 |
字典管理 | 对系统中经常使用的一些固定的数据进行维护,代码层面定义 |
参数管理 | 对系统动态配置常用参数,代码层面定义 |
通知公告 | 系统通知公告信息发布维护 |
安全配置 | 密码强度、密码过期、首次登陆强制修改、登陆异常策略配置 |
国际化 | 为菜单等动态数据国际化配置提供基础支持,可覆盖后台代码配置 |
安全配置 | 密码强度、密码过期、首次登陆强制修改、登陆异常策略配置 |
系统日志 | 统一日志管理,支持扩展 |
操作日志 | 系统操作日志扩展,记录操作参数、异常信息及请求耗时 |
登录日志 | 系统登录日志扩展,记录用户登录日志,包含登录异常 |
在线用户 | 当前系统中活跃用户状态监控,支持踢下线 |
任务调度 | 基于XXL-JOB的分布式任务调度 |
定时任务 | 基于Spring的TaskScheduler实现的单机定时任务 |
异步任务 | 异步任务状态查看,支持手动结束 |
服务监控 | 监视当前系统CPU、内存、磁盘、堆栈等相关信息 |
缓存监控 | 对系统的缓存信息查询,命令统计等 |
GroovyScript | 支持Groovy脚本在线执行 |
前台演示图:
建站流程
创建站点
进入 内容管理 > 站点管理 菜单,点击 新建 按钮,填写网站基础信息后点击 确定 按钮完成站点创建。
字段说明:
站点目录:站点文件保存目录,此目录基于chestnut.cms.resourceRoot配置目录创建。
例如:chestnut.cms.resourceRoot=D:/chestnut/wwwroot_release/,那么此站点创建时会创建目录:D:/chestnut/wwwroot_release/demo/
资源域名:此域名用来独立配置访问站点上传的资源文件(图片、视频等)。
切换站点
右上角切换到我们新建的站点,双击我们刚才创建的演示站或选中点击确定切换站点
创建发布通道
进入 内容管理 > 发布通道 菜单,点击 新建 按钮,创建发布通道。(必须切换站点后创建)
说明:发布通道就是网站静态文件生成的目录,可以创建多个不同的发布通道来应对不同端展示效果的要求。比如PC桌面一套模板、移动手机端一套模板、移动平板电脑一套模板,也可以创建一套json格式的静态文件提供给原生APP端调用获取内容数据。
发布通道目录结构
在创建发布通道时,系统会在 chestnut.cms.resourceRoot 配置的目录下创建站点发布通道目录,用来存放发布通道模板和相关静态资源文件,我们进入 内容管理 > 文件管理 菜单,查看站点相关文件信息,如下图所示:
目前站点相关有2个顶级目录:
demo是站点资源目录,这下面主要保存站点上上传的文件。
demo_pc就是我们创建的发布通道目录,在发布通道目录下已存在了一些系统默认创建的目录。
template 目录是存放页面模板的固定目录,所有发布通道的页面模板都必须放在此目录下,创建发布通道时系统会在此目录下创建默认首页模板 index.template.html;
include 目录是存放模板生成的静态文件的固定目录;
其余目录没有硬性要求,一般我们把做好的静态页面文件放在html目录下,对应的js、css、图片文件放在对应目录下。
资源文件目录结构
我们尝试在 内容管理 > 资源管理 菜单下上传一个图片。如下图:
然后我们回到 内容管理 > 文件管理 菜单查看一下文件目录结构,可以看到在 demo 目录下多出了 resources/image/2023/07/16/ 目录,这个目录下就是我们刚才上传的图片。
设置站点发布通道属性
配置访问域名
进入 内容管理 > 站点管理 菜单,编辑我们刚才创建的演示站,可以看到在发布通道属性配置部分显示了 PC桌面 的配置信息,我们给发布通道设置一个URL,这个就是发布通道的访问域名(模板中通过 ${Prefix} 获取)。
参数说明:
URL:发布通道对应的访问域名
静态文件类型:发布通道中内容/栏目/站点生成的静态文件后缀名,默认:shtml
首页模板:发布通道对应的首页模板,首页会根据此模板生成对应的静态页面在发布通道目录下。默认:index.template.html
预览站点
设置好发布通道的域名URL后,点击 保存 按钮保存站点信息。然后点击 预览 按钮查看站点预览效果。
发布站点
本地测试域名映射
由于我们是本地测试,未解析域名,我们将站点发布通道的域名在hosts文件中配置一下映射关系,方便我们本地调试。 以windows系统为例,打开文件 C:\Windows\System32\drivers\etc\hosts,添加下图所示红框部分: 其中 www.demo.com 是 PC桌面 发布通道的访问域名,static.demo.com 是站点资源文件访问域名。
配置完成后,我们打开cms命令窗口,ping一下 www.demo.com 和 static.demo.com,可以看到 ping 的地址已经是 127.0.0.1.
配置 nginx
nginx安装请参考官方文档。nginx.conf配置文件添加如下Server配置,修改完成后重启nginx。
server { listen 80; server_name www.demo.com; # PC站配置www.demo.com域名访问demo_pc目录 location / { ssi on; ssi_silent_errors on; ssi_types text/shtml; root D:/dev/wwwroot_release/demo_pc; index index.shtml index.html index.htm; } location ~ ^/(images|img|fonts|assets|js|css)/ { root D:/dev/wwwroot_release/demo_pc; expires 1d; } } server { listen 80; server_name static.swikoon.com; # 后台上传的资源文件访问统一代理到demo目录 location ~ ^/(resources)/ { root D:/dev/wwwroot_release/demo; expires 1d; } }
发布站点
在站点编辑页面点击 发布首页 按钮,提示发布成功后,我们到文件管理菜单查看发布通道目录,可以看到在发布通道目录 demo_pc 下已经生成了首页静态文件 index.shtml
浏览站点首页
发布完成后,我们打开浏览器,访问 http://www.demo.com/
系统预览
后台预览地址:http://admin.1000mz.com
账号:demo / a123456
企业站演示地址:http://swikoon.1000mz.com
资讯站演示地址:http://news.1000mz.com(会员演示账号:xxx333@126.com / a123456)
图片站演示地址:PC端:http://tpz.1000mz.com 移动端:http://mtpz.1000mz.com
游戏站演示地址:PC端:http://game.1000mz.com 移动端:http://mgame.1000mz.com
影视站演示地址:PC端:http://movie.1000mz.com 移动端:http://movie.1000mz.com
码云地址:https://gitee.com/liweiyi/ChestnutCMS
官网地址:https://www.1000mz.com
本文由作者笔名:gitasp 于 2025-01-15 22:23:41发表在本站,原创文章,禁止转载,文章内容仅供娱乐参考,不能盲信。
本文链接: https://www.gitasp.com/kaiyuan/c4f125a03c850b5e.html