|
|
@@ -9,27 +9,46 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
|
|
|
项目的架构是三个系统和六个模块:
|
|
|
|
|
|
-* 基础系统(core),由数据库、litemall-cre模块、litemall-db模块、litemall-os-api模块和litemall-all模块组成;
|
|
|
-* 小商场系统(wxmall),由litemall-wx-api模块和litemall-wx模块组成;
|
|
|
-* 后台管理系统(admin),由litemall-admin-api模块和litemall-admin模块组成。
|
|
|
-* 简单商城系统(mall),这里仅列出,目前没有开发计划。
|
|
|
+* 基础系统子系统(core)
|
|
|
+
|
|
|
+ 由数据库、litemall-cre模块、litemall-db模块、litemall-os-api模块和litemall-all模块组成;
|
|
|
+
|
|
|
+* 小商场子系统(wxmall)
|
|
|
+
|
|
|
+ 由litemall-wx-api模块和litemall-wx模块组成;
|
|
|
+
|
|
|
+* 后台管理子系统(admin)
|
|
|
+
|
|
|
+ 由litemall-admin-api模块和litemall-admin模块组成。
|
|
|
+
|
|
|
+* 简单商城系统(mall)
|
|
|
+
|
|
|
+ 这里仅列出,目前没有开发计划。
|
|
|
|
|
|
而六个模块的开发设计到三种技术栈:
|
|
|
|
|
|
-* Spring Boot技术栈,采用IDEA开发工具,开发litemall-core、litemall-db、litemall-all、
|
|
|
+* Spring Boot技术栈
|
|
|
+
|
|
|
+ 采用IDEA开发工具,开发litemall-core、litemall-db、litemall-all、
|
|
|
litemall-os-api、litemall-admin-api和litemall-wx-api共六个个模块;
|
|
|
-* miniprogram(微信小程序)技术栈,采用微信小程序开发工具,开发litemall-wx模块;
|
|
|
-* Vue技术栈,采用VSC开发工具,开发litemall-admin模块。
|
|
|
+
|
|
|
+* miniprogram(微信小程序)技术栈
|
|
|
+
|
|
|
+ 采用微信小程序开发工具,开发litemall-wx模块;
|
|
|
+
|
|
|
+* Vue技术栈
|
|
|
+
|
|
|
+ 采用VSC开发工具,开发litemall-admin模块。
|
|
|
|
|
|
## 1.2 系统功能
|
|
|
|
|
|
-从业务功能上,目前由五个业务模块(参考nideshop-mini-program和platform)组成:
|
|
|
+从业务功能上,目前由五个业务模块组成:
|
|
|
|
|
|
* 会员业务模块
|
|
|
* 商场业务模块
|
|
|
* 商品业务模块
|
|
|
* 推广业务模块
|
|
|
-* 系统业务模块(仅管理平台)
|
|
|
+* 系统业务模块
|
|
|
|
|
|
### 1.2.1 小程序端功能
|
|
|
|
|
|
@@ -171,7 +190,9 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
|
|
|
最后,其实dep和prod不存在先后关系。例如,如果开发者已经存在域名和生产环境,可以直接
|
|
|
跳过dep阶段,而直接部署在线上环境中。因此有些时候,这里部署和上线是一个阶段。
|
|
|
+
|
|
|
当然,这里仍然建议先dep后prod,是因为对于第一次开发而言,先dep阶段可以避免对域名、https证书等非业务相关工作的干扰。
|
|
|
+
|
|
|
此外,有些业务功能(例如微信支付)必须是域名访问,那么开发和部署阶段可以先采用模拟或跳过的形式,
|
|
|
先不开发和测试这样业务功能,等其他功能开发完毕和部署测试成功以后,再来开发这些线上环境才能
|
|
|
运行的功能,此时会有一个好的基础。
|
|
|
@@ -211,6 +232,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
### 1.4.0 数据库
|
|
|
|
|
|
按照开发环境前,需要先在本地配置好数据库:
|
|
|
+
|
|
|
1. 本项目目前采用MySQL,请上网下载安装MySQL 5.7.x
|
|
|
|
|
|
注意:
|
|
|
@@ -339,11 +361,9 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
> 原因是这里的appid是本人申请的,而开发者不是本人app的开发者或体验者,
|
|
|
> 因此微信登录导致后台服务向微信服务器交互时会失败。
|
|
|
> 2. 有的开发者可能认为把litemall-wx模块的appid设置成开发者自己的appid就可以,
|
|
|
-> 但是实际上,由于小商场的云主机后台服务的appid仍然是本人appid,
|
|
|
-> 因此微信登录时仍然会失败。
|
|
|
+> 但是由于小商场的云主机后台服务的appid仍然是本人appid,因此微信登录时仍然会失败。
|
|
|
> 3. 开发者可以在litemall-wx和litemall-wx-api中设置自己的appid,以及部署自己的后台服务,
|
|
|
-> 相关内容请阅读章节3。
|
|
|
-> 或者,开发者可以采用账号登录的方式登录后台服务,然后体验商品购买下单的方式。
|
|
|
+> 相关内容请阅读章节3。或者,开发者可以采用账号登录方式登录,然后体验商品购买下单的方式。
|
|
|
> 4. 由于没有设置商户支付信息,因此开发者在付款时会失败。相关内容阅读章节3。
|
|
|
|
|
|
### 1.4.3 Vue开发环境
|
|
|
@@ -356,6 +376,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
```
|
|
|
cnpm install
|
|
|
```
|
|
|
+
|
|
|
5. 编译并运行
|
|
|
|
|
|
```
|
|
|
@@ -363,6 +384,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
```
|
|
|
然后,打开浏览器,输入`http://localhost:9527`。
|
|
|
如果出现管理后台登录页面,则表明管理后台的前端运行正常;
|
|
|
+
|
|
|
6. 请确定litemall-admin-api模块已经运行,然后点击`登录`,如果能够成功登录,则表明管理后台的前端和后端对接成功,运行正常。
|
|
|
|
|
|
## 1.5 部署方案
|
|
|
@@ -379,11 +401,6 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
* litemall-wx模块部署在微信开发者工具中,此外数据API地址指向litemall-wx-api所在服务qi地址
|
|
|
* litemall-admin编译出的静态文件放在web服务器或者tomcat服务器,此外服务器地址设置指向3中litemall-admin-api所在地址
|
|
|
|
|
|
-注意
|
|
|
-> * 这里litemall-os-api、litemall-admin-api和litemall-wx-api也可以选择编译成jar模式的可执行文件(因为内嵌tomcat服务器),然后直接运行。
|
|
|
-> * litemall-wx部署时可以放在微信开发者工具中测试,但是上线时必须设置https开头的合法域名,因此litemall-wx-api所在的服务器需要配置合适的域名和SSL证书,
|
|
|
-> 具体参见官方文档和本项目的1.6节。
|
|
|
-
|
|
|
最后,**如果项目部署,则根据开发者的部署环境在以下文件中或代码中修改相应的配置。**
|
|
|
|
|
|
1. MySQL数据库设置合适的用户名和密码等信息,同时在litemall-os-api、litemall-wx-api和litemall-admin-api模块
|
|
|
@@ -414,8 +431,10 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
|
|
|
以下简单列举几种方案。
|
|
|
|
|
|
-### 1.5.3 基于ubuntu腾讯云的单机云部署方案
|
|
|
-单机云部署方案,面向的是服务器数据和应用部署在云主机单机中用于演示的场景。
|
|
|
+### 1.5.3 单机云部署方案
|
|
|
+
|
|
|
+本节介绍基于腾讯云的单机云部署方案,面向的是服务器数据和应用部署在云主机单机中用于演示的场景。
|
|
|
+其他云应该也是可行的。
|
|
|
|
|
|
主要流程是:创建云主机,安装ubuntu操作系统,按照JDK和MySQL应用运行环境,部署三个Spring Boot微服务后台应用,
|
|
|
以及部署管理后台静态文件到tomcat。
|
|
|
@@ -449,6 +468,7 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
|
|
|
#### 1.5.3.2 JDK8
|
|
|
|
|
|
https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
|
|
|
+
|
|
|
http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html
|
|
|
|
|
|
```bash
|
|
|
@@ -464,7 +484,6 @@ sudo apt-get install oracle-java8-set-default
|
|
|
#### 1.5.3.3 MySQL
|
|
|
|
|
|
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
|
|
|
-https://www.linuxidc.com/Linux/2017-01/139502.htm
|
|
|
|
|
|
```
|
|
|
sudo apt-get update
|
|
|
@@ -504,31 +523,33 @@ sudo apt-get install mysql-client
|
|
|
|
|
|
* 命令行导入
|
|
|
|
|
|
-1. 采用FileZilla把本项目的litemall.sql上传到云主机
|
|
|
-2. 使用PuTTY登录云主机
|
|
|
-3. 进入MySQL,输入上节所设置的MySQL的root密码
|
|
|
-4. 创建数据库、 创建用户并分配访问权限
|
|
|
-5. 导入数据
|
|
|
-6. 退出
|
|
|
+ 1. 采用FileZilla把本项目的litemall.sql上传到云主机
|
|
|
+ 2. 使用PuTTY登录云主机
|
|
|
+ 3. 进入MySQL,输入上节所设置的MySQL的root密码
|
|
|
+ 4. 创建数据库、 创建用户并分配访问权限
|
|
|
+ 5. 导入数据
|
|
|
+ 6. 退出
|
|
|
|
|
|
* MySQL Workbench导入
|
|
|
|
|
|
-1. 先确认已经在1.4.3节中设置了root可以远程访问;
|
|
|
-2. 创建一个新的连接,设置`Hostname` 、`Username` 和`Password`,
|
|
|
-然后点击`Test Connection`测试是否能够连接到云主机;
|
|
|
-如果测试成功,则进入;
|
|
|
-
|
|
|
-3. 开发者自行学习文档,完成`创建数据库`、`创建用户`和`分配权限`三个操作;
|
|
|
-4. 利用Workbench的`Server`菜单下的`Data Import`完成数据导入。
|
|
|
+ 1. 先确认已经在1.4.3节中设置了root可以远程访问;
|
|
|
+ 2. 创建一个新的连接,设置`Hostname` 、`Username` 和`Password`,
|
|
|
+ 然后点击`Test Connection`测试是否能够连接到云主机;
|
|
|
+ 如果测试成功,则进入;
|
|
|
+ 
|
|
|
+ 3. 开发者自行学习文档,完成`创建数据库`、`创建用户`和`分配权限`三个操作;
|
|
|
+ 4. 利用Workbench的`Server`菜单下的`Data Import`完成数据导入。
|
|
|
|
|
|
* 命令脚本
|
|
|
-```bash
|
|
|
-cd deploy
|
|
|
-mysql -h localhost -u root -p123456
|
|
|
-source ./litemall-db/litemall_schema.sql
|
|
|
-source ./litemall-db/litemall.sql
|
|
|
-```
|
|
|
-其中123456是开发者所设置的MySQL的管理员密码。
|
|
|
+
|
|
|
+ ```bash
|
|
|
+ cd deploy
|
|
|
+ mysql -h localhost -u root -p123456
|
|
|
+ source ./litemall-db/litemall_schema.sql
|
|
|
+ source ./litemall-db/litemall.sql
|
|
|
+ ```
|
|
|
+
|
|
|
+ 其中123456是开发者所设置的MySQL的管理员密码。
|
|
|
|
|
|
#### 1.5.3.5 Tomcat/Nginx
|
|
|
|
|
|
@@ -537,15 +558,15 @@ source ./litemall-db/litemall.sql
|
|
|
因此这里需要安装tomcat或者nginx(或者其他服务器)。
|
|
|
|
|
|
这里可能有点绕:
|
|
|
+
|
|
|
1. 开发方案,无需tomcat/nginx,直接用VSC即可;
|
|
|
-2. 部署方案,采用tomcat,这里是因为80端口可能需要云主机备案;
|
|
|
+2. 部署方案,采用tomcat,这里是因为80端口可能需要云主机备案因此采用tomcat使用8080端口;
|
|
|
3. 上线方案. 采用nginx,通过反向代理访问后台服务。
|
|
|
|
|
|
因此目前这里采用tomcat部署静态文件,通过8080端口访问管理后台。
|
|
|
当然,这里没有严格限制,开发者也可以直接配置好nginx,在部署方案就使用nginx来
|
|
|
-部署静态文件服务,通过80web端口访问管理后台。
|
|
|
+部署静态文件服务,通过web端口80访问管理后台。
|
|
|
|
|
|
-
|
|
|
* Tomcat部署静态文件
|
|
|
|
|
|
1. 安装tomcat
|
|
|
@@ -581,10 +602,10 @@ source ./litemall-db/litemall.sql
|
|
|
|
|
|
1. 安装nginx
|
|
|
|
|
|
- ```bash
|
|
|
- sudo apt-get update
|
|
|
- sudo apt-get install nginx
|
|
|
- ```
|
|
|
+ ```bash
|
|
|
+ sudo apt-get update
|
|
|
+ sudo apt-get install nginx
|
|
|
+ ```
|
|
|
|
|
|
2. 配置nginx指向`delpoy/litemall-admin/dist`目录
|
|
|
|
|
|
@@ -597,36 +618,32 @@ source ./litemall-db/litemall.sql
|
|
|
|
|
|
#### 1.5.3.6 项目打包
|
|
|
|
|
|
-1. Spring Boot打包
|
|
|
+这里项目打包括两种:
|
|
|
|
|
|
-通常项目打包方案存在两种:
|
|
|
+1. Spring Boot打包
|
|
|
|
|
|
-* 一是打包war格式,因此云主机需要专门安装tomcat
|
|
|
-* 二是打包可执行jar格式,此时内部包含嵌入式tomcat
|
|
|
+ 采用如下命令进行项目打包
|
|
|
|
|
|
-这里仅采用第二种方案,简化tomcat的安装配置过程。
|
|
|
+ ```
|
|
|
+ cd litemall
|
|
|
+ mvn clean
|
|
|
+ mvn package
|
|
|
+ ```
|
|
|
|
|
|
-采用如下命令进行项目打包
|
|
|
-
|
|
|
-```
|
|
|
-cd litemall
|
|
|
-mvn clean
|
|
|
-mvn package
|
|
|
-```
|
|
|
-此时,在litemall-os-api项目的target文件夹中看到litemall-os-xxx.jar;
|
|
|
-在litemall-wx-api项目的target文件夹中看到litemall-wx-xxx.jar;
|
|
|
-在litemall-admin-api项目的target文件夹中看到litemall-admin-xxx.jar。
|
|
|
+ 此时,在litemall-os-api项目的target文件夹中看到litemall-os-xxx.jar;
|
|
|
+ 在litemall-wx-api项目的target文件夹中看到litemall-wx-xxx.jar;
|
|
|
+ 在litemall-admin-api项目的target文件夹中看到litemall-admin-xxx.jar。
|
|
|
|
|
|
2. Vue项目打包
|
|
|
|
|
|
-采用如下命令进行项目打包
|
|
|
+ 采用如下命令进行项目打包
|
|
|
|
|
|
-````bash
|
|
|
-cd litemall/litemall-admin
|
|
|
-cnpm run build:dep
|
|
|
-````
|
|
|
+ ````bash
|
|
|
+ cd litemall/litemall-admin
|
|
|
+ cnpm run build:dep
|
|
|
+ ````
|
|
|
|
|
|
-此时,litemall-admin模块的dist文件夹中就是最终部署时的代码,可以先压缩,上传到云主机,再解压缩。
|
|
|
+ 此时,litemall-admin模块的dist文件夹中就是最终部署时的代码,可以先压缩,上传到云主机,再解压缩。
|
|
|
|
|
|
#### 1.5.3.7 项目部署运行
|
|
|
|
|
|
@@ -705,6 +722,7 @@ cd litemall
|
|
|
### 1.5.4 集群式云部署方案
|
|
|
|
|
|
由于本项目是面向微小型企业的小商城系统,因此预期的分布式部署方案是
|
|
|
+
|
|
|
1. 专门的云数据库部署数据
|
|
|
2. 专门的云存储方案
|
|
|
3. 专门的CDN分发管理后台的静态文件
|
|
|
@@ -718,19 +736,21 @@ cd litemall
|
|
|
至少每个功能模块应该是独立服务系统。此外,需要引入单点登录系统、集群、缓存
|
|
|
和消息队列等多种技术。因此如果开发者需要这种形式的分布式方案,请参考其他项目。
|
|
|
|
|
|
-### 1.5.5 单主机单服务war部署方案
|
|
|
+### 1.5.5 war部署方案
|
|
|
|
|
|
-这里介绍另外一种单主机单服务的方案,即四个服务打包成一个war格式的项目部署包。
|
|
|
+这里介绍另外一种单主机单服务的war部署方案,即四个服务打包成一个war格式的项目部署包。
|
|
|
|
|
|

|
|
|
|
|
|
和1.5.3节相比,采用这样方案的原因是:
|
|
|
+
|
|
|
1. 安装方便,是传统的web项目安装方式,在tomcat里面部署一个war项目包,即可完成安装;
|
|
|
2. 内存消耗少。在1.5.3节中四个独立的java环境消耗的内存大概1.2G多,而这里部署以后
|
|
|
只需要一个java环境,因此消耗内存只有1.5.3节方案的四分之一,适合1G云主机部署。
|
|
|
3. 只存在一个域名和端口,没有多个服务之间依赖关系。
|
|
|
|
|
|
具体的打包部署方案是;
|
|
|
+
|
|
|
1. litemall-admin首先需要先编译得到静态文件;
|
|
|
2. 采用`mvn package`命令,litemall-all模块自动生成war格式的安装包,里面
|
|
|
包含了三个后台服务和静态文件;
|
|
|
@@ -746,6 +766,7 @@ cd litemall
|
|
|
## 1.6 上线方案
|
|
|
|
|
|
在1.5节部署方案中,我们介绍了多种部署的方案,但是实际上这些方案都不能立即用于正式环境:
|
|
|
+
|
|
|
1. 正式环境需要域名和HTTPS证书
|
|
|
2. 小商场的小程序端对服务器域名存在接入要求。
|
|
|
|
|
|
@@ -917,7 +938,7 @@ http://www.example.com
|
|
|
> 本人对nginx也不了解,仅仅依靠网络知识配置了简单的效果。
|
|
|
> 更多配置方法和功能,请开发者自行学习。
|
|
|
|
|
|
-### 1.6.3 小商场的小程序端上线
|
|
|
+### 1.6.3 小程序端上线
|
|
|
|
|
|
这里参考小程序官方文档,上线自己的小商城。
|
|
|
|
|
|
@@ -965,7 +986,7 @@ http://www.example.com
|
|
|
|
|
|
### 1.6.5 上线脚本
|
|
|
|
|
|
-本项目的deploy文件夹是用于
|
|
|
+本项目目前没有上线脚本,不过可以参考1.5.3节中的部署脚本。
|
|
|
|
|
|
### 1.6.6 优化
|
|
|
|