堡垒机 Web CLI 部署教程

本文说明如何通过堡垒机进入目标服务器,并部署一个 Tomcat Webhook 服务。示例中的域名、服务器名、账号、WAR 包名均为通用占位名称,请按实际环境替换。

一、进入堡垒机

  1. 打开堡垒机 Web 终端地址:
arduino 复制代码
https://bastion.example.com/luna/
  1. 登录后,在左侧资产树中找到目标服务器,例如:
markdown 复制代码
业务服务器组
└── Web服务组
    └── app-web-server
  1. 右键目标服务器,选择:
sql 复制代码
Connect
  1. 在连接弹窗中选择:
objectivec 复制代码
系统用户:deploy-user
连接方式:Web CLI
  1. 点击 Confirm 进入 Web 终端。

注意:如果选择 SSH Client,可能会尝试拉起本地客户端;如果只想在浏览器里操作,选择 Web CLI

二、检查服务状态

进入服务器后,先确认 Tomcat 是否运行:

perl 复制代码
ps -ef | grep -E 'tomcat|catalina|java' | grep -v grep

检查 8080 端口是否监听:

perl 复制代码
ss -lntp | grep 8080

如果系统没有 ss,可以使用:

perl 复制代码
netstat -lntp | grep 8080

测试本机接口:

bash 复制代码
curl http://localhost:8080/sample-webhook/api/test

或:

bash 复制代码
curl http://localhost:8080/sample-webhook/api/testPipeline

三、停止 Tomcat

部署前建议先停止 Tomcat:

arduino 复制代码
sudo /opt/tomcat/bin/shutdown.sh

确认进程已退出:

perl 复制代码
ps -ef | grep -E 'tomcat|catalina|java' | grep -v grep

如果仍有残留进程,需要谨慎确认后再处理。

四、清理旧版本

进入 Tomcat 应用目录:

bash 复制代码
cd /opt/tomcat/webapps/

调整权限:

bash 复制代码
sudo chmod -R 755 /opt/tomcat/webapps/

删除旧的 WAR 包和解压目录:

bash 复制代码
sudo rm -f sample-webhook.war
sudo rm -rf sample-webhook

这里的 sample-webhook.warsample-webhook 请替换为实际应用名称。

五、上传或复制新 WAR 包

如果 WAR 包已经在临时目录,例如:

bash 复制代码
/tmp/sample-webhook.war

复制到 Tomcat webapps 目录:

bash 复制代码
sudo cp /tmp/sample-webhook.war /opt/tomcat/webapps/

确认文件存在:

bash 复制代码
ls -lh /opt/tomcat/webapps/sample-webhook.war

六、启动 Tomcat

启动 Tomcat:

ini 复制代码
sudo JAVA_HOME=$JAVA_HOME /opt/tomcat/bin/startup.sh

或:

bash 复制代码
sudo /opt/tomcat/bin/startup.sh

启动后等待几秒,再检查进程:

perl 复制代码
ps -ef | grep -E 'tomcat|catalina|java' | grep -v grep

检查端口:

perl 复制代码
ss -lntp | grep 8080

七、验证服务

本机验证:

bash 复制代码
curl http://localhost:8080/sample-webhook/api/testPipeline

如果有外部访问域名,可验证:

arduino 复制代码
curl https://web-service.example.com/sample-webhook/api/testPipeline

期望结果示例:

csharp 复制代码
HTTP 200
handled Pipeline event

如果返回连接失败,优先检查 Tomcat 是否启动、8080 是否监听、WAR 是否正确解压。

八、查看日志

查看实时日志:

bash 复制代码
cd /opt/tomcat/logs/
tail -f catalina.out

保存日志到文件:

bash 复制代码
tail -f catalina.out > /tmp/sample-log.txt

查看最近错误:

bash 复制代码
grep -Ei 'ERROR|Exception|SEVERE|failed' /opt/tomcat/logs/catalina.out | tail -50

九、常见问题

Tomcat 进程存在但 8080 不通:

perl 复制代码
ss -lntp | grep java

确认实际监听端口,并检查 /opt/tomcat/conf/server.xml

bash 复制代码
grep -n 'Connector|port=' /opt/tomcat/conf/server.xml

WAR 包没有解压:

bash 复制代码
ls -lh /opt/tomcat/webapps/

检查 Tomcat 日志是否有部署失败:

bash 复制代码
tail -100 /opt/tomcat/logs/catalina.out

外部域名访问失败:

bash 复制代码
curl http://localhost:8080/sample-webhook/api/testPipeline

如果本机正常但外部异常,重点检查 DNS、Nginx、网关、负载均衡或防火墙配置。

十、部署检查清单

css 复制代码
[ ] 已进入正确服务器
[ ] 已停止旧 Tomcat 进程
[ ] 已删除旧 WAR 和旧解压目录
[ ] 已复制新 WAR 到 /opt/tomcat/webapps/
[ ] 已启动 Tomcat
[ ] Tomcat 进程存在
[ ] 8080 端口已监听
[ ] 本机 curl 返回正常
[ ] 外部域名访问正常
[ ] catalina.out 无明显启动错误
相关推荐
Ai拆代码的曹操8 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
IT_陈寒10 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱10 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
Wang's Blog10 小时前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
Conan在掘金10 小时前
鸿蒙报错速查:struct 里嵌 namespace 声明就炸,根因 + 真解法
后端
东方小月11 小时前
从零开发一个 Coding Agent(三):EventStream 事件流通道设计与实现
前端·人工智能·后端
卫子miao11 小时前
如何评价当前大语言模型的记忆机制?
后端·架构
神奇小汤圆11 小时前
为什么 AQS 成为 Java 并发的基石?
后端
星栈12 小时前
MCP 从 stdio 迁到 SSE,踩了 5 个传输层坑
人工智能·后端·架构
Conan在掘金12 小时前
鸿蒙报错速查:struct 里嵌 enum 声明就炸,根因 + 真解法
后端