CRMEB 电商系统安装及分析

news2024/9/23 23:21:50

CRMEB系统采用前后端分离技术,基于TP6+Vue2.5+Uniapp框架开发;支持微信小程序、公众号、H5、APP、PC端适配,数据同步!是一套单商户新零售社交电商系统。

 

目录

安装

安装环境

安装过程

开始安装

安装检测

数据库配置

高级设置

Redis缓存

出现sql_mode提示

修改mysql配置文件

访问路由提示404

查看nginx配置

设置项目伪静态

目录分析

请求流程

总结


安装

安装环境

安装环境需要 nginx mysql5.7 php 7.4

我使用的是phpstudy_pro环境,直接安装了nginx

原本就有mysql和php环境则不需要安装。

安装过程

开始安装

访问设置好的域名,进入安装界面,同意使用协议,点击开始安装。

安装检测

看一下软件环境和版本要求是否符合及这些配置是否打开。

权限的话linux环境需要设置一下文件夹的权限,window环境则不需要。

数据库配置

设置数据库连接和管理员信息;缓存直接使用文件即可。

设置管理员密码后,最好记录一下,免得一会登录忘记了。

高级设置

也可以点击高级设置确定一下数据库服务器的ip和端口及数据表前缀等信息。

 

Redis缓存

如果在缓存时选择redis缓存类型时,需要设置以下几个选项。

出现sql_mode提示

在点击下一步时出现提示需要修改mysql的sql_mode参数。

修改mysql配置文件

首先打开mysql安装目录找到配置文件my.ini文件,如下:

在window环境下,修改mysql的配置文件my.ini即可。

在my.ini文件中 添加一行如下:

sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

这样可以禁止mysql自动创建用户和引擎替换。

可通过sql工具执行命令查看结果,命令如下:

show VARIABLES like '%sql_mode%'

修改后重启mysql以加载配置。

然后点击下一步,开始进行自动安装流程。

最后提示安装成功,如下图:

后台登录页

访问路由提示404

安装完成后,无论是访问前端首页还是后端管理员登录都提示404。

查看nginx配置

打开nginx相应域名的配置文件,可看到需在crmeb中配置伪静态。

如下:

 

设置项目伪静态

修改crmeb/public目录下的nginx.htaccess,增加如下规则:

if (!-e $request_filename) {
    rewrite  ^(.*)$  /index.php?s=/$1  last;
    break;
}

重启nginx后,不在出现404,可以正常访问页面和路由。

目录分析

CRMEB系统采用前后端分离技术,基于TP6+Vue2.5+Uniapp框架开发;支持微信小程序、公众号、H5、APP、PC端适配,数据同步!是一套单商户新零售社交电商系统。

下面是对CRMEB-V5.4版本结合官方文档的目录分析:

├─crmeb #后端项目
│  ├─app #应用目录
│  │  ├─adminapi        # 后台接口模块
│  │  ├─api              # 接口模块
│  │  ├─dao              # 数据访问层
│  │  ├─http             # 全局中间件
│  │  ├─kefuapi          # 客服
│  │  ├─model            # 模型层
│  │  ├─services         # 服务层
│  │  ├─lang             # 语言包
│  │  ├─listener         # 监听
│  │  ├─outapi
│  │  ├─AppService.php  
│  │  ├─build.php
│  │  ├─common.php       # 函数文件
│  │  ├─event.php        # 事件注册设置文件
│  │  ├─ExceptionHandle.php  # 异常处理
│  │  ├─middleware.php   # 应用中间件
│  │  ├─provider.php     # 容器Provider定义文件
│  │  ├─Request.php   
│  │  └─service.php
│  ├─backup              # 备份目录
│  ├─config              # 应用配置目录
│  ├─crmeb               # crmeb核心包 (类似TP中的lib,这里是官方封装的基类)
│  │  ├─basic            # 基础类
│  │  ├─command          # 命令
│  │  ├─exceptions       # 错误信息
│  │  ├─interfaces       # 接口
│  │  ├─jobs             # 队列     
│  │  ├─services         # 服务
│  │  ├─subscribes       # 事件
│  │  ├─utils            # 帮助类
│  ├─public              # WEB目录(对外访问目录)
│  │  ├─admin            # 后台页面文件
│  │  ├─install          # 安装入口文件
│  │  ├─static           # 静态资源文件
│  │  ├─system           # 后台静态资源文件
│  │  ├─uploads          #上传文件
│  │  ├─index.html       # h5入口文件
│  │  ├─uploads          #上传文件
│  │  ├─index.php        #入口文件
│  │  ├─router.php       # 快速测试文件
│  │  └─.htaccess        # 用于apache的重写
│  ├─runtime             # 应用的运行时目录
│  ├─vendor              # 第三方插件
│  ├─.env                # 数据库配置文件
│  └─think.php           # 命令入口文件
├─template               # 后端vue页面
├── public               # 静态资源
│   ├── favicon.ico      # favicon图标
│   └── index.html       # html 模板
├── src                  # 源代码
│  │   ├── api           # 所有请求
│  │   ├── assets        # 图片、svg 等静态资源
│  │   ├── components    # 公共组件
│  │   ├── i18n          # 多语言
│  │   ├── layouts       # 布局
│  │   ├── libs          # 公共方法
│  │   ├── menu          # 菜单配置
│  │   ├── mixins        # 通用混合
│  │   ├── mock          # 数据模拟
│  │   ├── pages         # 所有页面
│  │   ├── plugins       # 插件
│  │   ├── router        # 路由配置
│  │   ├── store         # Vuex 状态管理
│  │   ├── utils         # js工具
│  │   ├── styles        # 样式管理
│  │   ├── setting.env.js# 开发配置文件
│  │   ├── setting.js    # 业务配置文件
│  │   ├── main.js       # 入口文件 加载组件 初始化等
│  │   └── App.vue       # 入口页面
│  ├── tests             # 测试管理
│  ├── alias.config.js   # 别名,仅用于配置 WebStorm 识别别名,
│  ├── babel.config.js   # babel 配置
│  ├── jest.config.js    # jest 配置
│  ├── package.json      # package.json
│  └── vue.config.js     # Vue CLI 3 配置

请求流程

请求流程省略了很多细节,只是简单的节点分析,如下:

入口文件->Vue->路由->中间件->控制器->服务层->dao(数据访问层)->模型层->vue渲染后呈现给用户

总结

本篇主要是CRMEB电商系统安装和遇到问题的解决方法及一些简单的分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1971795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Cloudflare搭建私有Docker镜像源

周四原本不是发文的日子,主要因为两个原因: 第一个原因是总有人留言说 Docker 用不了,第二个原因是看了下上个月的阅读量,和之前比实在有点惨淡,除了文章总被人搬运外,我估计可能跟第一个原因多少还是有点…

计算机基础(Windows 10+Office 2016)教程 —— 第4章 计算机网络与Internet(上)

第4章 计算机网络与Internet 4.1 计算机网络概述4.1.1 计算机网络的定义4.1.2 计算机网络的发展4.1.3 计算机网络的功能4.1.4 计算机网络体系结构和TCP/IP 参考模型 4.2 计算机网络的组成和分类4.2.1 计算机网络的组成4.2.2 计算机网络的分类 4.3 网络传输介质和通信设备4.3.1 …

【Unity】3D功能开发入门系列(二)

Unity3D功能开发入门系列(二) 一、资源(一)资源文件(二)场景文件(三)资源包(四)Unity 资源商店(五)项目资源的导入 二、父子关系&…

【C语言篇】数据在内存中的存储(超详细)

文章目录 数据在内存中的存储二进制和进制转换基本概念进制转换十进制转二进制二进制转八进制和十六进制 整数在内存中的存储反码原码补码大小端字节序和字节序判断什么是大小端?为什么有大小端 浮点数在内存中的存储题目提出浮点数存的过程浮点数取的过程 题目解析…

Java语言程序设计——篇十一(2)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

算法导论 总结索引 | 第五部分 第二十一章:用于不相交集合的数据结构

一些应用涉及 将n个不同的元素分成一组不相交的集合。寻找包含给定元素的唯一集合 和 合并两个集合 1、不相交集合的操作 1、一个不相交集合 数据结构 维持了 一个不相交动态集的集合 S {S_1, S_2,…, S_n}。用一个代表 来标识每个集合,它是这个集合的某个成员。…

IoTDB 入门教程 企业篇④——安全控制 | 白名单、审计日志、登录日志和操作日志

文章目录 一、前文二、白名单2.1 配置文件iotdb-common.properties2.2 配置文件white.list2.3 注意事项 三、审计日志3.1 Cli操作日志3.2 RESTful操作日志3.3 MQTT操作日志3.4 Java操作日志3.5 C#操作日志3.6 Python操作日志 四、参考 一、前文 IoTDB入门教程——导读 IoTDB企业…

C语言9~10 DAY(合集)

数组的概念 什么是数组 数组是相同类型,有序数据的集合。 数组的特征 数组中的数据被称为数组的元素,是同构的 数组中的元素存放在内存空间里 (char player_name[6]:申请在内存中开辟6块连续的基于char类型的变量空间) 衍生概念&#x…

力扣高频SQL 50题(基础版)第三十七题

文章目录 力扣高频SQL 50题(基础版)第三十七题176.第二高的薪水题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第三十七题 176.第二高的薪水 题目说明 Employee 表: ----------------- …

【传知代码】基于标签相关性的多标签学习(论文复现)

在当今信息爆炸的时代,数据中包含的标签信息对于理解和分析复杂问题至关重要。在诸如文本分类、图像识别和推荐系统等应用中,如何有效地利用标签相关性提升多标签学习的效果成为了研究的热点之一。基于标签相关性的多标签学习方法,通过挖掘不…

存储届的奥运竞技 | 400层3D NAND最快2025到来~

随着内存巨头之间的高带宽内存 (HBM) 竞争日益激烈,NAND 存储器领域的竞争也在升温。据韩国媒体《etnews》报道,SK 海力士正在研发 400 层 NAND 闪存技术,计划在 2025 年底前准备好这项技术以实现量产。 报道称,SK 海力士目前正在…

AcWing并查集

建议先看这个 Bilibili------------------>图论——并查集(详细版) 其实M 1 2就是把1的祖先改成了2,然后M 3 4就是把3的祖先改成了4,然后查询这两数1,2的祖先是不是同一个,3,4的祖先是不是同一个,1,3的祖先是不是同…

【期货】收盘点评。昨天说的,p2409棕榈油在今天或者周一会走出行情

收盘点评 昨天说的,p2409棕榈油在今天或者周一会走出行情。事实就是如此。震荡了几天了,波幅不大的来回震荡,其实主力是不想震荡的,但是不震荡自己的货和行情走不出来。所以我昨天就说,应该就是这一两天会走出一波小行…

⑤【从0制作自己的ros导航小车:上、下位机通信篇】上、下位机串口DMA通信

从0制作自己的ros导航小车 前言一、准备工作二、下位机端(STM32)三、上位机端(旭日x3派)四、测试 系列文章: ①【从0制作自己的ros导航小车:介绍及准备】 ②【从0制作自己的ros导航小车:下位机篇…

一站式解决方案:打造无缝连接的跨渠道客户服务体验

在当今这个数字化时代,客户与企业之间的互动已不再局限于单一渠道。从社交媒体、在线聊天、电子邮件到电话热线,甚至是实体店面,客户期望能够随时随地、无缝切换地获得一致且高效的服务体验。因此,构建一站式解决方案,…

商城系统审计代码审计

1 开源组件通用性漏洞审计 1.1 fastjson漏洞审计与验证 1.1.1 相关知识 Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java对 象之间相互转换。 Fastjson反序列化漏洞简单来说是出现在将JSON数据反序列化过程中出现的漏洞。 攻击者可以传入一个恶…

算法小白的进阶之路(力扣6~8)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

对象属性值对比(支持复杂对象)

文章目录 前言一、如何对比二、开始编码三、使用结果示例总结 前言 需求如下: 对比两个bean中的内容,返回其中属性的值不一致的完整信息,包括: 属性 新值 旧值 一、如何对比 例如我有一个这的类型: public class Tel {private String name;private String tel; …

学习笔记第十七天

1.链表 1.1链表尾插 void push_back(struct Node *pHead,int n)//尾插 {if(isEmpty(pHead)){push_front(pHead,n);}else{struct Node *p pHead->next; while(p->next !NULL){p p->next;}struct Node *pNew malloc(sizeof(struct Node));p->nextpNew;pNew->n…

C++ bind复杂回调逻辑分析

回调函数基本知识回顾 回调函数是什么 函数指针或者函数对象作为参数传递给另一个函数的机制,当某个事件发生的时候,系统会自动的调用这些函数进行处理事件驱动模型中作用,回调函数则被用于处理I/O事件,通常用来读写异常等事件 bi…