程序包格式说明
最近更新时间: 2024-10-17 17:10:00
注意:
- 只有 Linux 虚拟机部署的应用可以进行程序包管理。
- 当部署 Spring Cloud 类型的微服务时,当前只有 jar 包部署的微服务支持完整的服务注册发现、完整的服务监控、调用链和服务治理能力。
目前使用云服务器部署的应用支持的程序包格式包括 jar、war、tar.gz 和 zip。
jar: FatJar 格式的程序包 。
war: war 格式的程序包,在部署 war 包时,TSF 会自动安装 Tomcat 环境。示例 demo 下载 ,示例 demo 部署成功后,使用
http://<IP>:8080/sample
访问,其中 IP 可以是实例的外网 IP。tar.gz 、zip : 压缩包中必须包含三个文件,确保文件名正确:
start.sh:启动脚本。
stop.sh:停止脚本。
cmdline:用于检查应用进程是否存在,没有
.sh
后缀。
文件类型 | 启动方式 |
---|---|
war | 云服务器上的 agent 会使用java -jar 命令启动程序。 |
jar | 云服务器上的 agent 会使用java -jar 命令启动程序。 |
tar.gz | 云服务器上的 agent 会解压压缩包,使用解压目录下的start.sh 脚本启动应用程序。 |
zip | 云服务器上的 agent 会解压压缩包,使用解压目录下的start.sh 脚本启动应用程序。 |
start.sh / stop.sh / cmdline 说明
以一个 Python 应用的压缩包为示例,解压后的文件目录如下:
promotionService.py
start.sh
stop.sh
cmdline
start.sh 启动脚本内容如下:
#! /bin/bash
already_run=`ps -ef|grep "python promotion"|grep -v grep|wc -l`
if [ ${already_run} -ne 0 ];then
echo "promotionService already Running!!!! Stop it first"
exit -1
fi
nohup python promotionService.py 8093 &
stop.sh 停止脚本内容如下:
#!/bin/bash
pid=`ps -ef|grep "python promotion"|grep -v grep|awk '{print $2}'`
kill -SIGTERM $pid
echo "process ${pid} killed"
cmdline 检测进程脚本,agent 通过ps -ef | grep 'cmdline 内容'
来检测进程是否存在,示例如下:
python promotion
cmdline 更多说明
如果启动应用是 Java 应用,启动脚本中通过java -jar xxx.jar
来启动应用。在 cmdline 文件中使用完整的 Java 启动命令。例如启动脚本中包含如下启动命令:
java -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -jar consumer-demo-0.0.1-SNAPSHOT.jar
那么在 cmdline 中内容为:
java -Xms128m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -jar consumer-demo-0.0.1-SNAPSHOT.jar
当应用启动后,agent 会在服务器上执行ps -ef | grep 'cmdline 内容'
来检查进程是否存在。
注意:
如果没有 cmdline 文件或者 cmdline 文件内容不正确,在控制台上部署组的状态会显示为 "已停止",即使此时服务器上的应用已经运行起来(但是 TSF agent 无法获取应用进程状态)。
MacOS 系统压缩软件说明
对于 MacOS 系统的用户,使用系统自带压缩软件时,会在压缩包里面生成__MACOSX
的临时目录,从而导致 agent 无法找到启停脚本。用户可以 下载 Keka 压缩软件,选择 zip 压缩格式,勾选【排除 Mac 资源文件】选项。将文件拖拽到 keka 界面上进行压缩,这种方式生成的压缩包没有__MACOSX
的临时目录。