Commit 24c99f45 authored by Junling Bu's avatar Junling Bu
Browse files

1. 进一步完善文档。

2. util/upload.sh自动上传脚本
parent 7004a5b5
...@@ -109,11 +109,19 @@ litemall ...@@ -109,11 +109,19 @@ litemall
== ==
本项目基于或参考以下项目: 本项目基于或参考以下项目:
> 1. nideshop-mini-program > 1. [nideshop-mini-program](https://github.com/tumobi/nideshop-mini-program)
> 如果后端希望采用nodejs,用户可以访问nideshop项目 > 如果后端希望采用nodejs,用户可以访问nideshop项目
> 2. platform > 2. [platform](https://gitee.com/fuyang_lipengjun/platform)
> 如果后端希望采用非spring boot版的普通spring版或者更多功能, > 如果后端希望采用非spring boot版的普通spring版或者更多功能,
> 用户可以访问platform项目 > 用户可以访问platform项目
> 3. vue-element-admin > 3. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
> 一个基于Vue和Element的后台集成方案
本项目所依赖的其他开源项目见相关章节 本项目所依赖的其他开源项目见相关章节
问题
==
用户有问题或者好的建议可以用Issues反馈交流,请给出详细信息,本人会尽可能解决。
* 如果问题是共性问题(如代码bug或文档不全),本人会及时解决。
* 如果问题是个人问题(如用户了解不深入或者没有相关技术),请见谅(本人也是百度和谷歌)。
\ No newline at end of file
...@@ -16,9 +16,17 @@ ...@@ -16,9 +16,17 @@
``` ```
5. 测试部署是否成功 5. 测试部署是否成功
请确保litemall的Spring Boot应用模块所对应的端口已经打开;
然后测试是否能够访问(xxx.xxx.xxx.xxx是云主机IP):
> http://xxx.xxx.xxx.xxx:8081/storage/index/index 请确保云主机的安全组已经允许相应的端口(见1.5.3.1);
> http://xxx.xxx.xxx.xxx:8082/wx/index/index 然后测试是否部署成功(xxx.xxx.xxx.xxx是云主机IP):
> http://xxx.xxx.xxx.xxx:8083/admin/index/index
\ No newline at end of file ```
http://xxx.xxx.xxx.xxx:8081/storage/index/index
http://xxx.xxx.xxx.xxx:8082/wx/index/index
http://xxx.xxx.xxx.xxx:8083/admin/index/index
http://xxx.xxx.xxx.xxx:8080/#/login
```
6. 自动上传脚本
为了简化步骤1和步骤2,完成了util/upload.sh脚本,用户需要设置相应的云主机IP和密钥文件路径
\ No newline at end of file
#!/bin/bash #!/bin/bash
# 请注意
# 1. 本脚本的作用是停止当前Spring Boot应用,然后再次部署,此外解压缩litemall-admin的静态文件
# 2. litemall-admin解压目录是 /home/ubuntu/deploy/litemall-admin/dist,
# 而这个目录也正是tomcat配置静态文件目录的路径(见1.5.3.5节)
#部署litemall-admin静态文件应用 #部署litemall-admin静态文件应用
cd /home/ubuntu/deploy/litemall-admin cd /home/ubuntu/deploy/litemall-admin
rm -rf dist rm -rf dist
......
#!/bin/bash
# 请注意
# 1. 本脚本的作用是把本项目编译的结果保存到deploy文件夹中,然后上传到云主机
# 2. 运行本脚本前,请确认Spring Boot模块已经编译,同时litemall-admin模块也已经便宜
# 3. util/upload.sh脚本是运行在开发机中,bin/deploy.sh脚本是运行在云主机中
# 4. 这是一个简单的脚本,用户可以按照自己需求修改
# 请设置云主机的IP地址
CVM=XXX.XXX.XXX.XXX
# 请设置本地SSH私钥文件id_rsa
ID_RSA=/XXX/id_rsa
# 复制三个Spring Boot应用
cp -f ./litemall-os-api/target/litemall-os-api-*.jar ./deploy/litemall-os-api/litemall-os-api.jar
cp -f ./litemall-wx-api/target/litemall-wx-api-*.jar ./deploy/litemall-wx-api/litemall-wx-api.jar
cp -f ./litemall-admin-api/target/litemall-admin-api-*.jar ./deploy/litemall-admin-api/litemall-admin-api.jar
# 压缩litemall-admin应用
tar -zcvf ./deploy/litemall-admin/dist.tar -C ./litemall-admin/dist .
# 上传云主机
scp -i $ID_RSA -r ./deploy ubuntu@$CVM:/home/ubuntu/
...@@ -156,27 +156,28 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实 ...@@ -156,27 +156,28 @@ litemall是一个简单的商场系统,基于现有的开源项目,重新实
### 1.4.1 Spring Boot开发环境 ### 1.4.1 Spring Boot开发环境
1. 安装JDK8 1. 安装JDK8
2. 安装IDEA Community 2. 安装maven
3. 安装maven 3. 安装Git(可选)
4. 安装Git(可选) 4. 安装IDEA Community
建议安装maven插件和Git插件
5. IDEA导入本项目 5. IDEA导入本项目
6. 采用maven插件安装依赖库 6. 采用maven命令行或者IDEA的maven插件安装本项目依赖库
7. 编译本项目 7. 编译本项目
8. 运行litemall-os-api, 打开浏览器,输入 8. 运行litemall-os-api, 打开浏览器,输入
``` ```
http://localhost:8081/storage/index/index http://localhost:8081/storage/index/index
``` ```
如果出现JSON数据,则Spring Boot开发环境部署成功,litemall-os-api模块运行正常。 如果出现JSON数据,则Spring Boot开发环境部署成功,litemall-os-api模块运行正常。
9. 同上,运行litemall-wx-api, 打开浏览器,输入 9. 同上,运行litemall-wx-api, 打开浏览器,输入
``` ```
http://localhost:8082/wx/index/index http://localhost:8082/wx/index/index
``` ```
如果出现JSON数据,则litemall-wx-api模块运行正常。 如果出现JSON数据,则litemall-wx-api模块运行正常。
10. 同上,运行litemall-admin-api, 打开浏览器,输入 10. 同上,运行litemall-admin-api, 打开浏览器,输入
``` ```
http://localhost:8083/admin/index/index http://localhost:8083/admin/index/index
``` ```
如果出现JSON数据,则litemall-admin-api模块运行正常。 如果出现JSON数据,则litemall-admin-api模块运行正常。
注意: 注意:
> 由于设置了三个不同的端口,因此开发时,IDEA可以同时运行litemall-os-api、litemall-wx-api和litemall-admin-api三个Spring Boot程序。 > 由于设置了三个不同的端口,因此开发时,IDEA可以同时运行litemall-os-api、litemall-wx-api和litemall-admin-api三个Spring Boot程序。
...@@ -185,7 +186,7 @@ http://localhost:8083/admin/index/index ...@@ -185,7 +186,7 @@ http://localhost:8083/admin/index/index
1. 安装微信小程序开发工具 1. 安装微信小程序开发工具
2. 导入本项目的litemall-wx模块文件夹 2. 导入本项目的litemall-wx模块文件夹
3. 编译前,请确定litemall-wx-api模块已经运行,而litemall-wx模块的config文件夹中的api.js已经设置正确对应的后台数据服务地址; 3. 编译前,请确定litemall-wx-api模块已经运行,而litemall-wx模块的config文件夹中的api.js已经设置正确的后台数据服务地址;
4. 点击`编译`,如果出现数据和图片,则运行正常 4. 点击`编译`,如果出现数据和图片,则运行正常
### 1.4.3 Vue开发环境 ### 1.4.3 Vue开发环境
...@@ -203,8 +204,8 @@ http://localhost:8083/admin/index/index ...@@ -203,8 +204,8 @@ http://localhost:8083/admin/index/index
``` ```
cnpm run dev cnpm run dev
``` ```
然后,打开浏览器,输入`http://localhost:9527` 然后,打开浏览器,输入`http://localhost:9527`
如果出现管理后台登陆页面,则表明管理后台的前端运行正常; 如果出现管理后台登陆页面,则表明管理后台的前端运行正常;
6. 请确定litemall-admin-api模块已经运行,然后点击`登陆`,如果能够成功登陆,则表明管理后台的前端和后端对接成功,运行正常。 6. 请确定litemall-admin-api模块已经运行,然后点击`登陆`,如果能够成功登陆,则表明管理后台的前端和后端对接成功,运行正常。
## 1.5 部署方案 ## 1.5 部署方案
...@@ -212,6 +213,7 @@ http://localhost:8083/admin/index/index ...@@ -212,6 +213,7 @@ http://localhost:8083/admin/index/index
在1.4节中介绍的是开发阶段时一些关键性开发流程。本节将介绍代码开发成功以后开始部署项目时一些关键性流程。 在1.4节中介绍的是开发阶段时一些关键性开发流程。本节将介绍代码开发成功以后开始部署项目时一些关键性流程。
首先,需要明确的是开发时项目使用的服务地址是本地地址,即localhost;而部署时则应该根据具体情况设置合理的服务器地址和端口。 首先,需要明确的是开发时项目使用的服务地址是本地地址,即localhost;而部署时则应该根据具体情况设置合理的服务器地址和端口。
其次,需要明确的是各模块之间的关系: 其次,需要明确的是各模块之间的关系:
* litemall-os-api模块会包含litemall-db模块,部署在服务器中 * litemall-os-api模块会包含litemall-db模块,部署在服务器中
...@@ -244,13 +246,14 @@ http://localhost:8083/admin/index/index ...@@ -244,13 +246,14 @@ http://localhost:8083/admin/index/index
而项目开发完毕以后,在正式部署之前,可以先进行一个简单的本机测试部署方案。 而项目开发完毕以后,在正式部署之前,可以先进行一个简单的本机测试部署方案。
首先,需要确保本地MySQL已经安装并且导入了litemall.sql数据; 首先,需要确保本地MySQL已经安装并且导入了litemall.sql数据;
其次,项目打包 其次,项目打包
``` ```
cd litemall cd litemall
mvn clean mvn clean
mvn package mvn package
``` ```
最后,本机测试性部署三个应用 最后,本机测试性部署三个Spring Boot应用
``` ```
cd litemall cd litemall
java -jar ./litemall-os-api/target/litemall-os-api-0.1.0.jar & java -jar ./litemall-os-api/target/litemall-os-api-0.1.0.jar &
...@@ -272,22 +275,37 @@ http://localhost:8083/admin/index/index ...@@ -272,22 +275,37 @@ http://localhost:8083/admin/index/index
局域网方案,面向的是最终服务器数据和部分应用程序部署在局域网内的场景。 局域网方案,面向的是最终服务器数据和部分应用程序部署在局域网内的场景。
### 1.5.3 基于ubuntu腾讯云的单机云部署方案 ### 1.5.3 基于ubuntu腾讯云的单机云部署方案
单机云部署方案,面向的是云主机单机同时部署演示型场景 单机云部署方案,面向的是服务器数据和应用部署在云主机单机中用于演示的场景。
创建云主机,安装ubuntu操作系统,按照JDK和MySQL应用运行环境,部署三个Spring Boot微服务后台应用。
主要流程是:创建云主机,安装ubuntu操作系统,按照JDK和MySQL应用运行环境,部署三个Spring Boot微服务后台应用,
以及部署后台静态文件。
![](pic1/1-3.png) ![](pic1/1-3.png)
#### 1.5.3.1 主机 #### 1.5.3.1 主机
腾讯云 ubuntu 16.04.1 请参考腾讯云官方文档进行相关操作。
1. 创建云主机虚拟机 1. 创建云主机虚拟机
2. 安装操作系统 2. 安装操作系统
本项目采用ubuntu 16.04.1,但是并不限制其他操作系统。
3. 创建安全组 3. 创建安全组
![](pic1/1-4.png)
4. 安装SSH密钥(可选) ![](pic1/1-4.png)
目前允许的端口:8081,8082,8083,8080,80,443,22,3306
4. 设置SSH密钥(可选)
建议用户设置SSH密钥,可以免密码登陆云主机,以及用于脚本自动上传应用。
5. 使用PuTTY远程登陆云主机 5. 使用PuTTY远程登陆云主机
如果用户设置SSH密钥,可以采用免密码登陆;否则采用账号和密码登陆。
#### 1.5.3.2 JDK8 #### 1.5.3.2 JDK8
https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04 https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
...@@ -316,24 +334,23 @@ sudo apt-get install mysql-client ...@@ -316,24 +334,23 @@ sudo apt-get install mysql-client
下面是可选地设置root账号远程访问MySQL 下面是可选地设置root账号远程访问MySQL
首先,MySQL默认不支持远程访问,因此需要修改配置文件 1. MySQL默认不支持远程访问,因此需要修改配置文件
``` ```
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
``` ```
添加'#'注释掉其中的`bind-address`, 添加'#'注释掉其中的`bind-address`,
``` ```
#bind-address= 127.0.0.1`; #bind-address= 127.0.0.1`;
``` ```
其次,设置root账号远程访问权限
```
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;
```
最后,登陆腾讯云,设置云主机的`安全组`,允许`3306`端口访问,然后重启云主机,使得这些配置生效。 2. 设置root账号远程访问权限
```
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;
```
3. 登陆腾讯云,设置云主机的`安全组`,允许`3306`端口访问,然后重启云主机,使得这些配置生效。
警告 警告
> 1. 因为安全的原因,MySQL不应该设置远程访问, > 1. 因为安全的原因,MySQL不应该设置远程访问,
...@@ -358,7 +375,7 @@ quit; ...@@ -358,7 +375,7 @@ quit;
1. 先确认已经在1.4.3节中设置了root可以远程访问; 1. 先确认已经在1.4.3节中设置了root可以远程访问;
2. 创建一个新的连接,设置`Hostname``Username``Password` 2. 创建一个新的连接,设置`Hostname``Username``Password`
然后点击``Test Connection`测试是否能够连接到云主机; 然后点击`Test Connection`测试是否能够连接到云主机;
如果测试成功,则进入; 如果测试成功,则进入;
![](pic1/1-5.png) ![](pic1/1-5.png)
3. 用户自行学习文档,完成`创建数据库``创建用户``分配权限`三个操作; 3. 用户自行学习文档,完成`创建数据库``创建用户``分配权限`三个操作;
...@@ -367,20 +384,27 @@ quit; ...@@ -367,20 +384,27 @@ quit;
#### 1.5.3.5 Tomcat #### 1.5.3.5 Tomcat
1. 本项目中采用二进制jar包方式来部署Spring Boot后端应用,因此可以不需要部署在tomcat中。 1. 本项目中采用二进制jar包方式来部署Spring Boot后端应用,因此可以不需要部署在tomcat中。
但是,litemall-admin前端项目最终会编译出静态文件,需要部署在服务器中,因此这里仍需安装tomcat。 但是,litemall-admin前端项目最终会编译出静态文件,需要部署在服务器中,因此这里仍需安装tomcat(或者其他服务器)
```bash ```bash
sudo apt-get install tomcat8 sudo apt-get install tomcat8
``` ```
2. 为了配置tomcat支持外部文件夹中,修改tomcat的server文件 2. 为了配置tomcat支持外部文件夹中,修改tomcat的server文件`Host`标签
```bash ```bash
sudo vi /var/lib/tomcat8/conf/server.xml sudo vi /var/lib/tomcat8/conf/server.xml
``` ```
在其中添加一行新的内容`<Context path="/" docBase="/home/ubuntu/deploy/litemall-admin/dist" reloadable="true" />` 在其中添加一行新的内容
```
<Host>
...
<Context path="/" docBase="/home/ubuntu/deploy/litemall-admin/dist" reloadable="true" />
...
</Host>
```
3. 然后,重启tomcat 3. 重启tomcat
``` ```
sudo service tomcat8 restart sudo service tomcat8 restart
...@@ -405,25 +429,29 @@ cd litemall ...@@ -405,25 +429,29 @@ cd litemall
mvn clean mvn clean
mvn package 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。
2. Vue项目打包 2. Vue项目打包
采用如下命令进行项目打包 采用如下命令进行项目打包
````bash ````bash
cd litemall/litemall-admin
cnpm run build:prod cnpm run build:prod
```` ````
此时,litemall-admin模块的dist文件夹中就是最终部署时的代码。 此时,litemall-admin模块的dist文件夹中就是最终部署时的代码,可以先压缩,上传到云主机,再解压缩
#### 1.5.3.6 项目部署运行 #### 1.5.3.6 项目部署运行
https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#deployment-service https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#deployment-service
1. 项目进一步打包到deploy文件夹中: 1. 项目进一步打包到deploy文件夹中:
* litemall-os-api模块编译得到的litemall-os-api-0.1.0.jar 保存到deploy的litemall-os-api文件夹中,同时重命名成litemall-os-api.jar * litemall-os-api模块编译得到的litemall-os-api-xxx.jar 保存到deploy的litemall-os-api文件夹中,同时重命名成litemall-os-api.jar
* litemall-wx-api模块编译得到的litemall-wx-api-0.1.0.jar 保存到deploy的litemall-wx-api文件夹中,同时重命名成litemall-wx-api.jar * litemall-wx-api模块编译得到的litemall-wx-api-xxx.jar 保存到deploy的litemall-wx-api文件夹中,同时重命名成litemall-wx-api.jar
* litemall-admin-api模块编译得到的litemall-admin-api-0.1.0.jar 保存到deploy的litemall-admin-api文件夹中,同时重命名成litemall-admin-api.jar * litemall-admin-api模块编译得到的litemall-admin-api-xxx.jar 保存到deploy的litemall-admin-api文件夹中,同时重命名成litemall-admin-api.jar
* litemall-admin模块编译以后,把dist文件夹压缩,然后放到deploy的litemall-admin文件夹中。 * litemall-admin模块编译以后,把dist文件夹压缩,然后放到deploy的litemall-admin文件夹中。
2. 使用FileZilla把deploy整个文件夹上传到云主机的/home/ubuntu文件夹中 2. 使用FileZilla把deploy整个文件夹上传到云主机的/home/ubuntu文件夹中
...@@ -436,11 +464,19 @@ https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#dep ...@@ -436,11 +464,19 @@ https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#dep
sudo ./deploy/bin/deploy.sh sudo ./deploy/bin/deploy.sh
``` ```
![](pic1/1-6.png) ![](pic1/1-6.png)
5. 测试部署是否成功 5. 测试部署是否成功
请确保litemall的Spring Boot应用模块所对应的端口已经打开;
然后测试是否能够访问(xxx.xxx.xxx.xxx是云主机IP):
> http://xxx.xxx.xxx.xxx:8081/storage/index/index 请确保云主机的安全组已经允许相应的端口(见1.5.3.1);
> http://xxx.xxx.xxx.xxx:8082/wx/index/index 然后测试是否部署成功(xxx.xxx.xxx.xxx是云主机IP):
> http://xxx.xxx.xxx.xxx:8083/admin/index/index
```
http://xxx.xxx.xxx.xxx:8081/storage/index/index
http://xxx.xxx.xxx.xxx:8082/wx/index/index
http://xxx.xxx.xxx.xxx:8083/admin/index/index
http://xxx.xxx.xxx.xxx:8080/#/login
```
6. 自动上传脚本
为了简化步骤1和步骤2,完成了util/upload.sh脚本,用户需要设置相应的云主机IP和密钥文件路径
\ No newline at end of file
doc/pic/2.png

63.7 KB | W: | H:

doc/pic/2.png

63.6 KB | W: | H:

doc/pic/2.png
doc/pic/2.png
doc/pic/2.png
doc/pic/2.png
  • 2-up
  • Swipe
  • Onion skin
doc/pic1/1-1.png

70.7 KB | W: | H:

doc/pic1/1-1.png

72.1 KB | W: | H:

doc/pic1/1-1.png
doc/pic1/1-1.png
doc/pic1/1-1.png
doc/pic1/1-1.png
  • 2-up
  • Swipe
  • Onion skin
doc/pic1/1-2.png

116 KB | W: | H:

doc/pic1/1-2.png

115 KB | W: | H:

doc/pic1/1-2.png
doc/pic1/1-2.png
doc/pic1/1-2.png
doc/pic1/1-2.png
  • 2-up
  • Swipe
  • Onion skin
doc/pic1/1-4.png

56.8 KB | W: | H:

doc/pic1/1-4.png

67.9 KB | W: | H:

doc/pic1/1-4.png
doc/pic1/1-4.png
doc/pic1/1-4.png
doc/pic1/1-4.png
  • 2-up
  • Swipe
  • Onion skin
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment