一、项目技术选型说明(适配海外宠物商品宣传站)
1. 竞品方案放弃原因
- Halo:仅支持博客模型,无原生商品模块;采用GPLv3协议,商用修改代码必须开源,前后台分离需双端启动,开发成本高,不适合商品展示类站点。
- OpenCart(PHP):外贸生态插件丰富,但核心技术栈为PHP,与主流Java技术栈不符,底层二次开发门槛极高。
- Java微服务商城(mall等):强依赖Redis、MQ、Nacos等中间件,本地部署流程繁琐、环境成本高,仅做商品展示场景性能严重过剩。
2. 最终选型:铭飞MCMS v6.2.0
核心技术栈
- 后端:SpringBoot3 + MyBatis-Plus + Shiro 单体一体化架构
- 前端渲染:Freemarker服务端渲染,无需独立Node前端项目
- 后台管理:内嵌打包Vue3静态资源,仅启动1个SpringBoot进程即可访问前后台
- 数据库:MySQL5.7及以上(兼容MySQL8.0)
- 强制运行环境:JDK17(仅支持解压绿色版/安装版,推荐免安装解压版)
- 开源协议:MIT宽松商用协议
场景适配核心优势
- 可视化自定义商品模型,可一键新增宠物商品、亚马逊ASIN、外链跳转等业务字段,无需手动建表;
- 单体架构极简部署,仅一个Jar包,本地开发、服务器上线零复杂度;
- 前台模板完全自定义,适配海外宠物产品展示页面定制需求;
- 商用合规无风险,仅需保留源码内部版权注释,前台页面可自定义去除官方标识。
二、本地环境配置(JDK17 解压版部署)
1. JDK17下载(免安装绿色版)
禁止使用安装包,仅推荐ZIP解压版,适配IDEA快速配置,无需系统环境变量冗余配置。
- 首选微软OpenJDK17(国内高速、免费商用)下载直链:https://aka.ms/download-jdk/microsoft-jdk-17-windows-x64.zip文件格式:纯ZIP压缩包,无捆绑安装程序
- 备选Eclipse Temurin17(官方认证版)下载地址:https://adoptium.net/temurin/releases/?version=17筛选参数:Windows x64、Package Type选择ZIP(禁止MSI安装包)
2. 解压规范(必遵守,避免编译报错)
- 解压路径无中文、无空格、无特殊符号,示例:
D:\dev\jdk17 - 校验标准:存在路径
D:\dev\jdk17\bin\java.exe即为解压成功
3. IDEA专属配置(最简方案,无需系统环境变量)
- 打开 IDEA → File → Project Structure → Platform Settings → SDKs
- 点击「+」→ Add JDK,选中JDK17解压根目录
- Project与所有Module统一绑定该JDK17,Language Level设置为17
4. 系统全局配置(可选)
需全局调用Java命令时配置环境变量:
- 新建系统变量
JAVA_HOME = D:\dev\jdk17 - Path变量新增
%JAVA_HOME%\bin - CMD执行
java -version,输出版本17即为配置生效
三、CentOS7 MySQL8.0 标准化部署(适配MCMS)
MCMS兼容MySQL8.0,需开启表名大小写不敏感(项目强制要求),以下为无报错完整部署流程。
1. 环境清理(规避冲突)
卸载系统自带MariaDB及旧版MySQL残留,彻底消除版本冲突:
# 卸载自带Mariadb
rpm -qa | grep mariadb
rpm -e --nodeps $(rpm -qa | grep mariadb)
# 清理旧MySQL残留
rpm -qa | grep mysql
rpm -e --nodeps $(rpm -qa | grep mysql)
rm -rf /var/lib/mysql /etc/my.cnf2. 安装MySQL8.0官方源
无wget可使用curl替代下载,适配所有CentOS7服务器:
# 无wget执行此命令下载源包
curl -O https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
# 安装官方源
rpm -ivh mysql80-community-release-el7-11.noarch.rpm
# 校验源生效
yum repolist enabled | grep mysql3. 安装MySQL8.0服务端
yum install mysql-community-server -y4. 核心配置:开启大小写不敏感(MCMS必配)
重要规则:MySQL8.0的
lower_case_table_names=1 必须在数据库初始化前配置,已初始化数据库直接修改会启动报错。- 停止服务、清空初始化数据
systemctl stop mysqld
rm -rf /var/lib/mysql
mkdir /var/lib/mysql
chown mysql:mysql /var/lib/mysql
chmod 700 /var/lib/mysql- 编辑配置文件
vim /etc/my.cnf,替换完整配置
[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=0.0.0.0
# 强制大小写不敏感(MCMS核心要求)
lower_case_table_names=1
default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
[mysql]
default-character-set=utf8mb4- 关闭SELinux拦截、安装依赖、重新初始化
# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 安装必备依赖
yum install libaio numactl-libs -y
# 重新初始化数据库
mysqld --initialize --user=mysql
# 启动并开机自启
systemctl start mysqld
systemctl enable mysqld5. 初始化密码与远程授权
- 获取临时密码
grep 'temporary password' /var/log/mysqld.log- 登录修改密码(符合MySQL8复杂度规则)
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
FLUSH PRIVILEGES;- 开启root远程登录(适配本地连接服务器数据库)
CREATE USER 'root'@'%' IDENTIFIED BY 'Root@123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';
FLUSH PRIVILEGES;6. 放行防火墙端口
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload云服务器额外配置:阿里云/腾讯云后台安全组放行3306端口,否则外部无法连接。
四、MCMS v6.2.0 完整本地部署流程
1. 前置环境校验
- JDK17已配置至IDEA,版本正常
- MySQL8.0正常运行,支持大小写不敏感、utf8mb4编码
- 项目存放路径纯英文无空格:示例
D:\code\MCMS
2. 拉取官方源码并导入项目
git clone https://gitee.com/mingSoft/MCMS.gitIDEA操作:File → Open → 选中项目根目录
pom.xml,以Maven项目导入,等待依赖自动加载完成。3. 数据库初始化
- 创建适配MCMS的数据库(支持emoji、海外特殊字符)
CREATE DATABASE mcms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 导入官方初始化SQL(替换为本地项目路径)
mysql -u root -p mcms < D:\code\MCMS\doc\mcms-6.2.0.sql4. 配置项目数据库连接
配置文件路径:
src/main/resources/application-dev.yml替换datasource配置,填写自己的MySQL账号密码:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/mcms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useSSL=false
username: root
password: Root@123456 # 替换为自己的MySQL密码
driver-class-name: com.mysql.cj.jdbc.Driver
# 可自定义端口,避免占用
server:
port: 80805. 启动项目
启动类路径:
src/main/java/net/mingsoft/MSApplication.java右键Run启动,控制台输出
Started MSApplication in XX seconds 即为启动成功。6. 项目上线核心配置(解决前台404、页面不更新)
MCMS为静态化CMS系统,前台页面均为静态生成,无需反复设置模板、新建栏目,所有页面更新、生效仅需执行后台静态化操作,彻底解决前台404、修改内容不生效问题。
- 后台登录访问地址:http://localhost:8080/ms/login.do默认账号:
msopen密码:msopen - 首次部署必做:全局静态化(解决首页404)登录后台后,左侧菜单【内容管理】→【静态化】,依次点击执行:① 生成主页 ② 生成栏目 ③ 生成全部文章执行完毕后,前台
http://localhost:8080即可正常访问。 - 后续修改生效规则(核心重点)修改Java代码、Freemarker模板、页面内容、商品数据、网站配置后,无需重启项目、无需切换模板、无需新建栏目,仅需重新执行一次对应静态化操作,页面即可实时更新。
7. 开发热加载配置(模板/代码实时生效,可选)
本地开发可开启热加载,搭配静态化实现高效开发,无需频繁重启项目:
- IDEA Settings → Compiler → 勾选 Build project automatically
- 快捷键
Ctrl+Shift+Alt+/打开Registry,勾选 compiler.automake.allow.when.app.running - 配置完成后,修改代码、模板自动编译,执行静态化即可刷新前台页面
前台访问地址:http://localhost:8080,静态化执行成功后即可正常展示页面,部署完成。
五、全网踩坑总结(高频问题解决方案)
1. MySQL8启动失败
- 报错
Different lower_case_table_names:未清空数据目录直接改配置,重新执行清空目录+初始化步骤即可 - 权限报错:执行
chown -R mysql:mysql /var/lib/mysql修复目录权限 - 依赖缺失:安装
yum install libaio numactl-libs -y
2. 项目启动报错
- JDK编译报错:所有Module统一绑定JDK17,同步Language Level
- 数据库连接失败:核对数据库名mcms、账号密码、MySQL服务状态
- Maven依赖爆红:刷新Maven,配置阿里镜像源
六、商用合规重要提醒
- MCMS基于MIT协议,商业建站、接单收费完全合规;
- 禁止删除源码内部Java文件头部版权注释,否则侵权;
- 前台页面底部Powered By标识、官方logo可完全删除,替换为客户自有品牌;
- 禁止将MCMS源码单独打包售卖、分销给其他开发者,仅可用于自有项目部署使用。
