随着软件国产化越来越普及,客户在实施中选择了宝兰德,这几天终于弄好,发个文章记录一下。
- 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=$7
echo -e "\nParameters checking...\n"
####判断参数个数############
if ! [ $# -eq 7 ];then
echo "please check Parameters!"
exit 1
fi
#####判断BES安装包#######
if [ ! -f "$DIR/$BES_FILE" ];then
echo "file $BES_FILE not exist!"
exit 2;
fi
#####判断用户#########
if ! id -u $BES_USER >/dev/null 2>&1; then
echo "user $BES_USER not exist!"
exit 3
fi
#####判断安装目录是否已存在#######
if [ ! -d "$BES_DIR" ];then
echo "dir $BES_DIR not exit!"
exit 4
fi
#####判断安装目录下是否已存在BES目录#######
BES_HOME=$BES_DIR/BES952
echo $BES_HOME
if [ -d "$BES_HOME" ];then
echo "dir $BES_HOME exist!"
exit 5
fi
#####判断http端口占用##
if netstat -ltn|grep :$HTTP_PORT >/dev/null 2>&1; then
echo "port $HTTP_PORT used!"
exit 6
fi
#####判断console端口占用##
if netstat -ltn|grep :$CONSOLE_PORT >/dev/null 2>&1; then
echo "port $CONSOLE_PORT used!"
exit 7
fi
#####判断jmx端口占用##
if netstat -ltn|grep :$JMX_PORT >/dev/null 2>&1; then
echo "port $JMX_PORT used!"
exit 8
fi
if [ $JMX_PORT -gt 10090 ] || [ $JMX_PORT -lt 10071 ];then
echo "port $JMX_PORT error! in 10071~10090"
exit 9
fi
#####判断jdk路径#########
if ! [ -d $JAVA_HOME ]; then
echo "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/install
tar -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! --confirmpassword
Zabbix123! --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 ""
EOF
cat > 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 ""
EOF
chmod 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}/install
echo -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;done
echo ""
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>
修改完成后,重新部署应用即可,可以通过应用名称,看到应用的访问链接
文章来源:https://www.toymoban.com/news/detail-805758.html
以下就是本次宝兰德变更涉及到的全部内容,如有问题,欢迎提问。文章来源地址https://www.toymoban.com/news/detail-805758.html
到了这里,关于宝兰德BES安装及Springboot项目打包部署及websocket解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!