部署-宇航人项目

本文的目的是教会你怎么部署宇航人商城这个项目:
一、linux服务器安装相关环境
二、项目配置并打包
三、配置环境
四、测试运行

一、linux服务器安装相关环境

1.mysql-5.7---
2.jdk-1.8---
3.redis-6.2
4.zookeeper-3.5-3.7
5.tomcat-9.0
6.nginx-版本随意

linux系统,需要安装docker等命令,具体安装请查看我的这篇博客:https://www.cnblogs.com/xiaoguo-java/p/16204117.html

1.docker安装mysql5.7

1.1、安装mysql5.7,请查看我的这篇博客:

https://www.cnblogs.com/xiaoguo-java/p/16204117.html

1.2、安装完毕之后,需要配置mysql5.7兼容5.6,请查看我的这篇博客:

https://www.cnblogs.com/xiaoguo-java/p/16538981.html

2.docker安装jdk1.8

2.1、安装jdk1.8,请查看我的这篇博客:

https://www.cnblogs.com/xiaoguo-java/p/16204117.html

3.docker安装redis

3.1、安装redis,请查看我的这篇博客:

https://www.cnblogs.com/xiaoguo-java/p/17187233.html

4.docker安装zookeeper

4.1、安装zookeeper,请查看我的这篇博客:

https://www.cnblogs.com/xiaoguo-java/p/17210772.html

5.linux安装tomcat

5.1、linux安装tomcat,请查看我的这篇博客:

https://www.cnblogs.com/xiaoguo-java/p/17210895.html

6.linux安装nginx

6.1、linux安装nginx,请查看我的这篇博客:

https://www.cnblogs.com/xiaoguo-java/p/17211137.html

二、项目配置并打包

1.后端微服务项目配置

1.1.以下列表,是服务在本地idea运行时的相关端口配置

打包时:dubbo端口需要全部开启、服务端口配置整体配置成8081(和tomcat配置成一致:8081),到时候这些服务打成war包会在tomcat跑,服务自己本身的服务端口就失效了

服务名称英文 服务中文名称 dubbo端口 服务端口
astronaut-auction-service 宇航人二开服务 22001 8090
laike-gateway 网关服务 20888 18001
laike-app 微信小程序服务 20991 18004
laike-admin-store 后台管理系统服务 21990 18003
laike-file 文件服务 21892 18005
laike-user 用户服务 21889 18002
laike-order 订单服务 21895 18008
laike-products 商品服务 21897 18010
laike-payment 支付服务 21896 18009
laike-mch 商户服务 20992 18006
laike-task 定时任务服务(需要搭配任务调度中心服务使用) 21899 18011
freight 运费服务 21890 18014
invoice 发票服务 21891 18015
integral 积分商城服务 21904 18182
presell 预售服务-待定
seckill 秒杀服务-待定
distribute 分销服务-用不着(二开做了分销)

1.2. astronaut-auction-service服务配置文件修改:

1.2.1.application.yml

server:
  port: 8090 #打war包之后,部署到tomcat时,该服务端口就会失效,所以这里不用改
  ssl:
    enabled: false
  servlet:
    context-path: /auctions
spring:
  # 环境 dev-开发环境 | prod-生产环境
  profiles:
    active: dev #直接使用dev就行 
  application:
    name: AstronautAuctionService
  servlet:
    multipart: # 配置上传文件的大小
      maxFileSize: 50MB #设置单个文件大小
      maxRequestSize: 1000MB # 设置单次请求文件的总大小
logging:
  level:
    com.astronaut: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
#mybatis-plus
mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.astronaut.auction.modules.*.entity
  global-config:
    #数据库相关配置
    db-config:
      #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: ASSIGN_ID
    banner: false
#swagger 配置
swagger:
  title: 宇航人电商-新活动
  desc: 宇航人电商-新活动模块API
  version: 0.0.1.SNAPSHOT

1.2.2.application-dev.yml

spring:
  datasource: #修改成服务器ip+端口
    url: jdbc:mysql://1.117.26.212:3306/lkt?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
    username: root #修改成服务器mysql用户名
    password: yhradmin123 #修改成服务器mysql密码
    driver-class-name: com.mysql.cj.jdbc.Driver
node:
  ip: 127.0.0.1
dubbo:
  application:
    name: astronaut-auction-service
  registry:
    id: zookeeper-registryapplication.yml
    protocol: zookeeper
    address: 1.117.26.212:2181 #修改成服务器ip+zookeeper端口
  protocol:
    name: dubbo
    port: 22001
    accesslog: dubbo-access.log
  provider:
    retries: 0 # 远程服务调用重试次数, 不包括第一次调用, 不需要重试请设为0
    timeout: 600000 # 远程服务调用超时时间(毫秒)
    delay: -1 # 延迟注册服务时间(毫秒)- , 设为-1时, 表示延迟到Spring容器初始化完成时暴露服务
    filter: -exception,dubboExceptionFilter # 服务提供方远程调用过程拦截器名称, 多个名称用逗号分隔
  monitor:
    protocol: registry

##微信登录相关配置----这里配置宇航人相关微信小程序appid、微信小程序API私钥、微信商户id、商户平台密钥、商户API数字证书路径(微信支付证书)
weiXin:
  login:
    info:
      #微信小程序APPID
      appId: wx2dc34d23590b2e75
      #微信小程序API私钥
      appSecret: 3389598362b0ca69bf2279544a491ae3
  #微信支付相关配置
  pay:
    info:
      #微信小程序appId
      appId: wx2dc34d23590b2e75
      #微信商户id
      mchId: 1617144814
      #商户平台密钥
      key: Llmhjz100320220401ncc14785236996
      #商户API数字证书路径(windows下的路径)
      certPath: E:/cert/prod/apiclient_cert.p12
      #微信支付网关
      gateway: https://api.weixin.qq.com/sns/jscode2session
      #支付成功回调地址(小程序的话,随便配置一个即可,因为不会生效,微信会自己解决这个回调的问题)
      notifyPath: http://124.221.221.172:8091/weiXin-pay/microAppPayOrder

# 阿里云oss配置 -这里配置宇航人的阿里云oss服务
ossMessage:
  endpoint: oss-cn-huhehaote.aliyuncs.com #站点
  accessKeyId: LTAI5tLkvQp621oWPHMWyUYZ # 密钥id
  accessKeySecret: zK0WBmNQ3BktKBaS4tvKSxZNvLOY6a #密钥
  bucketName: yuhangren # 仓库名

#定时任务-自动评价、自动确认收货的天数
timeTask:
  day: 15

1.2.3.下载宇航人微信支付证书,并放置到项目指定目录下:

image

1.3 laike-admin-store服务配置文件修改:

1.3.1.application.yml

node:
  ip: 127.0.0.1
  # 微信p12证书保存位置:不同的操作系统需要修改保存的位置 需要读写权限
#  wx-certp12-path: D:/server
  wx-certp12-path: /usr/local/tomcat/weixinpay_cert
dubbo:
  application:
    name: laike-admin
  registry:
    id: zookeeper-registryapplication.yml
    protocol: zookeeper
    address: 1.117.26.212:2181
  protocol:
    name: dubbo
    port: 21990
#    port: 20890
    accesslog: dubbo-access.log
  provider:
    retries: 0 # 远程服务调用重试次数, 不包括第一次调用, 不需要重试请设为0
    timeout: 600000 # 远程服务调用超时时间(毫秒)
    delay: -1 # 延迟注册服务时间(毫秒)- , 设为-1时, 表示延迟到Spring容器初始化完成时暴露服务
    filter: -exception,dubboExceptionFilter # 服务提供方远程调用过程拦截器名称, 多个名称用逗号分隔
  monitor:
    protocol: registry

spring:
  profiles:
    active: dev
  jmx:
    enabled: false
logging:
  config: classpath:logback-spring.xml
  level:
    com:
      laike: debug
#swagger 配置
swagger:
  title: 宇航人电商-后台
  desc: 宇航人电商后台API
  version: 0.0.1.SNAPSHOT
  termsOfServiceUrl: javascript:void(0)
  license: Apache 2.0
  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.html
  basePackage: com.laiketui.store
  groupName: 后台
  contactName: admin
  contactUrl: http://www.laiketui.com/
  contactEmail:

1.4 laike-core 服务配置文件修改(该服务不需要打包,但是需要配置相关内容,然后提供给其他需要打包的服务使用):

1.4.1.application-core-dev.yml

spring:
  jmx:
    enabled: false
  http:
    encoding:
      force: true
      charset: UTF-8
      enabled: true
  servlet:
#    multipart:
#      max-file-size: 10MB
#      max-request-size: 30MB
#      file-size-threshold: 1
  redis:
    host: ${REDIS_HOST:1.117.26.212}
    port: ${REDIS_PORT:6379}
    password: ${REDIS_PWD:123456}
    lettuce:
      pool:
        # 连接池中的最大空闲连接 默认8
        max-idle: 100
        # 连接池中的最小空闲连接 默认0
        min-idle: 0
        # 连接池最大连接数 默认8 ,负数表示没有限制
        max-active: 20
        # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认-1
        max-wait: -1
    timeout: 30000
    database: ${REDIS_DB:0}
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${DB_HOST:1.117.26.212}:${DB_PORT:3306}/${DB_NAME:lkt}?useUnicode=true&autoReconnect=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false
    username: ${DB_USER:root}
    password: ${DB_PWD:yhradmin123}
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 1
    minIdle: 1
    maxIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    filters: stat,wall
    maxPoolPreparedStatementPerConnectionSize: 20
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    druid:
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        reset-enable: true
        login-username: admin
        login-password: admin
        allow: 127.0.0.1

push:
  #是否开启 true开启 false 关闭 test
  status: true
  appid: nJaIsWP1Zt5g5XCapMDgs5
  appkey: xgfKQIWvMo7Q0FqrKVMvr3
  mastersecret: QSqJyNRI596TaL0AkbxIx1
  host: http://sdk.open.api.igexin.com/apiex.htm
  #收到消息是否立即启动应用:1为立即启动,2则广播等待客户端自启动
  transmissiontype: 1

1.4.2.配置来客推服务商提供的项目授权证书(laike_license):

该证书是你需要把项目部署到服务器的时候,使用到的文件,通过域名绑定服务器ip之后,把域名提供给来客推服务商,他们会根据这个域名给你生成这个证书(自己没办法生成,没有这个证书,接口都调用不了)

image

1.5.剩下需要打包的服务,和上面的laike-admin-store一致,

1.6.在本地maven仓库中添加项目运行时需要的依赖(jar包):

1.6.1.依赖如下:

****:
****:

jar包 链接 密码
laike-root-0.0.1-SNAPSHOT.jar https://pan.baidu.com/s/1LN3BRgmz2jHKYbbti2I1kw p0i9
xxl-job-core-2.3.0-SNAPSHOT.jar https://pan.baidu.com/s/1Ol1U4-Py3Jhp8U4P3j0wOQ 07n4

1.6.2.安装laike-root.jar ,xxl-job-core. jar包 :

jar包位置替换成自己的

# -Dfile root的实际文件位置
mvn install:install-file -Dfile=/path/laike-root-0.0.1-SNAPSHOT.jar -DgroupId=com.laiketui -DartifactId=laike-root -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar
### -Dfile xx-xjob的实际文件位置
mvn install:install-file -Dfile=C:\xxl-job-core-2.3.0-SNAPSHOT.jar -DgroupId=com.xuxueli -DartifactId=xxl-job-core -Dversion=2.3.0-SNAPSHOT -Dpackaging=jar

1.7.使用idea进行整体打包操作

1.7.1.设置相关服务打包的名字以及打包方式:

image

1.7.2.打包-打成war包(使用的tomcat部署后端项目)

image

1.8.部署【任务调度中心】服务-laiketui-job

如图:是一个单独的java服务,配置之后,打成jar包部署到服务器即可,之前的laike-task服务需要【任务调度中心】启动之后,再进行部署启动,不然会报错

image

1.8.1 项目打开之后,只需要配置【xxl-job-admin】服务,如图:

image

1.8.2.创建数据库【xxl-job】,并导入数据库脚本文件【xxl_job.sql】

1.8.3.修改配置文件【application.properties】中的数据库信息,改成服务器的配置,如图:

image

1.8.4.打包服务,如图:

image

1.8.5.把打包好的jar包【xxl-job-admin-2.3.0-SNAPSHOT.jar】在服务器上进行部署,jar包如图:

image

1.8.6.服务器启动jar包命令:

【启动jar包服务】
nohup java -jar /usr/local/distFiles/xxl-job/xxl-job-admin-2.3.0-SNAPSHOT.jar  >log.out &
【查看jar包进程】
ps aux|grep xxx.jar
【停止jar进程】
kill -9 进程id 

1.8.7.启动成功后如图:

打开链接:http://1.117.26.212:3366/task/

账户【admin】 密码【123456】

image

2.前端项目配置

2.1.打开前端项目:LaikeJavaViews

2.1.1.配置vue.config.js文件(部署时不需要修改这里,这里只是记录一下):

找到以下代码并配置接口地址:(这里其实是在本地运行时进行设置的,打包dist后使用nginx进行部署时,只会用到这里的跨域名称,根据【/api】、【/yuhang】去找到实际的接口请求地址,nginx中配置接口地址请看【linux安装nginx】这篇博客),这里记录一下代码本地运行时需要设置的地方(部署的时候不需要动这里,谨记!!!)

proxy: {
      "/api": { //这里是公共部分,在调用接口时后面接不相同的部分,/api就相当于http://182.92.196.41:4999/api这一段
        // target: `http://192.168.31.125:18001`,后端本地启动后,使用该地址访问接口
        target:process.env.VUE_APP_BASE_API,
        changeOrigin: true, // 必须加上这个才能跨域请求
        ws: true,
        pathRewrite: { // 重命名
          '^/api': ''
        }
      },
      "/yuhang":{
        // target: 'http://192.168.31.125:8001/',
        target: 'https://shop.yhrhome.com:8081/',
        changeOrigin: true, // 必须加上这个才能跨域请求
        ws: true,
        pathRewrite: { // 重命名
          '^/yuhang': '/'
        }
      }
    },

2.1.2.配置.env.development文件(部署时不需要修改这里,这里只是记录一下):

# just a flag
ENV = 'development'
# base api
VUE_APP_BASE_API = 'http://192.168.31.125:8082/gw'
#VUE_APP_BASE_API = 'http://192.168.31.125:18001/gw'#本地运行时,使用该地址

2.1.3.打包:

打包时,可以通过该文件查看用什么命令打包:

image

打包命令:
npm run build:prod

打包好之后,在项目目录中会有一个【dist】文件夹,把该文件夹直接复制到服务器中进行部署即可!

image

3.微信小程序前端项目配置:

3.1.1.配置宇航人商城项目二开接口地址(微信小程序需要https的接口):

我后端的二开接口地址:部署到tomcat之后,就是https://shop.yhrhome.com/auctions/.........

接口地址需要在nginx中配置接口转发,把https://shop.yhrhome.com/auctions/转发到http://shop.yhrhome.com/auctions/.........

image

3.1.2.配置宇航人商城项目接口地址:

image

/**
 * 是否开启在 APP 分享小程序
 */
const IS_SHARE_WECHAT_MINI_PROGRAM = true;

/**
 * 小程序 原始ID
 */
const WECHAT_MINI_PROGRAM_ID = 'gh_b47c981e7394';


/**
 * 店铺ID
 */
const LKT_STORE_ID = 1

/**
 * 根路径
 */
 const LKT_ROOT_PATH='https://shop.yhrhome.com'
const LKT_ROOT_URL = LKT_ROOT_PATH+'/gw'
// const LKT_ROOT_URL = 'https://java.houjiemeishi.com'
//http://192.168.31.125:18001
/**
 // * 版本号
 */

const VERSION = ''
// const VERSION = 'gw'


/**
 * 带版本号的路径
 */

const LKT_ROOT_VERSION_URL = 'https://shop.yhrhome.com' + '/app/'
// const LKT_ROOT_VERSION_URL = LKT_ROOT_URL  + '/pic/'
//http://192.168.31.125:18004

/**
 *    来客电商路径
 */
const LKT_API_URL = LKT_ROOT_URL + '/' + VERSION + '?store_id=' + LKT_STORE_ID + '&'

/**
 * 来客电商H5默认路径s
 */
	
const LKT_H5_DEFURL = "https://shop.yhrhome.com" + '/V3/H5/#/'
// const LKT_H5_DEFURL = 'https://java.houjiemeishi.com/#/'
//192.168.31.125:18001

3.1.3.使用HbuilderX打开项目后,配置【manifest.json】文件,设置微信小程序AAppID:

image

3.1.4.上传微信小程序代码到微信开发平台(等待中~~~~~~~)

三、配置环境

主要是linux系统开放相关服务端口、配置tomcat、nginx、等配置文件

1.在前面的【一、linux服务器安装相关环境】中,都有相关的端口使用说明以及配置,配置的时候和以下端口一致就行:这里总结下所有用到的端口:

端口使用:
tomcat:8081、8443
mysql:3306
redis:6379
zookeeper:2181,2888、3888、8080
nginx:8081、443
【部署的时候以下服务的服务端口都设置为8081,和tomcat对外端口一致】
astronaut-auction-service:22001、8001(dubbo端口、服务端口)---.
laike-gateway:20888、18001---.
laike-app:20991、18004---.
laike-admin-store:21990、18003----.
laike-file:21892、18005---.
laike-user:21889、18002---.
laike-order:21895、18008---.
laike-products:21897、18010---.
laike-payment:21896、18009---.
laike-mch:20992、18006---.
laike-freight:21890、18011---.
laike-invoice:21891、18014---.
laike-task:21899、18012---.

2.tomcat部署war包:

image

3.nginx配置【nginx.conf】,配置接口转发、配置网关、配置ssl证书

image


user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       443 ssl;
        server_name  shop.yhrhome.com;
        ssl_certificate      /usr/local/nginx/cert/shop.yhrhome.com_bundle.crt;
        ssl_certificate_key  /usr/local/nginx/cert/shop.yhrhome.com.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
		#请按照以下协议配置
		ssl_protocols TLSv1.2 TLSv1.3;
		#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers  on;
		
       location / {
            root   /usr/local/distFiles/dist;
            index  index.html index.htm;
        }
		#网关映射 不要用127.0.0.1
		
		location /gw {
		  # 网关实际访问地址
		  proxy_pass http://shop.yhrhome.com:8081/gateway/gw;
		  proxy_set_header host $host;
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		location /yuhang/ {
		  # 网关实际访问地址(二开服务地址)
		  proxy_pass http://shop.yhrhome.com:8081/;
		  proxy_set_header host $host;
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		#图片映射
		location /pic {
		  # 移动端图片都放在laike-app模块里面
		  proxy_pass http://shop.yhrhome.com:8081/app;
		  proxy_set_header host $host;
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		#图片分享
		location /app {
			proxy_pass http://shop.yhrhome.com:8081/app;
			proxy_set_header host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		#微信回调v2
		location /wx_notify {
		  proxy_pass http://shop.yhrhome.com:8081/payment/v2/weChatNotify;
		  proxy_set_header host $host;
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		#转发二开接口
		location /auctions {
			proxy_pass http://shop.yhrhome.com:8081/auctions;
			proxy_set_header host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
    }
}

四、测试运行

1.所有服务全部配置完毕后,就可以进行测试了

1.1.后台管理系统:输入【https://shop.yhrhome.com/】

宇航人商城后台管理系统 --点我进入系统

成功如图所示:

image

1.2.输入用户名【admin】、密码【123654】进行登录(超级管理员)

image
image

测试二开功能是否能正常打开:

image

1.3 任务调度中心测试:

任务调度中心

账号:【admin】密码:【123456】

成功如图:

image

OK!,后台管理系统部署完毕!

2.测试微信小程序:(等待中~~~~~)

posted @ 2023-03-13 11:23  青喺半掩眉砂  阅读(26)  评论(0编辑  收藏  举报