{{userInfo.nickname}}
用户设置 退出登录

{{wikiTitle}}

JAVA项目打包

Crmeb Java 项目打包可运行jar文件

本地已经运行过的同学直接配置prod环境的yml文件后直接mvn install 打包即可。

下载的源码并导入

解压后的代码包内容

源码包基本内容介绍

解压后导入idea开发工具,初次导入会自动根据pom文件下载对应的jar包。

下载jar,取决于你的网速

导入java项目

正确导入Java项目

配置数据库连接和

打包jar文件

v1.2版本 新增的小程序直播需要单独配置(也就是系统中配置的小程序数据,使用小程序直播功能时必须配置)

打包之前修改环境配置文件,分别在crmeb-admin 和 crmeb-front包下的 yml,每个环境中的端口都不一样,这里默认admin为20000front为20001 上传到服务端口转发会用到,也可以根据自己要求调整,不要不冲突即可。

crmeb-admin Admin服务 打包后产出Crmeb-admin.jar

crmeb-comm 公共服务 会打包到admin和front中

crmeb-front 商城服务 打包后产出Crmeb-front.jar

crmeb-service 公共业务 会打包到admin和front中

crmebiamge 素材包 线上部署时需要上传到服务器,将路径配置到java 配置文件中

打包成功

打包Jar文件成功

打包后在对应目录获取到Crmeb-admin.jar 和 Crmeb-front.jar 并发布到宝塔创建的两个api.xxx的域名下。

上传代码到服务端可以使用自己趁手的工具,ftp或者ssh 这里为了统一,都是用宝塔面板操作。

获取打包后的jar文件

上传打包好的两个jar文件到创建好的站点根目录

上传jar到宝塔对应api站点

如下图,以admin服务为例 上传Crmeb-admin.jar ,启动jar的shell,和初始化素材包 shell文件和素材包都在压缩包中。

上传jar和shell脚本

注意: shell脚本在执行时可能会出现格式不正确的问题,可以在本地修改好在bt面板中创建.sh文件直接粘贴进去就好。

素材说明

⚠️素材说明:上图中crmebimage目录需要在admin 对应环境的 yml中提前配置好,目录层级到crmebimage的第一层目录。

点击start.sh文件修改路径,stop.sh 一般不需要重启直接执行start.sh文件,停止时一般手动kill,如果需要stop.sh脚本同样配置目录即可。

修改启动脚本

同样front也上传jar和脚本到对应目录即可,素材自在admin端配置。

万事俱备,开始启动jar程序。

链接SSH客户端

宝塔中打开终端

执行启动命令

image-20220328113605612

☕️admin.jar 启动成功,这里不再列举front的上传和启动,和admin一样的操作即可,front不用配置素材的差异其他一致。

启动Java程序成功

设置代理

在没有设置代理之前的api站点访问是这样的,如果不是,需要确认域名解析和宝塔中创建站点哪个环节出了问题。

代理之前的api站点

image-20220328115212668

设置Admin服务代理端口

设置adminAPI代理

访问admin swagger文档:访问方式 | http://域名/doc.html

访问admin swagger文档

同样访问front api 需要和admin jar 一样正确部署并且启动后,设置代理端口 默认20001 如果有修改以自己修改的端口为准。

front jar Swagger

以上步骤已经将java全部服务启动成功!

宝塔单机nginx负载均衡

宝塔单机负载均衡集群部署

  1. 添加站点(此处不做详述)

  2. 站点设置—网站目录,关闭防跨转攻击

img

  1. 站点设置—添加反向代理

img

  1. 站点设置—配置文件

    此处因为是本地测试,使用IP+端口,需要在之前的项目同级目录下创建front2目录,再起一个移动端项目,下图的端口就是原front1,与front2的启动端口,启动端口可以在项目中application-*.yml文件中的server:port:端口,这里修改
    img

  2. 配置文件确认(确认upstream 后的区块名称是否一致)

1. /www/server/panel/vhost/nginx/站点域名.conf文件,点击编辑

img

2. /www/server/panel/vhost/nginx/proxy/站点域名文件夹/文件,点击编辑

img

  1. 配置完成,为确保生效可以重启nginx

  2. 解决nginx负载均衡后,font的Swagger文档访问问题

    在/www/server/panel/vhost/nginx/proxy/站点域名文件夹/文件,点击编辑,加入如下代码
    img
    例:

location ~* ^(/v2|/webjars|/swagger-resources|/doc.html) {   proxy_set_header Host $host;   proxy_set_header  X-Real-IP  $remote_addr;   proxy_set_header X-Forwarded-For $remote_addr;   #proxy_set_header Host $host:$server_port;   proxy_set_header X-Forwarded-Proto $scheme;   proxy_set_header X-Forwarded-Port $server_port;   proxy_pass http://000.00.111.22:8081; # 后端服务地址}

附录:

扩展nginx的五种负载算法及扩展

  1. 轮询(默认),每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器死机,故障系统被自动剔除,使用户访问不受影响。
  2. Weight,指定轮询权值,Weight值越大,负载的权重就越大。分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
    例:
upstream my_server {   server 192.168.0.14 weight=10;   server 192.168.0.15 weight=10;}
  1. ip_hash,每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
    例:
upstream my_server {ip_hash;server 192.168.0.14:88;server 192.168.0.15:80;}
  1. fair(第三方)
    比上面两个更加智能的负载均衡算法。根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
    例:
upstream my_server {  server 192.168.0.14;  server 192.168.0.15;}
  1. url_hash(第三方)
    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。
    在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
    例:
upstream my_server {  server 192.168.0.14:80;  server 192.168.0.15:80;  hash $request_uri;  hash_method crc32;}

Tips:

upstream bakend{  #定义负载均衡设备的Ip及设备状态  ip_hash;  server 1192.168.0.14:80 down;  server 192.168.0.15:80 weight=2;  server 127.0.0.1:8081;  server 127.0.0.1:7070 backup;}

👍👍👍👍👍👍👍👍 打包过程中如果出现错误等问题环境论坛提问 Java系统 - CRMEB社区

{{cateWiki.like_num}}人点赞
0人点赞
评论({{cateWiki.comment_num}}) {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}} {{cateWiki.page_view_num}}人看过该文档
评论(0) {{commentWhere.order ? '评论从旧到新':'评论从新到旧'}} 595人看过该文档
评论
{{item.user ? item.user.nickname : ''}} (自评)
{{item.content}}
{{item.create_time}} 删除
{{item.like ? item.like.like_num : 0}} {{replyIndex == index ? '取消回复' : '回复'}}
评论
{{items.user ? items.user.nickname : '暂无昵称'}} (自评)
{{items.content}}
{{items.create_time}} 删除
{{items.like ? items.like.like_num : 0}} {{replyIndexJ == (index+'|'+indexJ) ? '取消回复' : '回复'}}
评论
目录
  • {{item}}