Browse Source

refactor[project]: 项目的部署方案重新设计。

Junling Bu 7 years ago
parent
commit
b213960a40

+ 3 - 3
deploy/.gitignore

@@ -1,7 +1,7 @@
-/litemall-admin-api/litemall-admin-api.jar
-/litemall-os-api/litemall-os-api.jar
-/litemall-wx-api/litemall-wx-api.jar
 /litemall-admin/dist.tar
 /litemall-db/litemall_schema.sql
 /litemall-db/litemall_table.sql
 /litemall-db/litemall_data.sql
+/litemall-api/litemall-admin-api.jar
+/litemall-api/litemall-wx-api.jar
+/litemall-api/litemall-os-api.jar

+ 10 - 8
deploy/README.md

@@ -1,10 +1,11 @@
 
 1. 项目进一步打包到deploy文件夹中:
-   * litemall-os-api模块编译得到的litemall-os-api-0.1.0-exec.jar 保存到deploy的litemall-os-api文件夹中,同时重命名成litemall-os-api.jar
-   * litemall-wx-api模块编译得到的litemall-wx-api-0.1.0-exec.jar 保存到deploy的litemall-wx-api文件夹中,同时重命名成litemall-wx-api.jar
-   * litemall-admin-api模块编译得到的litemall-admin-api-0.1.0-exec.jar 保存到deploy的litemall-admin-api文件夹中,同时重命名成litemall-admin-api.jar
+   * litemall-os-api模块编译得到的litemall-os-api-0.1.0-exec.jar 保存到deploy的litemall-api文件夹中,同时重命名成litemall-os-api.jar
+   * litemall-wx-api模块编译得到的litemall-wx-api-0.1.0-exec.jar 保存到deploy的litemall-api文件夹中,同时重命名成litemall-wx-api.jar
+   * litemall-admin-api模块编译得到的litemall-admin-api-0.1.0-exec.jar 保存到deploy的litemall-api文件夹中,同时重命名成litemall-admin-api.jar
    * litemall-admin模块编译以后,把dist文件夹压缩,然后放到deploy的litemall-admin文件夹中。
-   
+   * litemall-db模块的sql文件拷贝到deploy的litemall-db文件夹中。
+
 2. 使用FileZilla把deploy整个文件夹上传到云主机的/home/ubuntu文件夹中
 
 3. 使用PuTTY登录云主机
@@ -14,8 +15,9 @@
     ```bash
     cd deploy
     mysql -h localhost -u root -p123456 
-    source ./litemall-db/litemall_schema.sql 
-    source ./litemall-db/litemall.sql 
+    source ./litemall-db/litemall_schema.sql
+    source ./litemall-db/litemall_table.sql
+    source ./litemall-db/litemall_data.sql
     ```
     注意,123456是开发者所设置的MySQL管理员密码
     警告:
@@ -41,10 +43,10 @@
 
 7. 部署脚本
 
-    为了简化步骤1和步骤2,完成了deploy/util/upload.sh上传脚本和deploy/util/lazy.sh部署脚本,
+    为了简化步骤1和步骤2,完成了deploy/util/package.sh上传脚本和deploy/util/lazy.sh部署脚本,
     
     注意:
-    > * 开发者需要在deploy/util/upload.sh和deploy/util/lazy.sh中设置相应的云主机登录账号和密钥文件路径。
+    > * 开发者需要在deploy/util/package.sh和deploy/util/lazy.sh中设置相应的云主机登录账号和密钥文件路径。
     > * 开发者需要在deploy/util/reset.sh设置云主机的MySQL的root登录账户。
     > * 请先执行上述1-6步骤,确保部署环境成功。
     

+ 9 - 10
deploy/bin/deploy.sh

@@ -10,23 +10,22 @@ cd /home/ubuntu/deploy/litemall-admin
 rm -rf dist
 mkdir dist
 tar -zxvf dist.tar -C dist
-cd .
 
 #部署三个Spring Boot应用
 #如果服务已经启动,则尝试停止
-sudo /etc/init.d/litemall-os-api stop
-sudo /etc/init.d/litemall-wx-api stop
-sudo /etc/init.d/litemall-admin-api stop
+sudo service litemall-os-api stop
+sudo service litemall-wx-api stop
+sudo service litemall-admin-api stop
 
 #部署Spring Boot应用成服务
-sudo ln -f -s /home/ubuntu/deploy/litemall-os-api/litemall-os-api.jar /etc/init.d/litemall-os-api
-sudo ln -f -s /home/ubuntu/deploy/litemall-wx-api/litemall-wx-api.jar /etc/init.d/litemall-wx-api
-sudo ln -f -s /home/ubuntu/deploy/litemall-admin-api/litemall-admin-api.jar /etc/init.d/litemall-admin-api
+sudo ln -f -s /home/ubuntu/deploy/litemall-api/litemall-os-api.jar /etc/init.d/litemall-os-api
+sudo ln -f -s /home/ubuntu/deploy/litemall-api/litemall-wx-api.jar /etc/init.d/litemall-wx-api
+sudo ln -f -s /home/ubuntu/deploy/litemall-api/litemall-admin-api.jar /etc/init.d/litemall-admin-api
 
 #启动服务
-sudo /etc/init.d/litemall-os-api restart
-sudo /etc/init.d/litemall-wx-api restart
-sudo /etc/init.d/litemall-admin-api restart
+sudo service litemall-os-api restart
+sudo service litemall-wx-api restart
+sudo service litemall-admin-api restart
 
 # 如果静态文件是通过tomcat来服务,则tomcat8服务最好也再启动
 #sudo service tomcat8 stop

+ 1 - 1
deploy/bin/reset.sh

@@ -26,7 +26,7 @@ mysql -h localhost -u $ROOT -p$PASSWORD < db.sql
 rm db.sql
 
 # 删除storage文件夹内文件
-cd /home/ubuntu/deploy/litemall-os-api/storage
+cd /home/ubuntu/deploy/litemall-api/storage
 rm -f ./**
 
 # 重新部署服务

+ 0 - 2
deploy/litemall-admin-api/litemall-admin-api.conf

@@ -1,2 +0,0 @@
-RUN_ARGS=--spring.profiles.active=dep
-JAVA_OPTS=

+ 11 - 0
deploy/litemall-api/README.md

@@ -0,0 +1,11 @@
+开发者需要注意的是
+
+litemall-os-api.jar、litemall-wx-api.jar和litemall-admin-api.jar三个模块内部
+已经有默认的开发配置文件,但是这些配置文件可能仅仅适用于开发阶段。
+
+为了应用部署阶段时期的配置文件,开发者可以在config文件夹里面的同名配置文件中
+采用新的配置信息。
+
+例如litemall.notify.mail.enable在开发litemall-core模块内部resources/application-core.yml
+中设置的是false,而这里config/application-core.yml中设置的是true,项目部署启动时则会先
+读取config/application-core.yml中的true值。

+ 0 - 0
deploy/litemall-api/config/application-admin.yml


+ 73 - 0
deploy/litemall-api/config/application-core.yml

@@ -0,0 +1,73 @@
+litemall:
+  notify:
+    mail:
+      # 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单,sendto 定义邮件接收者,通常为商城运营人员
+      enable: true
+      host: smtp.exmail.qq.com
+      username: ex@ex.com.cn
+      password: XXXXXXXXXXXXX
+      sendfrom: ex@ex.com.cn
+      sendto: ex@qq.com
+
+    # 短消息模版通知配置
+    # 短信息用于通知客户,例如发货短信通知,注意配置格式;template-name,template-templateId 请参考 NotifyType 枚举值
+    sms:
+      enable: true
+      appid: 111111111
+      appkey: xxxxxxxxxxxxxx
+      template:
+      - name: paySucceed
+        templateId: 156349
+      - name: captcha
+        templateId: 156433
+      - name: ship
+        templateId: 158002
+      - name: refund
+        templateId: 159447
+
+    # 微信模版通知配置
+    # 微信模版用于通知客户或者运营者,注意配置格式;template-name,template-templateId 请参考 NotifyType 枚举值
+    wx:
+      enable: true
+      template:
+      - name: paySucceed
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+      - name: captcha
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+      - name: ship
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+      - name: refund
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+  # 快鸟物流查询配置
+  express:
+    enable: true
+    appId: "XXXXXXXXX"
+    appKey: "XXXXXXXXXXXXXXXXXXXXXXXXX"
+    vendors:
+    - code: "ZTO"
+      name: "中通快递"
+    - code: "YTO"
+      name: "圆通速递"
+    - code: "YD"
+      name: "韵达速递"
+    - code: "YZPY"
+      name: "邮政快递包裹"
+    - code: "EMS"
+      name: "EMS"
+    - code: "DBL"
+      name: "德邦快递"
+    - code: "FAST"
+      name: "快捷快递"
+    - code: "ZJS"
+      name: "宅急送"
+    - code: "TNT"
+      name: "TNT快递"
+    - code: "UPS"
+      name: "UPS"
+    - code: "DHL"
+      name: "DHL"
+    - code: "FEDEX"
+      name: "FEDEX联邦(国内件)"
+    - code: "FEDEX_GJ"
+      name: "FEDEX联邦(国际件)"

+ 26 - 0
deploy/litemall-api/config/application-db.yml

@@ -0,0 +1,26 @@
+pagehelper:
+  helperDialect:  mysql
+  reasonable: true
+  supportMethodsArguments:  true
+  params: count=countSql
+
+spring:
+  datasource:
+    druid:
+      url:  jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&verifyServerCertificate=false&useSSL=false
+      driver-class-name:  com.mysql.jdbc.Driver
+      username:  litemall
+      password:  litemall123456
+      initial-size:  10
+      max-active:  50
+      min-idle:  10
+      max-wait:  60000
+      pool-prepared-statements:  true
+      max-pool-prepared-statement-per-connection-size:  20
+      validation-query:  SELECT 1 FROM DUAL
+      test-on-borrow:  false
+      test-on-return:  false
+      test-while-idle:  true
+      time-between-eviction-runs-millis:  60000
+      filters:  stat,wall,log4j
+

+ 0 - 0
deploy/litemall-api/config/application-os.yml


+ 8 - 0
deploy/litemall-api/config/application-wx.yml

@@ -0,0 +1,8 @@
+# 开发者应该设置成自己的wx相关信息
+litemall:
+  wx:
+    app-id: wxa5b486c6b918ecfb
+    app-secret: e04004829d4c383b4db7769d88dfbca1
+    mch-id: 111111
+    mch-key: xxxxxx
+    notify-url: http://www.example.com/wx/order/pay-notify

+ 0 - 2
deploy/litemall-os-api/litemall-os-api.conf

@@ -1,2 +0,0 @@
-RUN_ARGS=--spring.profiles.active=dep
-JAVA_OPTS=

+ 0 - 2
deploy/litemall-wx-api/litemall-wx-api.conf

@@ -1,2 +0,0 @@
-RUN_ARGS=--spring.profiles.active=dep
-JAVA_OPTS=

+ 12 - 20
deploy/util/lazy.sh

@@ -1,14 +1,9 @@
 #!/bin/bash
 
 # 本脚本的作用是
-# 1. 编译打包Spring Boot应用
-# 2. 编译litemall-admin应用
-# 3. 调用upload.sh上传
-# 4. ssh远程登录云主机,运行deploy/bin/deploy.sh脚本
-# 注意:运行脚本必须是在litemall主目录下,类似如下命令
-# cd litemall
-# ./deploy/util/lazy.sh
-
+# 1. 项目打包
+# 2. 上传云主机
+# 3. 远程登录云主机并执行deploy脚本
 
 # 请设置云主机的IP地址和账户
 # 例如 ubuntu@122.152.206.172
@@ -29,20 +24,17 @@ then
   exit -1
 fi
 
-echo $PWD
-mvn clean
-mvn package
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+cd $DIR/../..
+LITEMALL_HOME=$PWD
+echo "LITEMALL_HOME $LITEMALL_HOME"
 
-cd ./litemall-admin
-# 安装阿里node镜像工具
-npm install -g cnpm --registry=https://registry.npm.taobao.org
-# 安装node项目依赖环境
-cnpm install
-cnpm run build:dep
+# 项目打包
+cd $LITEMALL_HOME
+./deploy/util/package.sh
 
-cd ..
-echo $PWD
-./deploy/util/upload.sh
+# 上传云主机
+scp -i $ID_RSA -r  ./deploy $REMOTE:/home/ubuntu/
 
 # 远程登录云主机并执行deploy脚本
 ssh $REMOTE -i $ID_RSA << eeooff

+ 36 - 0
deploy/util/package.sh

@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# 请注意
+# 本脚本的作用是把本项目编译的结果保存到deploy文件夹中
+# 1. 把项目数据库文件拷贝到litemall-db
+# 2. 编译litemall-admin,然后打包到litemall-admin
+# 3. 编译后台服务模块,然后拷贝到litemall-api
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+cd $DIR/../..
+LITEMALL_HOME=$PWD
+echo "LITEMALL_HOME $LITEMALL_HOME"
+
+# 复制数据库
+cp  -f ./litemall-db/sql/litemall_schema.sql ./deploy/litemall-db/litemall_schema.sql
+cp  -f ./litemall-db/sql/litemall_table.sql ./deploy/litemall-db/litemall_table.sql
+cp  -f ./litemall-db/sql/litemall_data.sql ./deploy/litemall-db/litemall_data.sql
+
+cd ./litemall-admin
+# 安装阿里node镜像工具
+npm install -g cnpm --registry=https://registry.npm.taobao.org
+# 安装node项目依赖环境
+cnpm install
+cnpm run build:dep
+cd ..
+# 压缩litemall-admin应用
+tar -zcvf ./deploy/litemall-admin/dist.tar -C ./litemall-admin/dist .
+
+# 复制三个Spring Boot应用
+# 需要注意的是target目录里面存在两种jar,一种是当前模块纯编译代码的jar,另外一种是包含依赖库的可执行jar,
+# 这里我们需要的是可执行jar
+mvn clean
+mvn package
+cp  -f ./litemall-os-api/target/litemall-os-api-*-exec.jar ./deploy/litemall-api/litemall-os-api.jar
+cp  -f ./litemall-wx-api/target/litemall-wx-api-*-exec.jar ./deploy/litemall-api/litemall-wx-api.jar
+cp  -f ./litemall-admin-api/target/litemall-admin-api-*-exec.jar ./deploy/litemall-api/litemall-admin-api.jar

+ 0 - 44
deploy/util/upload.sh

@@ -1,44 +0,0 @@
-#!/bin/bash
-
-# 请注意
-# 1. 本脚本的作用是把本项目编译的结果保存到deploy文件夹中,然后上传到云主机
-# 2. 运行本脚本前,请确认Spring Boot模块已经编译,同时litemall-admin模块也已经便宜
-# 3. util/upload.sh脚本是运行在开发机中,bin/deploy.sh脚本是运行在云主机中
-# 4. 这是一个简单的脚本,开发者可以按照自己需求修改
-
-# 请设置云主机登录IP地址和账户
-# 例如 ubuntu@122.152.206.172
-REMOTE=
-# 请设置本地SSH私钥文件id_rsa路径
-# 例如 /home/litemall/id_rsa
-ID_RSA=
-
-if test -z "$REMOTE"
-then
-  echo "请设置云主机登录IP地址和账户"
-  exit -1
-fi
-
-if test -z "$ID_RSA"
-then
-  echo "请设置云主机登录IP地址和账户"
-  exit -1
-fi
-
-# 复制三个Spring Boot应用
-# 需要注意的是target目录里面存在两种jar,一种是当前模块纯编译代码的jar,另外一种是包含依赖库的可执行jar,
-# 这里我们需要的是可执行jar
-cp  -f ./litemall-os-api/target/litemall-os-api-*-exec.jar ./deploy/litemall-os-api/litemall-os-api.jar
-cp  -f ./litemall-wx-api/target/litemall-wx-api-*-exec.jar ./deploy/litemall-wx-api/litemall-wx-api.jar
-cp  -f ./litemall-admin-api/target/litemall-admin-api-*-exec.jar ./deploy/litemall-admin-api/litemall-admin-api.jar
-
-# 压缩litemall-admin应用
-tar -zcvf ./deploy/litemall-admin/dist.tar -C ./litemall-admin/dist .
-
-# 复制数据库
-cp  -f ./litemall-db/sql/litemall_schema.sql ./deploy/litemall-db/litemall_schema.sql
-cp  -f ./litemall-db/sql/litemall_table.sql ./deploy/litemall-db/litemall_table.sql
-cp  -f ./litemall-db/sql/litemall_data.sql ./deploy/litemall-db/litemall_data.sql
-
-# 上传云主机
-scp -i $ID_RSA -r  ./deploy $REMOTE:/home/ubuntu/