随着软件国产化越来越普及,客户在实施中选择了宝兰德,这几天终于弄好,发个文章记录一下。

  1. BES安装JDK使用版本为Kona8.0.1_242

2.bes安装,在实施过程中,将安装步骤整合成shell脚本了,方便新服务器一键安装,脚本包含内容:一键安装参数检查、解压安装包、导入证书、指定密码、实例配置、修改JVM、创建启停脚本、权限控制、安装补丁等等(具体脚本中都有备注,可根据实际情况修改里面的参数)

#!/bin/bash
#
#**********************************************************************************************
#Author:        TIL
#Date:          2022-06-13
#FileName:     BES_standalone_install.sh
#脚本执行格式: sh BES_standalone_install.sh 安装包名 /安装路径 用户名 HTTP端口 CONSOLE端口 JMX端口  JDK路径
#示例:          sh BES_standalone_install.sh BOSH-BES952-standalone-install.tar uuop /uuop 28080 19200 10081 /usr/java/jdk1.8.0_251
#**********************************************************************************************
DIR=`pwd`
BES_FILE=$1             #BOSH-BES952-standalone-install.tar
BES_USER=$2
BES_DIR=$3
HTTP_PORT=$4            #默认28080
CONSOLE_PORT=$5         #默认19200
JMX_PORT=$6             #默认10081
JAVA_HOME=$7echo -e "\nParameters checking...\n"
####判断参数个数############
if ! [ $# -eq 7 ];thenecho "please check Parameters!"exit 1
fi#####判断BES安装包#######
if [ ! -f "$DIR/$BES_FILE" ];thenecho "file $BES_FILE not exist!"exit 2;
fi#####判断用户#########
if ! id -u $BES_USER >/dev/null 2>&1; thenecho "user $BES_USER not exist!"exit 3
fi#####判断安装目录是否已存在#######
if [ ! -d "$BES_DIR" ];thenecho "dir $BES_DIR not exit!"exit 4
fi
#####判断安装目录下是否已存在BES目录#######
BES_HOME=$BES_DIR/BES952
echo $BES_HOME
if  [ -d "$BES_HOME" ];thenecho "dir $BES_HOME exist!"exit 5
fi#####判断http端口占用##
if  netstat -ltn|grep :$HTTP_PORT >/dev/null 2>&1; thenecho "port $HTTP_PORT used!"exit 6
fi#####判断console端口占用##
if  netstat -ltn|grep :$CONSOLE_PORT >/dev/null 2>&1; thenecho "port $CONSOLE_PORT used!"exit 7
fi#####判断jmx端口占用##
if  netstat -ltn|grep :$JMX_PORT >/dev/null 2>&1; thenecho "port $JMX_PORT used!"exit 8
fi
if [ $JMX_PORT -gt 10090 ] || [ $JMX_PORT -lt 10071 ];thenecho "port $JMX_PORT error! in 10071~10090"exit 9
fi
#####判断jdk路径#########
if ! [ -d $JAVA_HOME ]; thenecho "jdk $JAVA_HOME not exist!"exit 10
fi
echo -e "\nParameters normal!\n"
sleep 2#解压安装包
echo "=====================decompression======================="
tar -xvf ${BES_FILE}  -C $BES_DIR
cd $BES_DIR/BES952/installtar -zxvf BES-9.5.2.4703.tar.gz  -C ${BES_HOME}#JAVA
sed -i "8a\ "   ${BES_HOME}/bin/setenv.conf
sed -i "9a\export  JAVA_HOME=$JAVA_HOME"   ${BES_HOME}/bin/setenv.conf
sed -i "10a\export  PATH=\$PATH:\$JAVA_HOME/bin"  ${BES_HOME}/bin/setenv.conf
sed -i "11a\ "  ${BES_HOME}/bin/setenv.conf#导入证书
#echo "================import license======================"
#cd ${BES_HOME}/bin
#./lmadm import-lic  --sourcepath=${BES_HOME}/license/bes.lic.txt
#./lmadm view-lic
#echo ""#修改passport
echo "==================change passport========================"
cd ${BES_HOME}/bin
./iastool --user admin --password B#2008_2108#es --passport B#2008_2108#es change --passport --oldpassword  B#2008_2108#es --newpassword B@20211225es  --confirmnewpasswo
rd  B@20211225es
echo ""#初始化应用服务器实例配置
echo "===================  initstore  ========================="
./config --user=admin  --password=B#2008_2108#es --adminuser=admin  --adminpassword=Hello123!  --adminhost=0.0.0.0 --adminport=${CONSOLE_PORT:=19200} --userhost=0.0.0.0 --userport=${HTTP_PORT:=28080}
echo ""#启动BES
echo "===================  start bes  ========================="
./iastool --user=admin --passwordfile ${BES_HOME}/conf/.password --port ${CONSOLE_PORT:=19200} start --server
echo ""#创建server的zabbix用户
echo "====================add user zabbix======================"
./iastool --passwordfile ${BES_HOME}/conf/.password  --port ${CONSOLE_PORT:=19200} create --file-user --realmname admin-realm --userpassword Zabbix123! --confirmpasswordZabbix123! --groups besadmin zabbix
cd  ${BES_HOME}/conf/security
sed -i '/zabbix/s/besadmin//' admin-keyfile
echo ""#修改server的JVM大小
echo "===================change server jvm====================="
cd ${BES_HOME}/bin
./iastool  --user=admin --passwordfile ${BES_HOME}/conf/.password   --port ${CONSOLE_PORT:=19200} update --jvm-options --xmx 5120 --xms 2048 --metaspacesize 5120 --maxmetas
pacesize 2048
echo ""#修改server的线程池
echo "===============change server threadpool=================="
./iastool --user=admin --passwordfile ${BES_HOME}/conf/.password   --port ${CONSOLE_PORT:=19200}  update  --thread-pool   --maxthreads 200 --minsparethreads 10  http-thr
ead-pool
echo ""#开启server的access log
echo "================open server accesslog===================="
./iastool --user=admin --passwordfile ${BES_HOME}/conf/.password   --port ${CONSOLE_PORT:=19200}  update --http-service  --globalaccesslogenabled true
echo ""#修改jmx端口
echo "==================change jmx port ======================="
./iastool --user=admin --passwordfile ${BES_HOME}/conf/.password  --port ${CONSOLE_PORT:=19200} update --jmx-connector --listenerport ${JMX_PORT:=10081}
echo ""#创建启停脚本
echo "==============create start/stop scripts=================="
cd ${BES_HOME}
cat > stopbes.sh <<EOF
echo "================shutdown instance======================"
cd $BES_HOME/bin
./iastool --user=admin --passwordfile $BES_HOME/conf/.password --port ${CONSOLE_PORT:=19200} stop --server
echo ""
EOFcat > startbes.sh <<EOF
echo "==================start instance======================="
cd $BES_HOME/bin
./iastool --user=admin --passwordfile $BES_HOME/conf/.password --port ${CONSOLE_PORT:=19200} start --server
echo ""
EOFchmod 750 stopbes.sh
chmod 750 startbes.sh#复制数据库驱动包
echo "================copy jdbc jar======================="
cd ${BES_HOME}/install/jdbcdriver
cp ojdbc6.jar mysql-connector-java-5.1.29-bin.jar ${BES_HOME}/lib
echo ""#安装补丁
echo "================install patch========================"
cd ${BES_HOME}/bin
./patch -path ${BES_HOME}/install/instancepatch/
./patch -list
echo ""#修改控制台超时时间
echo "==============console timeout======================="
cd ${BES_HOME}/lib/system/apps/console/WEB-INF
sed -i 's/30/15/g' web.xml
echo ""#重启
echo "================restart all========================="
cd ${BES_HOME}
sh stopbes.sh
sh startbes.sh
echo ""#cd ${BES_HOME}/../
#mv BOSH-BES952-standalone-install.tar  bes952_standalone_install_v1.0.sh ${BES_HOME}/installecho -e "\nprocess status:\n"
ps aux|egrep -v "grep|$0"|grep BES952
pid=`ps aux|egrep -v "grep|$0"|grep BES952|awk '{print $2}'`
sleep 1
echo -e "\nport listen:\n"
for a in $pid;do netstat -nlpt|grep $a;sleep 1;doneecho ""
echo ""
echo "================install bes end======================"
echo "0"

安装成功后,就可以访问到应用的控制台了,默认地址为:http://ip:19200/console,登录用户名密码默认为admin/Hello123!(如果自己改过默认密码,则按自己的来。)

进入控制台后,就可以通过应用管理-常用应用来部署项目包了。根据提示一步步往下点击就可以。

整合方案: 

第一种: 之前在网上找资料看到说springboot部署宝兰德有jar包的改造,这里就想说明下,如果最终应用要部署在bes单实例或者集群版本的话,即通过控制台部署应用,就不能集成宝兰德的内嵌包,否则会造成jar包冲突。即com.bes.enterprise.logging.internal.Log: Provider com.bes.enterprise.jul.formatter.log.BESASLog not a subtype 这个问题也坑了我好久。

bes和tomcat中间件针对springboot的部署方式一致的,因此这种情况,不需要做单独的改造

第二种: 只有单集成宝兰德时,才需要在项目中添加相应的jar包,如下所示(程序包由宝兰德提供,不要自己傻傻的从宝兰德安装包中找,因为我这么干过,不想大家再走弯路)

包名 说明
bes-lite-spring-boot-2.x-starter-9.5.2 核心包,必须
bes-actuator-spring-boot-2.x-starter-9.5.2.jar 监控包,可选
bes-websocket 支持 websocket
bes-gmssl 国密安全包,可选
bes-jasper 支持JSP,可选
bes-jdbcra 支持JDBC ,可选

项目pom中去掉 spring-boot-starter-web 的 tomcat依赖,将上面用到的包放到自己的私服后,在pom中添加如下内容:

<dependency><groupId>com.bes.appserver</groupId><artifactId>bes-lite-spring-boot-2.x-starter</artifactId><version>9.5.2</version>
</dependency><dependency><groupId>com.bes.appserver</groupId><artifactId>bes-websocket</artifactId><version>9.5.2</version>
</dependency>

应用启动时,打印出以下信息,就说明改造成功了:

websocket问题解决:

因为我们项目中用到了websocket,因此在控制台部署时候,遇到了启动失败的问题Caused by: java.lang.IllegalStateException: No suitable default RequestUpgradeStrategy found,其实是因为spring-websocket对于第三方的接入不太友好,限制了只能使用tomcat,这种情况的话,如果是通过xml配置的话,可以通过配置handshakeHandler解决(具体参考jetty的接入方案),但是如果是通了Bean配置的,那就只能通过重写spring-websocket的org.springframework.web.socket.server.support.DefaultHandshakeHandler类来解决问题

通过配置WEB-INF/bes-web.xml来确保bes使用上面重写的这个jar包

bes-web.xml内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE bes-web-app PUBLIC "-//BES Software Corporation//DTD BES Application Server %version Servlet 2.5//EN" "http://www.bessystem.com/appserver/dtds/bes-web-app_2_5-0.dtd">
<bes-web-app><resources><pre-resources base="/home/BES/lib/spring-websocket-bes-support-9.5.2.jar" class-name="com.bes.enterprise.webtier.webresources.JarResourceSet" web-app-mount="/WEB-INF/classes" /></resources>
</bes-web-app>

修改完成后,重新部署应用即可,可以通过应用名称,看到应用的访问链接

以下就是本次宝兰德变更涉及到的全部内容,如有问题,欢迎提问。

宝兰德BES安装及Springboot项目打包部署及websocket解决方案相关推荐

  1. springboot项目打包部署服务器

    springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成jar进行部署.不推荐用war,因为spring ...

  2. SpringBoot项目打包部署到其他电脑或者服务器上运行

    一.准备工作 1.根据部署要连接的数据库,修改项目中Mysql连接的ip和端口号: 2.根据服务器已开放的端口,修改项目中application.yml文件中server.port: 3.在Pom文件 ...

  3. springboot项目打包部署到阿里云

    1.打包前准备 1.1. 打包前确认工程中指定的端口在服务器在未被占用. application.properties文件 server.port=8090 并确保改端口已经添加到你的阿里云安全组中, ...

  4. SpringBoot 项目打包部署

    <!-- 这个插件,可以将应用打包成一个可执行的jar包 --><build><finalName>bootfirst</finalName><p ...

  5. Spring Boot使用宝兰德BES进行改造和部署

    Spring Boot 使用外置中间件宝兰德BES 进行改造和部署 前言 本记录供日后观看也是为以后其他需要国产化改造的朋友提供指引帮助,因为内网等原因本文主要以文字内容进行记载,确保按照本流程下初次 ...

  6. SpringBoot项目打包发布

    SpringBoot项目打包发布 SpringBoot打包发布jar jar类型项目可以打成jar包 打包流程 导入SpringBoot打包插件 将项目导出成jar包并更新pom文件 使用maven ...

  7. springboot项目打包到服务器运行以及出错解决办法

    springboot项目打包到服务器运行以及出错解决办法 本次项目中需要的MySQL8数据库,Redis都是已经安装在了远程服务器上,因此我们可以直接将springboot项目打包好jar后发送到服务 ...

  8. springboot项目打包为docker镜像并上传nexus私服

    springboot项目docker打包镜像上传Nexus私服 1.springboot项目打包为docker镜像并上传nexus私服 1.0. 必要条件 1.1.开启docker远程访问 1.2.配 ...

  9. springboot项目打包运行

    在springboot项目打包成jar包时,在cmd中使用java -jar **.jar时,浏览器无法访问. 解决方法:把项目改成war包项目,在pom文件中更改,并打成war包. 使用maven命 ...

最新文章

  1. 内蒙十二地市的称谓对应关系
  2. 11467人力资源统计学在计算机,2013年至2017年自考11467《人力资源统计学》真题及答案.pdf...
  3. 怎么用python爬取整个网站_5分钟学会Python爬取整个网站
  4. Oracle全文检索示例
  5. 微信小程序自定义select下拉选项框
  6. 随笔-546 评论-829 文章-21 2015年第15本:天才在左,疯子在右
  7. 腾讯云10亿扶持小程序:3元套餐可能免费
  8. 常用的位操作:置位、清零与测试
  9. Springboot 2.x版本 RedisCacheManager 类的配置,【与1.x 略有不同】
  10. 男人“杀”死女人的30句话
  11. tensorflow版本及其对应环境
  12. Java类的执行顺序
  13. (06)Verilog HDL组合逻辑:always
  14. 1算法:控制字幕左右移动
  15. android 安装p12证书,如何在Android中使用p12证书(客户端证书)
  16. python输出姓名_如何用Python生成若干个随机姓名?男女取名有方法,不能千篇一律...
  17. java连接mysql lookup_Java数据库连接池lookup用法
  18. java.sql. SQLException: No suitable driver found for jdbc :mysql://localhost:3306/test
  19. C++11的更新内容--auto--右值引用和移动构造--1114
  20. 改变chart坐标轴的起始值

热门文章

  1. 安卓listview下拉刷新_iPhone上被吹爆的良心App,安卓手机终于能用上了
  2. P4294 [WC2008]游览计划
  3. 关于企业价值观的一点点感悟
  4. buu(前三页第二弹) RSA习题与相关知识总结
  5. 企业微信被别人登录了怎么办?有风险吗?
  6. 阿里云RDS数据库备份恢复【取证】教程
  7. 实验室安全与危化品信息管理平台建设
  8. python学习-day18、文件处理、
  9. nats streaming订阅
  10. 计算机硬盘空间不足解决办法,3种方法解决Windows10硬盘空间不够的问题