部署-宇航人项目
本文的目的是教会你怎么部署宇航人商城这个项目:
一、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.下载宇航人微信支付证书,并放置到项目指定目录下:
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之后,把域名提供给来客推服务商,他们会根据这个域名给你生成这个证书(自己没办法生成,没有这个证书,接口都调用不了)
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.设置相关服务打包的名字以及打包方式:
1.7.2.打包-打成war包(使用的tomcat部署后端项目)
1.8.部署【任务调度中心】服务-laiketui-job
如图:是一个单独的java服务,配置之后,打成jar包部署到服务器即可,之前的laike-task服务需要【任务调度中心】启动之后,再进行部署启动,不然会报错
1.8.1 项目打开之后,只需要配置【xxl-job-admin】服务,如图:
1.8.2.创建数据库【xxl-job】,并导入数据库脚本文件【xxl_job.sql】
1.8.3.修改配置文件【application.properties】中的数据库信息,改成服务器的配置,如图:
1.8.4.打包服务,如图:
1.8.5.把打包好的jar包【xxl-job-admin-2.3.0-SNAPSHOT.jar】在服务器上进行部署,jar包如图:
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】
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.打包:
打包时,可以通过该文件查看用什么命令打包:
打包命令:
npm run build:prod
打包好之后,在项目目录中会有一个【dist】文件夹,把该文件夹直接复制到服务器中进行部署即可!
3.微信小程序前端项目配置:
3.1.1.配置宇航人商城项目二开接口地址(微信小程序需要https的接口):
我后端的二开接口地址:部署到tomcat之后,就是https://shop.yhrhome.com/auctions/.........
接口地址需要在nginx中配置接口转发,把https://shop.yhrhome.com/auctions/转发到http://shop.yhrhome.com/auctions/.........
3.1.2.配置宇航人商城项目接口地址:
/**
* 是否开启在 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:
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包:
3.nginx配置【nginx.conf】,配置接口转发、配置网关、配置ssl证书
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/】
宇航人商城后台管理系统 --点我进入系统
成功如图所示:
1.2.输入用户名【admin】、密码【123654】进行登录(超级管理员)
测试二开功能是否能正常打开:
1.3 任务调度中心测试:
任务调度中心
账号:【admin】密码:【123456】
成功如图:
OK!,后台管理系统部署完毕!
2.测试微信小程序:(等待中~~~~~)
本文来自博客园,作者:青喺半掩眉砂,转载请注明原文链接:https://www.cnblogs.com/xiaoguo-java/p/17210735.html