Browse Source

deploy再次调整

Junling Bu 7 years ago
parent
commit
5f1c39bbf1

+ 3 - 6
deploy/.gitignore

@@ -1,6 +1,3 @@
-/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
+
+/db/litemall.sql
+/litemall/litemall.jar

+ 88 - 42
deploy/README.md

@@ -1,58 +1,104 @@
+## deploy
 
-1. 项目进一步打包到deploy文件夹中:
-   * 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文件夹中
+1. 在主机或者开发机打包项目到deploy;
+    ```
+    cd litemall
+    cat ./litemall-db/sql/litemall_schema.sql > ./deploy/db/litemall.sql
+    cat ./litemall-db/sql/litemall_table.sql >> ./deploy/db/litemall.sql
+    cat ./litemall-db/sql/litemall_data.sql >> ./deploy/db/litemall.sql
+    
+    cd ./litemall-admin
+    cnpm install
+    cnpm run build:dep
+    
+    cd ..
+    mvn clean package
+    cp -f ./litemall-all/target/litemall-all-*-exec.jar ./deploy/litemall/litemall.jar
+    ```
+    这里的工作是:
+    1. 把数据库文件拷贝到deploy/db文件夹
+    2. 编译litemall-admin项目
+    3. 编译litemall-all模块,同时把litemall-admin编译得到的静态文件拷贝到
+       litemall-all模块的static目录
+       
+2. 修改litemall文件夹下面的*.yml外部配置文件,当litemall-all模块启动时会
+    加载外部配置文件,而覆盖默认jar包内部的配置文件。
+    例如,配置文件中一些地方需要设置成远程主机的IP地址
+    
+此时deploy部署包结构如下:
 
-3. 使用PuTTY登录云主机
+* bin
 
-4. 如果开发者没有部署litemall数据库,可以运行以下命令:
+存放远程主机运行的脚本,包括deploy.sh脚本和reset.sh脚本
 
-    ```bash
-    cd deploy
-    mysql -h localhost -u root -p123456 
-    source ./litemall-db/litemall_schema.sql
-    use litemall;
-    source ./litemall-db/litemall_table.sql
-    source ./litemall-db/litemall_data.sql
-    ```
-    注意,123456是开发者所设置的MySQL管理员密码
-    警告:
-    > litemall_schema.sql会尝试删除litemall数据库然后重建一个新的数据。
+* db
 
-5. 运行脚本部署运行
+存放litemall数据库文件
 
-    ```bash
-    sudo ./deploy/bin/deploy.sh
-    ```
+* litemall
+
+存放远程主机运行的代码,包括litemall-all二进制可执行包和litemall外部配置文件
+
+* util
+存放开发主机运行的脚本,包括package.sh脚本和lazy.sh脚本。
+由于是本地开发主机运行,因此开发者可以不用上传到远程主机。
 
-6. 测试部署是否成功
-  
-    请确保云主机的安全组已经允许相应的端口(见1.5.3.1);
-    然后测试是否部署成功(xxx.xxx.xxx.xxx是云主机IP):
+### 项目部署
 
+1. 远程主机环境(MySQL和JDK1.8)已经安装好,请确保云主机的安全组已经允许相应的端口。
+2. 导入db/litemall.sql
+    ```bash
+    cd /home/ubuntu/deploy/db
+    mysql -h localhost -u $ROOT -p$PASSWORD < litemall.sql
+    ```
+3. 启动服务
+    ```bash
+    sudo service litemall stop
+    sudo ln -f -s /home/ubuntu/deploy/litemall/litemall.jar /etc/init.d/litemall
+    sudo service litemall start
     ```
-    http://xxx.xxx.xxx.xxx:8082/wx/index/index
-    http://xxx.xxx.xxx.xxx:8083/admin/index/index
+4. 测试是否部署成功(xxx.xxx.xxx.xxx是云主机IP):
+    ```
+    http://xxx.xxx.xxx.xxx:8080/wx/index/index
+    http://xxx.xxx.xxx.xxx:8080/admin/index/index
     http://xxx.xxx.xxx.xxx:8080/#/login
     ```
 
-7. 部署脚本
+### 项目辅助脚本
 
-    为了简化步骤1和步骤2,完成了deploy/util/package.sh上传脚本和deploy/util/lazy.sh部署脚本,
-    
-    注意:
-    > 1. 开发者需要在deploy/util/package.sh和deploy/util/lazy.sh中设置相应的云主机登录账号和密钥文件路径。
-    > 2. 开发者需要在deploy/bin/reset.sh设置云主机的MySQL的root登录账户。
-    > 3. 请先执行1.5.1中上述步骤,确保部署环境成功。
-    
-    * package.sh
+在前面的项目打包和项目部署中都是采用手动命令来部署。
+这里可以写一些脚本简化:
+
+* util/packet.sh
+
+在开发主机运行可以自动项目打包
+
+* util/lazy.sh
+
+在开发主机运行可以自动项目打包、项目上传远程主机、自动登录系统执行项目部署脚本。
     
-    该脚本会自动把当前项目Spring Boot项目打包和Vue项目打包工作,然后复制到deploy文件夹中。
-   
-    * lazy.sh
+注意:
+> 1. 开发者需要在util/lazy.sh中设置相应的远程主机登录账号和密钥文件路径。
+> 2. 开发者需要在bin/reset.sh设置远程主机的MySQL的root登录账户。
     
-    该脚本会调用package.sh打包项目,然后上传deploy文件夹到云主机,最后ssh登录远程主机执行bin下面的deploy.sh脚本。
+* bin/deploy.sh
+
+在远程主机运行可以自动部署服务
+
+* bin/reset.sh
+
+在远程主机运行可以自动项目导入数据、删除本地上传图片、再执行bin/deploy.sh部署服务。
+
+注意:
+> 开发者需要在bin/reset.sh设置远程主机的MySQL的root登录账户。
+
+总结,当开发者设置好配置信息以后,可以在本地运行lazy.sh脚本自动一键部署:
+```bash
+cd litemall
+./deploy/util/lazy.sh
+```
+
+不过由于需要设置的信息会包含敏感安全信息,强烈建议开发者参考这里的deploy文件夹,
+然后实现自己的deploy文件夹,妥善处置外部配置文件和脚本中的敏感安全信息!!!

+ 4 - 27
deploy/bin/deploy.sh

@@ -1,29 +1,6 @@
 #!/bin/bash
 
-# 请注意
-# 1. 本脚本的作用是停止当前Spring Boot应用,然后再次部署
-# 2. 解压dist.tar到/home/ubuntu/deploy/litemall-admin/dist,
-#    而这个目录也正是tomcat或者nginx所配置静态文件目录的路径(见1.5.3.5节)
-
-#部署litemall-admin静态文件应用
-cd /home/ubuntu/deploy/litemall-admin
-rm -rf dist
-mkdir dist
-tar -zxvf dist.tar -C dist
-
-#部署三个Spring Boot应用
-#如果服务已经启动,则尝试停止
-sudo service litemall-wx-api stop
-sudo service litemall-admin-api stop
-
-#部署Spring Boot应用成服务
-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 service litemall-wx-api restart
-sudo service litemall-admin-api restart
-
-# 如果静态文件是通过tomcat来服务,则tomcat8服务最好也再启动
-#sudo service tomcat8 stop
-#sudo service tomcat8 start
+# 本脚本的作用是停止当前Spring Boot应用,然后再次部署
+sudo service litemall stop
+sudo ln -f -s /home/ubuntu/deploy/litemall/litemall.jar /etc/init.d/litemall
+sudo service litemall start

+ 4 - 7
deploy/bin/reset.sh

@@ -18,15 +18,12 @@ then
   exit -1
 fi
 
-cd /home/ubuntu/deploy/litemall-db
-cat litemall_schema.sql > db.sql
-cat litemall_table.sql >> db.sql
-cat litemall_data.sql >> db.sql
-mysql -h localhost -u $ROOT -p$PASSWORD < db.sql
-rm db.sql
+# 导入数据
+cd /home/ubuntu/deploy/db
+mysql -h localhost -u $ROOT -p$PASSWORD < litemall.sql
 
 # 删除storage文件夹内文件
-cd /home/ubuntu/deploy/litemall-api/storage
+cd /home/ubuntu/deploy/litemall/storage
 rm -f ./**
 
 # 重新部署服务

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


+ 105 - 0
deploy/litemall/application-core.yml

@@ -0,0 +1,105 @@
+litemall:
+  # 开发者应该设置成自己的wx相关信息
+  wx:
+    app-id: wxa5b486c6b918ecfb
+    app-secret: e04004829d4c383b4db7769d88dfbca1
+    mch-id: 111111
+    mch-key: xxxxxx
+    notify-url: http://122.152.206.172:8080/wx/order/pay-notify
+
+  #通知相关配置
+  notify:
+    mail:
+      # 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单,sendto 定义邮件接收者,通常为商城运营人员
+      enable: false
+      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: false
+      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: false
+      template:
+      - name: paySucceed
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+      - name: captcha
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+      - name: ship
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+      - name: refund
+        templateId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+  # 快鸟物流查询配置
+  express:
+    enable: false
+    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联邦(国际件)"
+
+  # 对象存储配置
+  storage:
+    # 当前工作的对象存储模式,分别是local、aliyun、tencent
+    active: local
+    # 本地对象存储配置信息
+    local:
+      storagePath: storage
+      address: http://122.152.206.172:8080/wx/storage/fetch/
+      port: 8081
+    # 阿里云对象存储配置信息
+    aliyun:
+      endpoint: oss-cn-shenzhen.aliyuncs.com
+      accessKeyId: 111111
+      accessKeySecret: xxxxxx
+      bucketName: xxxxxx
+    # 腾讯对象存储配置信息
+    # 请参考 https://cloud.tencent.com/document/product/436/6249
+    tencent:
+      secretId: 111111
+      secretKey: xxxxxx
+      region: xxxxxx
+      bucketName: xxxxxx

+ 26 - 0
deploy/litemall/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/application-wx.yml


+ 19 - 0
deploy/litemall/application.yml

@@ -0,0 +1,19 @@
+spring:
+  profiles:
+    active: db, core, admin, wx
+  message:
+    encoding: UTF-8
+
+server:
+  port: 8080
+
+logging:
+  level:
+    root:  ERROR
+    org.springframework:  ERROR
+    org.mybatis:  ERROR
+    org.linlinjava.litemall.core:  ERROR
+    org.linlinjava.litemall.db:  ERROR
+    org.linlinjava.litemall.admin:  ERROR
+    org.linlinjava.litemall.wx:  ERROR
+    org.linlinjava.litemall:  ERROR

+ 5 - 3
deploy/util/lazy.sh

@@ -3,7 +3,7 @@
 # 本脚本的作用是
 # 1. 项目打包
 # 2. 上传云主机
-# 3. 远程登录云主机并执行deploy脚本
+# 3. 远程登录云主机并执行reset脚本
 
 # 请设置云主机的IP地址和账户
 # 例如 ubuntu@122.152.206.172
@@ -34,10 +34,12 @@ cd $LITEMALL_HOME
 ./deploy/util/package.sh
 
 # 上传云主机
+cd $LITEMALL_HOME
 scp -i $ID_RSA -r  ./deploy $REMOTE:/home/ubuntu/
 
-# 远程登录云主机并执行deploy脚本
+# 远程登录云主机并执行reset脚本
 ssh $REMOTE -i $ID_RSA << eeooff
-sudo ./deploy/bin/deploy.sh
+cd /home/ubuntu
+sudo ./deploy/bin/reset.sh
 exit
 eeooff

+ 10 - 17
deploy/util/package.sh

@@ -2,9 +2,9 @@
 
 # 请注意
 # 本脚本的作用是把本项目编译的结果保存到deploy文件夹中
-# 1. 把项目数据库文件拷贝到litemall-db
-# 2. 编译litemall-admin,然后打包到litemall-admin
-# 3. 编译后台服务模块,然后拷贝到litemall-api
+# 1. 把项目数据库文件拷贝到deploy/db
+# 2. 编译litemall-admin
+# 3. 编译litemall-all模块,然后拷贝到deploy/litemall
 
 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
 cd $DIR/../..
@@ -12,24 +12,17 @@ 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
+cat $LITEMALL_HOME/litemall-db/sql/litemall_schema.sql > $LITEMALL_HOME/deploy/db/litemall.sql
+cat $LITEMALL_HOME/litemall-db/sql/litemall_table.sql >> $LITEMALL_HOME/deploy/db/litemall.sql
+cat $LITEMALL_HOME/litemall-db/sql/litemall_data.sql >> $LITEMALL_HOME/deploy/db/litemall.sql
 
-cd ./litemall-admin
+cd $LITEMALL_HOME/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-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
+cd $LITEMALL_HOME
+mvn clean package
+cp -f $LITEMALL_HOME/litemall-all/target/litemall-all-*-exec.jar $LITEMALL_HOME/deploy/litemall/litemall.jar