TongWeb7.0.4.9M11一键安装脚本(by sy)

前言

自TongWeb7.0.4.9_M11版本开始,默认仅本机可访问TongWeb控制台。只有修改控制台所有用户默认密码后,才可开启远程访问,不然访问控制台,就会出现下面的提示:

本脚本参考TongWeb7.0默认仅本机可访问TongWeb控制台除了安装TongWeb外,也会在安装过程中设置所有用户的密码。

脚本说明

脚本将 TongWeb 的安装与首次初始化串成以下流程:

  1. 检查 TongWeb 安装包和 license.dat 授权文件是否存在;
  2. 创建安装目录 /opt/TongWeb7.0;目录已存在时停止执行,避免覆盖已有安装;
  3. 提示是否注册 systemd 开机自启服务:输入 1 注册,输入 0 不注册;
  4. 解压 TongWeb 安装包,并将授权文件复制到安装目录;
  5. 修改 bin/external.vmoptions
    • 2048m 改为 4096m
    • WebModuleOnly=false 改为 WebModuleOnly=true
    • 增加 -XX:MetaspaceSize=1024m-XX:MaxMetaspaceSize=1024m
    • 删除 -XX:MaxPermSize=512m
  6. 修改 conf/tongweb.xml:在 server 虚拟主机中开启静态资源缓存,并设置缓存上限 cacheMaxSize=1024000
  7. 当使用 root 用户执行且当前文件句柄数为 1024 时,将系统 nofile 限制调整为 65535;
  8. 修改 CommandStool 的 cli 用户密码,生成认证文件,并配置 console 的远程访问和四类管理账号密码;
  9. heimdall=1 时,配置 heimdall 的远程访问和管理账号密码;
  10. 启动 TongWeb,显示授权到期时间,检查防火墙状态和 TongWeb 进程,最后输出控制台访问地址。

使用前准备

  1. 准备安装文件

将以下三个文件放在同一个目录。该目录中不要放多个 TongWeb 安装包,以免脚本匹配到错误文件。

text 复制代码
installTongWeb7.0_M11.sh
TongWeb7.0.4.9_M11_Enterprise_Linux.tar.gz
license.dat

默认安装目录为 /opt/TongWeb7.0。如需更换安装位置,修改脚本中的 INSTALL_DIR

2. 设置 CommandStool 用户密码

CommandStool 是 TongWeb 的命令行管理工具,使用 cli 用户进行认证。首次使用时需要修改默认密码;脚本已经自动执行此步骤。

执行前请修改脚本中的 CLI_PASSWORD,不要使用示例密码。

3. 设置 console 用户密码

console 是 TongWeb 单机管理控制台。执行前请在脚本中设置 THANOS_PASSWORDSECURITY_PASSWORDAUDITOR_PASSWORDMONITOR_PASSWORD

4. 按需设置 heimdall 用户密码

heimdall 是集中管理控制台。需要使用时保留 heimdall=1,并修改 RIG_PASSWORDSECADM_PASSWORDAUDIT_PASSWORDMONITOR_PASSWORD;不需要时将 heimdall=1 改为 heimdall=0

脚本内容

bash 复制代码
#!/bin/sh
#############本脚本适用于安装TongWeb7.0##########################
# 1.将本脚本和TongWeb安装包、授权文件license.dat在同一目录
# 2.安装目录:/opt(指定其他目录修改INSTALL_DIR)
# 
#################################################################

# 安装包名称
TongWeb_TAR="TongWeb7.0.4.9_M*_Enterprise_Linux.tar.gz"

# 默认安装目录
INSTALL_DIR="/opt"
TongWeb_DIR="$INSTALL_DIR/TongWeb7.0"

# CommandStool 用户密码配置
CLI_PASSWORD="Admin1qa.com"

# console-用户密码配置
THANOS_PASSWORD="T1hanos12.com"
SECURITY_PASSWORD="S1ecurity12.com"
AUDITOR_PASSWORD="A1uditor12.com"
MONITOR_PASSWORD="M1onitor12.com"

# heimdall-用户密码配置
RIG_PASSWORD="R1ig12.com"
SECADM_PASSWORD="S1ecadm12.com"
AUDIT_PASSWORD="A1udit12.com"
MONITOR_PASSWORD="M1onitor12.com"

# heimdall开关: 0=不执行, 1=执行并打印信息,
heimdall=1

# 定义颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# 日志输出函数
log_info() {
    echo -e "INFO: $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC}: $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC}: $1"
}

log_warn() {
    echo -e "${YELLOW}[WARN]${NC}: $1"
}

log_section() {
    echo ""
    echo "=====$1====="
}

# 当前目录
cd "$(dirname "$0")"

# 查找安装包是否存在
log_section "检查安装包、授权"
if [[ ! -f $(echo $TongWeb_TAR) ]]; then
    log_error "TongWeb安装包不存在!"
    exit 1
else
    log_success "TongWeb安装包存在;"
fi

# 查找授权文件是否存在
LIC=$(find . -maxdepth 1 -type f \( -name "*license*dat*" \))
count=$(find . -maxdepth 1 -type f \( -name "*license*dat*" \)|wc -l)

if [ $count -eq 0 ]; then
    log_error "TongWeb授权文件license.dat不存在!"
    exit 0
elif [ $count -eq 1 ]; then
    file=$LIC
    log_success "授权文件: $file"
else
    log_warn "当前目录下有多个授权文件,请选择:"
    select file in $LIC; do
        if [ -n "$file" ]; then
            log_success "您选择的授权文件: $file"
            break
        else
            log_error "无效的选择,请重新选择"
        fi
    done
fi

# 检查安装目录是否已存在
log_section "检查安装目录"
if [ -d "$TongWeb_DIR" ]; then
    log_error "安装目录 $TongWeb_DIR 已存在!"
    log_error "请删除该目录后重新执行安装脚本"
    exit 1
fi

# 创建安装目录
mkdir -p $TongWeb_DIR || { log_error "创建安装目录失败"; exit 1; }
log_success "TongWeb安装目录: ${GREEN}$TongWeb_DIR${NC}"

# 是否注册服务开机启动TongWeb
log_section "配置服务"
echo "请输入: 1 注册服务开机自启; 输入: 0 不注册服务"
read -r Installservice

# 开始安装
log_section "安装TongWeb"
log_info "开始解压安装包..."
if ! command -v tar &> /dev/null; then
    log_error "tar命令未安装,请安装后再试"
    exit 1
else
    tar -zxf ${TongWeb_TAR} -C $TongWeb_DIR --strip-components=1
    # 复制授权到安装目录下
    cp $file $TongWeb_DIR/license.dat
    log_info "授权文件已复制到安装目录..."
    log_success "TongWeb安装完成。"
fi

# 修改启动参数
log_section "配置JVM参数"
cd $TongWeb_DIR"/bin"
VM="external.vmoptions"

sed -i 's/2048m/4096m/g' ${VM}
sed -i 's/WebModuleOnly=false/WebModuleOnly=true/g' ${VM}

MetaspaceSize="-XX:MetaspaceSize=1024m"
MaxMetaspaceSize="-XX:MaxMetaspaceSize=1024m"
ser="-server"

sed -i "/${ser}/i $MetaspaceSize" ${VM}
sed -i "/${ser}/i $MaxMetaspaceSize" ${VM}
sed -i "/-XX:MaxPermSize=512m/d"  ${VM}

CACHE_MAX='	<property name="cacheMaxSize" value="1024000"/>'
CACHE_ALLOW='                <property name="cachingAllowed" value="true"/>'
VHOST='<virtual-host name="server" listeners="tong-http-listener"'
sed -i "/${VHOST}/,/<\/virtual-host>/ s|<\/virtual-host>|${CACHE_MAX}\n${CACHE_ALLOW}\n            </virtual-host>|" "${TongWeb_DIR}/conf/tongweb.xml"

log_success "JVM参数配置完成"

# 修改limits
log_section "配置系统限制"
ULIMIT_N=`ulimit -n`
LIMITS_FILE="/etc/security/limits.conf"
if [ "$ULIMIT_N" = 1024 ] && [ "$(id -u)" = 0 ]; then
    echo "* hard nofile 65535" >> "$LIMITS_FILE"
    echo "* soft nofile 65535" >> "$LIMITS_FILE"
    log_success "系统文件描述符已修改为65535"
else
    log_warn "跳过系统文件描述符配置(当前值: $ULIMIT_N)"
fi

if ! command -v java &> /dev/null; then
    log_error "Java命令不可用,请安装Java后启动TongWeb"
    Installservice=0
else
    # 修改cli用户默认密码并开放控制台访问策略
    log_section "配置控制台访问策略"
    
    # 1. 修改cli用户密码(离线模式)
    log_info "修改cli用户默认密码..."
    sh commandstool.sh << EOF > /dev/null 2>&1
change-admin-password --user cli --offline=true
cli123.com
${CLI_PASSWORD}
${CLI_PASSWORD}
EOF
    log_success "cli用户密码修改成功;"
    
    # 2. 生成密码文件
    log_info "生成密码文件..."
    ENCRYPTED_OUTPUT=$(sh password.sh ${CLI_PASSWORD} 2>/dev/null)
    ENCRYPTED_PASSWORD=$(echo "$ENCRYPTED_OUTPUT" | awk -F': ' '{print $2}' | sed 's/^ *//')
    echo "AS_ADMIN_password=${ENCRYPTED_PASSWORD}" > "$TongWeb_DIR/bin/passwordfile"
    log_success "密码文件生成成功"
    
    # 3. 开放console控制台访问策略并修改其他用户密码(直接执行模式)
    log_info "开放console控制台访问策略..."
    CONSOLE_RESULT=$(sh commandstool.sh update-console-remote-access --passwordfile="$TongWeb_DIR/bin/passwordfile" --thanosPassword=${THANOS_PASSWORD} --securityPassword=${SECURITY_PASSWORD} --auditorPassword=${AUDITOR_PASSWORD} --monitorPassword=${MONITOR_PASSWORD} --offline=true --user cli remote 2>&1)
    if echo "$CONSOLE_RESULT" | grep -q "Command.*executed successfully"; then
        log_success "控制台访问策略配置完成(remote模式)"
    else
        log_error "控制台访问策略配置失败!"
        echo ""
        echo "${RED}错误信息:${NC}"
        echo "$CONSOLE_RESULT"
        echo ""
    fi

    # 4. 开放heimdall控制台访问策略并修改其他用户密码(直接执行模式)
    if [ "$heimdall" -ge 1 ]; then
        log_info "开放heimdall控制台访问策略..."
        HEIMDALL_RESULT=$(sh commandstool.sh update-heimdall-remote-access --passwordfile="$TongWeb_DIR/bin/passwordfile" --rigPassword=${RIG_PASSWORD} --secadmPassword=${SECADM_PASSWORD} --auditPassword=${AUDIT_PASSWORD} --monitorPassword=${MONITOR_PASSWORD} --offline=true --user cli remote 2>&1)
        if echo "$HEIMDALL_RESULT" | grep -q "Command.*executed successfully"; then
            log_success "heimdall控制台访问策略配置完成(remote模式)"
        else
            log_error "heimdall控制台访问策略配置失败!"
            echo ""
            echo -e "${RED}错误信息:${NC}"
            echo "$HEIMDALL_RESULT"
            echo ""
        fi
    fi
    
    # 启动TongWeb服务    
    log_section "启动TongWeb服务"
    sh startservernohup.sh > /dev/null 2>&1
    END_DATE=$(sh "$TongWeb_DIR"/bin/version.sh | awk -F '=' '/end_date/ {print $2}')
    log_success "授权到期时间: ${GREEN}${END_DATE}${NC}"
fi

if [ $Installservice = 1 ]; then
    log_section "注册开机自启服务"
    if [ "$(id -u)" = 0 ]; then
        sh installservice.sh > /dev/null 2>&1
        SERVICE_FILE="/etc/systemd/system/tongweb.service"
        if [ -f "$SERVICE_FILE" ]; then
            log_success "服务已注册开机自启;"
        else
            log_error "注册服务失败,请手动重试;"
        fi
    else
        log_error "请使用root用户执行注册服务脚本;"
    fi
fi

# 防火墙状态检查
log_section "防火墙配置"
FIREWALL_STATUS="disabled"
if command -v firewall-cmd >/dev/null 2>&1; then
    if systemctl is-active --quiet firewalld; then
        FIREWALL_STATUS="enabled"
    fi
elif command -v iptables >/dev/null 2>&1; then
    if iptables -L 2>/dev/null | grep -q "ACCEPT"; then
        FIREWALL_STATUS="enabled"
    fi
fi

if [ "$FIREWALL_STATUS" = "enabled" ]; then
    log_warn "防火墙状态:${GREEN}开启${NC},请${YELLOW}关闭防火墙${NC}或者${YELLOW}开放端口9060/8088${NC}"
    #echo ""
    #echo "  firewalld:"
    #echo "    sudo firewall-cmd --permanent --add-port=9060/tcp"
    #echo "    sudo firewall-cmd --permanent --add-port=8088/tcp"
    #echo "    sudo firewall-cmd --reload"
    #echo ""
    #echo "  iptables:"
    #echo "    sudo iptables -A INPUT -p tcp --dport 9060 -j ACCEPT"
    #echo "    sudo iptables -A INPUT -p tcp --dport 8088 -j ACCEPT"
    #echo "    sudo iptables-save > /etc/sysconfig/iptables"
    #echo ""
else
    log_success "防火墙状态:${GREEN}未开启${NC}"
fi

# 检查TongWeb服务
log_section "验证服务状态"
PS_TW=`ps -ef|grep TongWeb7.0|grep tongweb.pid|grep -v "grep"|wc -l`
if [ "$PS_TW" -ge 1 ]; then
    log_success "东方通TongWeb7.0安装完成,服务已启动!"
    log_info "单机控制台访问地址: ${GREEN}http://$(hostname -I | awk '{print $1}'):9060/console${NC}"
    log_info "用户名密码: ${GREEN}thanos / ${THANOS_PASSWORD}${NC}"
    echo ""
    echo "其他用户账号信息:"
    echo -e " - 安全保密管理员       security / ${GREEN}${SECURITY_PASSWORD}${NC}"
    echo -e " - 安全审计员           auditor / ${GREEN}${AUDITOR_PASSWORD}${NC}"
    echo -e " - 系统管理员           monitor / ${GREEN}${MONITOR_PASSWORD}${NC}"
    echo ""
    echo -e " - Commandstool管理员  cli / ${GREEN}${CLI_PASSWORD}${NC}"
    
    if [ "$heimdall" -ge 1 ]; then
        echo ""
        log_info "集中管理控制台访问地址: ${GREEN}http://$(hostname -I | awk '{print $1}'):9060/heimdall${NC}"
        log_info "用户名密码: ${GREEN}rig / ${GREEN}${RIG_PASSWORD}${NC}"
        echo ""
        echo "其他用户账号信息:"
        echo -e " - 安全保密管理员       secadm / ${GREEN}${SECADM_PASSWORD}${NC}"
        echo -e " - 安全审计员           audit / ${GREEN}${AUDIT_PASSWORD}${NC}"
        echo -e " - 系统管理员           monitor / ${GREEN}${MONITOR_PASSWORD}${NC}"
    fi
else
    log_success "东方通TongWeb7.0安装完成"
    log_error "服务启动失败,请查看日志: ${TongWeb_DIR}/logs/server.log"
fi

log_section "安装完成"
#End

使用示范

bash 复制代码
[root@localhost ~]# cd /opt
[root@localhost opt]# chmod +x installTongWeb7.0_M11.sh
[root@localhost opt]# ./installTongWeb7.0_M11.sh 

=====检查安装包、授权=====
[SUCCESS]: TongWeb安装包存在;
[SUCCESS]: 授权文件: ./license.dat

=====检查安装目录=====
[SUCCESS]: TongWeb安装目录: /opt/TongWeb7.0

=====配置服务=====
请输入: 1 注册服务开机自启; 输入: 0 不注册服务
1

=====安装TongWeb=====
INFO: 开始解压安装包...
INFO: 授权文件已复制到安装目录...
[SUCCESS]: TongWeb安装完成。

=====配置JVM参数=====
[SUCCESS]: JVM参数配置完成

=====配置系统限制=====
[SUCCESS]: 系统文件描述符已修改为65535

=====配置控制台访问策略=====
INFO: 修改cli用户默认密码...
[SUCCESS]: cli用户密码修改成功;
INFO: 生成密码文件...
[SUCCESS]: 密码文件生成成功
INFO: 开放console控制台访问策略...
[SUCCESS]: 控制台访问策略配置完成(remote模式)
INFO: 开放heimdall控制台访问策略...
[SUCCESS]: heimdall控制台访问策略配置完成(remote模式)

=====启动TongWeb服务=====
[SUCCESS]: 授权到期时间: 2026-10-01

=====注册开机自启服务=====
[SUCCESS]: 服务已注册开机自启;

=====防火墙配置=====
[SUCCESS]: 防火墙状态:未开启

=====验证服务状态=====
[SUCCESS]: 东方通TongWeb7.0安装完成,服务已启动!
INFO: 单机控制台访问地址: http://192.168.31.105:9060/console
INFO: 用户名密码: thanos / T1hanos12.com

其他用户账号信息:
 - 安全保密管理员       security / S1ecurity12.com
 - 安全审计员           auditor / A1uditor12.com
 - 系统管理员           monitor / M1onitor12.com

 - Commandstool管理员  cli / Admin1qa.com

INFO: 集中管理控制台访问地址: http://192.168.31.105:9060/heimdall
INFO: 用户名密码: rig / R1ig12.com

其他用户账号信息:
 - 安全保密管理员       secadm / S1ecadm12.com
 - 安全审计员           audit / A1udit12.com
 - 系统管理员           monitor / M1onitor12.com

=====安装完成=====
[root@localhost opt]# 
相关推荐
CallFay云起未来1 小时前
AI客服能不能减少人工回复?从重复咨询到人机协同的落地分析
java·大数据·人工智能·文心一言
我命由我123451 小时前
Android 开发 - 获取当前设备屏幕的旋转角度
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
Elastic 中国社区官方博客1 小时前
OpenTelemetry Java 扩展:无需分叉 agent 即可自定义追踪
java·大数据·运维·开发语言·数据库·人工智能·elasticsearch
京东云开发者1 小时前
上游给空、下游拿到 -1,我把故障一直追到了 commons-beanutils 的构造函数
java·ai编程
阿无,1 小时前
Java多线程面试题之AQS
java·开发语言
数据狐(Datafox)1 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 7 章 AOP 思想与实现 阅读笔记 15
java·spring boot·笔记
风尘小子2 小时前
java静态类使用@Value动态绑定环境变量
java
重生之后端学习2 小时前
239. 滑动窗口最大值[困难]✅
java·数据结构·算法·leetcode·职场和发展