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

  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=$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>

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

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐