ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

东方通TongWeb安装部署实战:从环境配置到应用上线全指南

东方通TongWeb安装部署实战:从环境配置到应用上线全指南 提到国产中间件东方通TongWeb绝对是Java开发者和运维同学绕不开的一套东西。头一回在一台Linux服务器上捣鼓它的人十有八九会卡在启动脚本怎么执行、管理台从哪里登录、应用到底怎么部署这三件事上。这篇文章把TongWeb的安装及使用完整走一遍从下载安装包、检查JDK环境到启动服务、登录管理界面再到部署war包和静态HTML项目全部按实操顺序写清楚适合第一次在国产化环境里部署应用的开发、测试和运维同学参考。我实机操作使用的版本是TongWeb 7.0.x安装环境是CentOS 7.9、JDK 1.8。后面写到的所有命令、路径和界面描述都按这套环境来7.0以上的版本界面差异不大6.0会有区别但整体思路一致。既然叫“图文详细版”凡是界面会显示什么地方、日志里出现什么关键字我都会标出来你照着做基本就能跑起来。1. 内容整体设计与思路拆解1.1 TongWeb在技术栈里到底是什么定位第一次听到TongWeb这个词的人容易把它和Tomcat混为一谈。它俩确实长得很像因为都是Java应用服务器都能跑Servlet和JSP但TongWeb是国内老牌中间件厂商东方通推出的企业级Java EE应用服务器不是单纯的开源Servlet容器。它可以承载Servlet、JSP、EJB、JMS、WebService等完整的企业级应用规范在政务、金融、能源、电信这些对软件来源和可控性要求都比较高的行业里使用非常普遍。换句话说Tomcat能干的活TongWeb能干Tomcat不擅长的企业级能力比如统一管理控制台、数据源管理、集群会话复制、高可用部署TongWeb基本开箱即用。它解决的核心问题很实在你需要在指定的、合规的、可维护的Java中间件环境里把业务系统稳定跑起来。很多内网系统招标文件里直接点名要TongWeb所以项目交付同学不会装这套东西会非常被动。1.2 为什么放着Tomcat不用非要换成TongWeb现实里很多开发同学心里其实有个疑问我本地一直用Tomcat调得好好的为什么项目交付的时候非要装一套TongWeb这里面的原因不复杂。一是很多客户的招标技术要求和采购清单里明确写了必须使用国产中间件Tomcat虽然开源免费但在某些项目里不算数二是TongWeb作为商业产品有厂商提供技术支持、安全补丁和合规文档出了问题可以提工单这在政企项目里是硬需求。从技术对比上看TongWeb相比Tomcat有几个明显的差异点我直接用表格列出来。对比项Tomcat东方通TongWeb产品定位开源的Servlet容器企业级Java EE应用服务器规范支持Servlet/JSP为主Servlet/JSP/EJB/JMS/WebService等管理平台无统一图形管理界面自带Web控制台可管理应用、数据源、线程池技术支持社区为主商业支持、安全通告、合规文档典型场景互联网应用、开发调试政务、金融、能源等内网业务系统选择哪个不取决于谁的社区活跃度高取决于项目的正式要求和甲方的技术认可范围。做交付的同学就别纠结“谁更先进”了甲方的采购清单就是最高优先级。而作为运维或者开发能做的就是把这套中间件的安装部署、配置调优、问题排查都吃透这样无论什么环境都能接得住。1.3 安装方案的整体规划与版本选择操作之前先把版本理清楚。TongWeb有几个主要形态标准版、企业版和嵌入式版本。标准版就是我们常说的独立安装包安装后自己管理启动停止企业版一般在标准版基础上增加了集群管理、集中管控等能力嵌入式版本是给开发进程内嵌用的适合深度定制。普通项目交付最常用的是标准版这篇博文也以标准版为例展开。安装方式有两类图形化安装包和解压即用型安装包。图形化安装包适合第一次装、想一步步看到过程的场景安装界面友好但需要一个能显示图形界面的环境解压即用型适合纯命令行服务器生产环境基本都是这种。我后面会把两种方式都讲到你可以根据自己的环境选。版本选择上建议先看自己的JDK版本TongWeb 7.0对JDK8支持最好JDK11和JDK17也能跑但需要确认对应版本支持如果是老系统还在用JDK1.7那可能得找TongWeb 6或者更早的版本来匹配。安装前别急着动手先和现有团队确认机器上有没有其他应用占用端口这个信息比版本本身更能决定你后面顺利不顺利。2. 安装环境准备与安装包选型2.1 三分钟检查环境JDK和系统架构别搞错正式开始之前先做三件事确认系统类型、确认JDK版本、预留磁盘和端口。用命令检查最快。cat /etc/redhat-release java -version uname -m第一行看操作系统版本第二行看JDK版本第三行看CPU架构。这里注意一个细节64位系统要装64位的TongWeb安装包32位JDK和64位安装包混搭会在启动时报奇怪错误排查半天都找不到原因。如果你手头只有32位JDK那安装包也要找32位版本平台信息在安装包命名上会体现。如果机器上没有JDK需要先装JDK1.8。离线环境建议提前下载jdk-8uXXX-linux-x64.tar.gz解压到/usr/local/jdk1.8然后配置环境变量。tar -zxvf jdk-8uXXX-linux-x64.tar.gz -C /usr/local/ cat /etc/profile EOF export JAVA_HOME/usr/local/jdk1.8 export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib EOF source /etc/profile java -version装完以后重启会话或者source /etc/profile一定要回到java -version能正常打出1.8的版本号再继续。TongWeb启动脚本会读取JAVA_HOME这个变量不配好后边每一步都别扭。遇到过不少同学前面的步骤都对了唯独忘了配JAVA_HOME启动脚本直接报“Unable to locate a Java Runtime”一分钟能解决的问题卡了半小时。2.2 安装包从哪里下载目录结构长什么样TongWeb属于商业软件正规获取渠道一般是东方通官网申请试用版或者联系销售获取正式版本。试用版一般有时间限制正式授权会提供一个license文件后面讲到授权的时候再细说。下载的时候注意安装包命名里的平台信息比如Install_TW7.0.0.0_64_Linux.bin是Linux 64位版本Windows版本一般是.exe结尾千万别下错。拿到安装包后先别急着执行先把安装目录结构心知肚明。以解压后的TongWeb 7.0常规目录为例主要目录如下。目录/文件作用bin启动停止脚本和运行时脚本所在目录conf核心配置文件server.xml是端口和虚拟主机的关键配置deploy应用部署目录war包或解压后的应用扔这里lib运行时依赖jar包数据库驱动一般放这里license授权文件目录试用和正式授权都放在这里logs运行日志排查问题的第一现场为什么要花时间看目录结构因为后面90%的故障排查都在logs里找答案90%的应用部署都和deploy有关90%的端口修改都要改conf/server.xml。目录不熟出了问题就是无头苍蝇在服务器上输ls都不知道该看哪个文件夹。2.3 图形化安装与命令行安装的实操记录如果你拿到的是图形化安装包Linux上有图形界面或通过Xmanager这类工具转发界面的情况下直接执行chmod x Install_TW7.0.0.0_64_Linux.bin ./Install_TW7.0.0.0_64_Linux.bin安装界面会依次询问安装路径、选择JDK目录、确认安装组件。安装路径一般建议/opt/tongwebJDK目录选择刚才配置的/usr/local/jdk1.8走完进度条后会看到完成页面安装目录底下会出现上面列的那些文件夹。纯命令行的服务器用图形安装包会报无法显示界面的错误这时候有两个选择一是看这个安装包是否支持静默安装二是直接用解压版。解压版更简单把tar包解压到目标目录即可mkdir -p /opt/tongweb tar -zxvf TongWeb7.0.tar.gz -C /opt/tongweb ls /opt/tongweb bin conf deploy lib license logs这里有个经验生产服务器上我通常优先用解压版原因很朴素——可以随时复制整个目录做多实例也能通过tar包快速回滚图形安装包反而会在系统里留一些多余的东西。不过第一次学习建议用图形安装包走一遍能看到安装过程对整体结构印象更深。3. 服务启动、管理平台登录与基础配置实操3.1 启动和停止TongWeb到底怎么跑起来安装完成以后进入bin目录看下都有什么脚本cd /opt/tongweb/bin ls -l start.sh stop.sh setEnv.sh启动命令就一条./start.sh启动过程中终端会打印一些当前系统和JDK信息看到类似TongWeb Server Start Success的输出时启动基本成功。为了确认建议看日志文件tail -f /opt/tongweb/logs/server.log日志里出现Server startup字样说明TongWeb核心服务已经起来了。接下来验证http端口默认情况下业务服务端口是8080管理控制台端口是9060不同版本可能不同。用curl扫一下再加一个端口检查curl -I http://127.0.0.1:8080 netstat -tlnp | grep -E 8080|9060停止服务用./stop.sh。这里要特别提醒一句不要为了图省事直接kill -9除非进程完全卡死。直接强杀进程在极端情况下会造成数据源连接池未释放、配置写入不完整重启后项目报错都不知道从哪查起。stop.sh会走正常的关闭流程把该释放的资源都释放掉。如果是Windows环境双击bin目录下的start.bat启动控制台会保留在窗口里不要关窗口关掉等于停服务。想要后台运行可以注册Windows服务或用计划任务方式但生产上TongWeb多数跑在LinuxWindows一般用于开发联调不必花太多精力折腾。3.2 首次登录管理平台默认账号和密码怎么处理TongWeb的管理平台是Web页面在浏览器输入控制台地址http://服务器IP:9060/console浏览器打开后进入登录页这个页面是TongWeb特有的图形化管理入口Tomcat用户第一次看到会觉得挺新鲜。重点说一下默认账号很多第一次用的人卡在这一步。常见默认账号是admin密码是tongweb但不同版本、不同安装方式可能不一样有些版本在安装过程中允许你自己设置有些版本会在日志或启动输出里打印初始密码。如果你手里的版本登录不进去先去logs目录找初始化相关的记录而不是一遍遍瞎试密码把账号锁了。登录成功后管理平台左侧一般能看到应用管理、部署管理、数据源、虚拟主机、JVM参数、线程池等功能模块。到这个界面TongWeb和Tomcat的差距就出来了Tomcat想管理数据源、看线程数得去翻配置文件或者用JMX工具TongWeb在页面上点几下就能搞定对不熟悉命令行的同学友好很多。登录后的第一件事不是部署应用而是去改密码。默认账号密码在所有TongWeb用户里其实是公开的不第一时间改掉和在自己家门口挂把钥匙没什么区别。改完密码最好把管理端口限制在内网访问安全组和防火墙都配上白名单别把9060端口对外暴漏。3.3 端口、虚拟主机与JVM参数调整改配置的前因后果先讲端口。TongWeb有两类端口一是对外提供HTTP服务的服务端口二是管理控制台端口。这两个端口都可以在conf/server.xml里改。修改前记住一个原则先备份再改。改动前先复制一份server.xml叫server.xml.bak避免改坏了连启动都做不了。cd /opt/tongweb/conf cp server.xml server.xml.bak vi server.xml在server.xml里找到Connector配置常见长这样Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443/把port改成你规划的业务端口比如8088保存后重启。改完别忘同步防火墙否则外部还是访问不了firewall-cmd --permanent --add-port8088/tcp firewall-cmd --reload再说JVM参数。部署应用经常出现内存不足这不是程序问题是JVM堆内存给得不够。TongWeb的启动脚本会加载setEnv.sh里的JAVA_OPTS在这个文件里改内存参数最合适vi /opt/tongweb/bin/setEnv.sh JAVA_OPTS-Xms1024m -Xmx2048m -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m这里给新手解释一下为什么要关心JVM参数。默认堆内存往往只有256MB或512MB如果项目的war包比较大、并发量稍微上来一点Full GC频繁、应用假死这些毛病就全冒出来了。生产环境一般根据服务器物理内存来估给JVM分配物理内存的1/2到2/3比较合适同时-Xms和-Xmx设置成一样避免运行时频繁扩容缩容。JDK8不需要PermSize用MetaspaceSize控制元空间就够了。改完重启再用jmap或控制台里看JVM参数是否生效jps找到TongWeb进程号然后jmap -heap PID查看当前堆配置。4. 应用部署从war包到静态项目的完整落地4.1 war包部署的两种方式哪种更省心把Java应用部署到TongWeb上最典型的就是打war包。部署方式有控制台部署和目录部署两种我给对比一下。控制台部署适合第一次部署、不熟悉文件结构的场景目录部署适合批量操作、自动化脚本场景。控制台部署流程登录管理平台进入应用管理或部署管理选择本地上传war包填写应用名称上传后点击部署然后在应用列表里点启动。页面会明确显示当前应用是已停止还是已启动看到“已启动”状态再开始访问验证。这种方式最大的好处是能选上下文路径不用手动改配置图形化界面一目了然。目录部署则简单粗暴把war包复制进deploy目录重启TongWeb或触发自动部署。TongWeb默认会扫描deploy目录发现新的war包会自动部署。这种方式适合批量上线但要注意war包文件名会直接影响访问路径。比如app.war部署后的访问地址是http://IP:8080/app/如果你想让它直接通过根路径访问就得在管理台里把上下文路径设置为/或者把应用部署成root应用。个人经验正式环境我更喜欢控制台部署因为日志和状态在页面上都有出问题能当场看到只有批量机器才用目录部署加脚本。4.2 静态HTML项目的部署前端也要看这篇TongWeb不仅能跑Java后端也可以直接托管纯前端静态文件很多项目的前后端分离部署里前端dist包就放在TongWeb下。操作并不复杂把前端构建出来的dist目录整个拷贝到TongWeb的webapps或deploy目录下比如deploy/dist然后访问http://IP:8080/dist/能看到index.html就说明成功。如果前端项目有点特殊比如用的是单页应用路由是history模式而不是hash模式直接这样扔上去会出现一个问题刷新页面就404跳到其他路由后刷新是白屏。原因是路由没有对应的物理文件。解决办法是在server.xml里对相应虚拟主机配置错误页面映射把404请求转发到index.html或者让前端把路由改成hash模式。更简单的做法是让Nginx在前面兜一层把静态资源请求交给Nginx处理动态接口反向代理到TongWeb这样对TongWeb的压力小静态资源响应也更快。静态资源还有一个容易踩的坑是访问路径大小写。Linux下路径区分大小写dist目录里叫Index.html和index.html是两回事Windows本地能跑、Linux服务器上404多半就是这个原因。前端构建后注意目录名和文件名统一小写能省掉很多莫名其妙的麻烦。4.3 数据库连接池和驱动一个容易忽略的配置点部署完应用很多人卡在最后一步应用起来了一会又报错一看日志是数据库连不上。这种情况十有八九是因为TongWeb里没有配数据源或者数据库驱动jar包没有放到lib目录。TongWeb管理平台里提供了数据源管理功能可以在页面里配置数据源指定驱动类、数据库URL、账号密码然后在应用里通过JNDI名字引用这个数据源。这种方式的优点是连接复用、统一管理、能可视化看当前连接数和直接在应用里用自己的连接池是两种路线。建议在正式项目里优先用TongWeb管理的数据源出问题在页面上能直接看到状态排查效率高很多。忘记放驱动是另一个常见坑。Oracle驱动ojdbc、MySQL驱动mysql-connector-java这些jar包要复制到TongWeb的lib目录下然后重启服务才会生效。别丢错位置丢到deploy目录不会被加载。如果你发现数据源配置页面里找不到对应数据库类型先检查驱动jar包在不在这是出现频率最高的问题。5. 常见问题与排查技巧实录5.1 启动类问题速查表把TongWeb部署过程中最常见的启动问题整理一下从日志关键字入手最有效。现象日志关键字大概率原因处理办法启动脚本执行后无反应JAVA_HOME not found环境变量未配置配置JAVA_HOME并source启动闪退OutOfMemoryError堆内存参数过大降低-Xmx或增加物理内存端口起不来Address already in use端口被占用netstat查占用进程换端口或停掉占用卡住不启动UnsupportedClassVersionErrorJDK版本不兼容换匹配的JDK版本遇到启动问题第一反应不是反复重启而是去看logs目录里最新的server.log或TongWeb.log日志会告诉你真实原因。同样的错误提示在页面上和终端里往往看不全日志文件里才是最完整的。netstat -tlnp | grep 8080这个命令在排查端口占用时最好用能看到哪个进程占用了端口。如果发现被某个PID占用ps -ef | grep PID看一眼是什么进程再决定是停进程还是换端口别上来就kill容易误伤其他服务。5.2 应用部署类问题404、不生效、启动失败应用部署最常见的三个现象是404、war包不生效、启动失败。404先确认三件事应用状态是不是已启动、访问的上下文路径对不对、端口对不对。控制台里看应用状态最直观状态是已启动再往下排查上下文路径和war包名强相关分清是/app还是/。还有一种情况是应用启动了但请求报404这时去应用自身日志或者TongWeb的访问日志里看请求有没有进来请求根本没进来就去查虚拟主机配置和端口。war包不生效常见原因是上传的war包没有正常解压或者解压过程被中断。控制台部署有时候因为网络原因导致文件不完整部署出去的应用启动时缺class文件。这种问题最省事的办法是把war包从管理台重新传一遍或者手动解压到deploy目录下看目录完整性。war包是否完整可以用jar tf app.war快速看内容缺失就到构建那边重新打包。部署后启动失败不要只盯控制台的报错去logs目录看最近生成的日志文件。TongWeb对应用启动失败的日志一般会打印到独立的应用日志或者server.log中关键字通常是Exception、Caused by。看到Caused by就往下翻那个Caused by才是真正的原因头前面那一大堆堆栈信息只是表象。很多同学看日志只看前五行就慌了其实真正有用的信息在最后几行。5.3 license过期和运行期诡异问题TongWeb是商业软件license文件过期会导致中间件服务被停止这也是和Tomcat完全不同的体验。正式环境建议把license到期时间记在运维台账里提前一个月找厂商续期。日志里出现license expired、platform expired这类关键字就是授权问题别去改系统时间绕过那样只会带来更多连锁故障。运行期还有一个容易被人忽略的地方是系统时间和实际时间不一致。TongWeb在启动时对授权文件的校验依赖系统时间系统时间被改成过去会造成授权校验混乱。服务器用NTP时间同步是基本操作别觉得这事跟中间件没关系等到证书、token莫名失效的时候就懂了。另外TongWeb的线程池配置页面上有核心线程数、最大线程数这些参数生产环境不要随意调到极大值线程数不是越大越好调得过大反而会增加上下文切换开销垃圾回收也更频繁。6. 生产落地开机自启、多实例与几个实用经验6.1 Linux开机自启用systemd管理TongWeb生产环境服务器重启是很正常的事如果每次重启都要人肉登录去启动TongWeb早晚有一天会漏。用systemd把TongWeb注册成服务是最省心的方案。在/etc/systemd/system/目录下创建tongweb.service文件内容参考如下[Unit] DescriptionTongWeb Application Server Afternetwork.target [Service] Typeforking Userroot ExecStart/opt/tongweb/bin/start.sh ExecStop/opt/tongweb/bin/stop.sh Restarton-failure TimeoutStartSec120 [Install] WantedBymulti-user.target保存后执行systemctl daemon-reload然后systemctl enable tongweb systemctl start tongweb。注意TongWeb的start.sh默认会通过nohup的方式后台启动所以Type建议用forking而不是simple不然systemd可能认为服务一直没启动起来。不同版本启动脚本行为不一样配置好后先手动跑一遍start.sh看它是前台等待还是后台分离再确认Type怎么写。6.2 多实例部署一个TongWeb跑多个项目有多套系统要部署在同一台物理机时开多个TongWeb实例比把所有应用塞进一个实例更稳。做法很简单把整个安装目录复制一份修改新实例的server.xml端口和管理控制台端口指定不同的logs和deploy目录然后单独启动。cp -r /opt/tongweb /opt/tongweb_8081 cd /opt/tongweb_8081/conf vi server.xml把HTTP端口改成8081控制台端口改成9061logs和deploy目录保持各自独立然后在/opt/tongweb_8081/bin下执行./start.sh两个实例互不干扰。多实例的优点是故障隔离一个项目把内存吃满另一个实例最多受影响但不会直接挂升级单个应用的时候也不会影响所有项目停机。缺点是占用的物理内存会成倍增加每多一个实例就多一份JVM基础内存机器内存不够时不要盲目开多实例。6.3 几个只有生产环境才能验证的经验最后说点踩坑踩出来的经验。第一任何配置改动前先备份包括server.xml、setEnv.sh、虚拟主机配置这些文件改了以后想回退没有备份就得靠记忆重打。我习惯在相关文件边上放日期后缀的备份改一次备一次比如server.xml.bak-20250319。第二应用的日志和TongWeb的日志不要放在同一个系统盘上日志增长会影响系统盘空间而TongWeb日志满了以后中间件会表现出各种怪问题。部署前规划好一个单独挂载的日志目录最省心这比临时清理日志靠谱得多。第三如果TongWeb前面还有Nginx要注意两个层的超时时间。Nginx默认proxy_read_timeout比较短而TongWeb对某些慢请求又确实没办法秒回超时表现看着像中间件挂了其实是网关先把连接断掉了。遇到这类问题先看Nginx的error.log判断错误到底出在哪一层别一上来就重启TongWeb。第四TongWeb虽然有学习成本但只要你习惯先看日志、先备份、再改配置它的稳定性完全不输同类产品。部署前先在本地用Tomcat把war包跑通再放上TongWeb遇到问题的时候就少了一个变量排查速度会快很多。这个习惯帮我省了不少半夜临时发布的痛苦。这篇TongWeb的安装及使用实操记录就写到这里。我自己的体会是TongWeb的管理平台把很多Tomcat需要手动处理的活都接手了初次配置稍微花点时间一旦跑顺了日常维护反而比纯命令行操作轻松不少。最后再分享一个小技巧生产环境改任何一个配置之前先在测试环境完整验证一遍尤其是端口、JVM参数和数据源这类影响全局的配置这样真正上线的时候你心里是有底的。
返回列表