背景:记录在linux环境下部署jar程序的过程

1 部署过程记录

1.1 程序结构

这里的main函数就在DemRest2.java 文件中。

为了部署方便,要做到以下两点:

1 在导出的jar包中不包含依赖的jar文件

2 程序用到的配置文件可以让用户进行自定义 ,不将其放在jar包中。

1.2 导出jar包

这里导出普通的jar包即可。为了方便传输,只导出必须的程序文件。

在jar包导出后,进入导出的jar包中,将配置文件tws.properties文件删除。

1.3 程序部署

将所有需要的jar包放在lib目录下面,包括我们导出工程的jar包tws-client-demo.jar

在用户自定义目录中,放置运行脚本和配置文件。

ps:运行脚本所在的目录,就相当于程序运行的根目录,所有的配置文件和运行脚本放置在同一目录即可。

这里程序中怎么读取配置文件,还需要好好研究。。。。。。。

#!/bin/sh

sourceMsgPath=/home/tws/server/tws-test/userMsg/lxw/source/etc/profile

for i in $HOME/server/tws-test/lib/*;

do CLASSPATH=$i:"$CLASSPATH";

done

export CLASSPATH=.:${CLASSPATH}

java demo.rest.DemRest2 $sourceMsgPath$1echo"Success!"

对照以上脚本进行解释:

运行程序:

在用户目录下面,程序能够读到jar包外部的配置文件。

2 标准脚本

在网上找的一个脚本范例:

在编写shell脚本出现错误时候,可以作为参考:

#!/bin/sh

export JAVA_HOME=/usr/java/jdk1.6.0_18

export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

for i in lib/*.jar;

do CLASSPATH=$i:${CLASSPATH}

done

export CLASSPATH=.:${CLASSPATH}

java-cp ${CLASSPATH} main方法所在包名.main方法所在的类名

如果上述脚本不能顺利执行,可以尝试

#!/bin/bash后追加

source/etc/profile

source ~/.bash_profile

测试下。。

java -cp java的cp命令

java -cp .;c:\dir1\lib.jar Test

-cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”

分隔,linux上是分号“:”分隔。不支持通配符,需要列出所有jar包,用一点“.”代表当前路径。

3 半自动化工程部署

ps:在处理第三方管理平台项目时候,突然想写一个自动化的shell脚本,其实脚本很简单,只不过前期走了些弯路,虽说麻烦,但是对自己来说也是一次提高。

我遇到的问题是

ps:刚开始我还以为是脚本语法问题,后来网上搜索才知道是这个问题。解决后,后面的脚本就是常用命令的集合。

问题:通过ftp传输工具在windows下编辑的脚本,在执行的时候会出现no such file or directory情况。

是因为平台不同导致的。执行下列命令即可

INUX下SHELL编程脚本无法执行,提示no such file or directory.

sudo vim xx.sh

:set ff=unix

:wq

就OK了

(如果是在windows里写的脚本,你输入:set ff 应该显示的是DOS)

最终的shell脚本:

#!/bin/bash

#war包上传临时目录

warPath=/usr/local/tmp-tms

#tomcat中webapps中文件

service_webapps=/usr/local/service-tomcat7/webapps

web_webapps=/usr/local/web-tomcat7/webapps

#待替换的配置文件

from_service_config=$warPath/224-service

to_service_config=$service_webapps/tms_service/WEB-INF/classes

from_web_config=$warPath/224-web

to_web_config=$web_webapps/tms/WEB-INF/classes

deployService(){

#清空tomcat webapps下的文件rm -rf $service_webapps/*echo "完成临时目录的清理:$service_webapps"

#移动war文件到webappps目录

mv $warPath/tms_service.war $service_webapps

echo "完成war文件的移动:$service_webapps/tms_service.war"

#解压war包

cd $service_webapps

unzip tms_service.war -d tms_service

echo "完成war文件解压:$service_webapps/tms_service.war"

#替换war中的配置文件

cp $from_service_config/log4j.properties $to_service_config/log4j.properties

cp $from_service_config/resources.properties $to_service_config/resources.properties

cp $from_service_config/service.xml $to_service_config/service.xml

echo "完成Service工程配置文件的替换!"

}

deployWeb(){

#清空tomcat webapps下的文件

rm -rf $web_webapps/*

echo "完成临时目录的清理:$web_webapps"

#移动war文件到webappps目录

mv $warPath/tms.war $web_webapps

echo "完成war文件的移动:$web_webapps/tms.war"

#解压war包

cd $web_webapps

unzip tms.war -d tms

echo "完成war文件解压:$web_webapps/tms.war"

#替换war中的配置文件

cp $from_web_config/log4j.properties $to_web_config/log4j.properties

cp $from_web_config/service.xml $to_web_config/service.xml

cp $from_web_config/tms.properties $to_web_config/tms.properties

echo "完成web工程配置文件的替换!"

}

##############脚本入口

#./deploy.sh service ---只部署service

#./deploy.sh web ---只部署web

#./deploy.sh both ---同时部署service和web

if [ $1 == "service" ]

then

deployService

echo "只部署service,successful"

elif [ $1 == "web" ]

then

deployWeb

echo "只部署web,successful"

elif [ $1 == "both" ]

then

deployService

sleep 10

deployWeb

echo "同时部署service和web,successful!"

else

echo "请输入一个正确参数:service web both"

fi

View Code

用到啥就去查什么,一切都不是困难,态度决定成效!!!!

Linux配置脚本导出运行,linux服务器部署jar包以及shell脚本的书写相关推荐

  1. windows服务器部署jar包

    服务器部署jar包,提供接口服务常用命令: 我这里打成jar包的名字是zhuganwu_jar(如果你的不是),放到webapps下后,自动解压,里面有一个jar包:zhuganwu.jar 查看进程 ...

  2. 服务器部署jar包的方式(java)

     相关重要指令: //部署运行jar包的指令,这种方式会进入运行的终端界面 nohup java -jar zjyn-0.0.1-SNAPSHOT.jar //部署运行jar包的指令.在之前的基础上, ...

  3. jar包自动化启动脚本+开机自启

    Jar包自动化启动脚本+开机自启 文章目录 Jar包自动化启动脚本+开机自启 内容概要 脚本编写 1.循环遍历目录 2.判断jar包进程重启 开机自启设置 内容概要 本章节内容主要是基于日常工作需要大 ...

  4. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

    准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...

  5. Linux系统防CC攻击自动拉黑IP增强版Shell脚本

    Linux系统防CC攻击自动拉黑IP增强版Shell脚本 文章目录 一.Shell代码 二.执行脚本 三.效果测试 四.附加说明 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原 ...

  6. Linux自定义shell脚本一键启停微服务jar包

    Java项目在Linux系统中的部署通常是以tomcat等容器化的方式部署,或者jar包的形式直接运行.在自动化部署畅行的今天,仍然会有不少的公司采用手动部署的方式部署 jar 包.而微服务打包形成的 ...

  7. Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

    这篇文章主要介绍了Linux系统防CC攻击自动拉黑IP增强版(Shell脚本),需要的朋友可以参考下 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存 ...

  8. 在Linux上部署jar包(不需要Docker,Tomcat等容器)解决xxx.jar中没有主清单属性

    一.springboot在idea中通过package命令打包 将target下生成的jar包拉到linux下,并执行jar包如下 [root@localhost oa]# java -jar new ...

  9. 使用shell脚本完成自动化部署jar包

    文章目录 1.前言 2.跳板机 3.服务器 4.注意事项 1.前言 首先我们这里有一台跳板机,然后有一台服务器,现在的要做的就是将跳板机上的jar包文件,然后通过服务器上的脚本实现旧jar包的备份,新 ...

最新文章

  1. JQuery-- 获取元素的宽高、获取浏览器的宽高和垂直滚动距离
  2. python与rpc服务
  3. 华为交换机RRPP配置实验
  4. python的数据结构包括那些_python算法与数据结构-什么是数据结构
  5. Linux下安装Python3.6(可用)
  6. java与js的split方法
  7. Python与MongoDB的交互
  8. WaitForSingleObject的使用
  9. android开发更改内部版本号,分享个老教程:修改手机型号、品牌、内部版本号、Android版本...
  10. java8官网下载地址
  11. (首个填坑)联想拯救者Y7000(自带win10 home) 安装Ubuntu16.04.6 + NVIDIA GTX1650驱动
  12. 关于学习BEX5的问题
  13. RGMII(Reduced Gigabit Media Independent Interface)
  14. Word的”交叉引用“和”插入题注“快捷键设置
  15. Java实验-宠物商店(链表与接口的使用)
  16. c语言程序设计名片管理系统,《名片管理系统》 - C语言课程设计
  17. 为什么PrimeTime修timing时,带physical aware还不如不带physical aware
  18. vue使用v-for动态绑定div背景图片
  19. 「史上最全的 TCG 规范解读」TCG 工作组规范预览
  20. 一步一步教你如何利用虚拟机软件安装ubuntu

热门文章

  1. 【控制】二阶含时滞多智能体系统一致性仿真程序 离散化处理
  2. 1.7 单层卷积网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. Altium Designer Exception ESocketError in module X2.EXE at 001B15CF (10107) on API 'Socket'
  4. u-boot分析之命令实现(四)
  5. Allegro跨分割检查
  6. Android 4.0 Notification
  7. 【工具】Excel 表格数据转换成Json格式的实用工具 excel2json
  8. canvas使用技巧大全
  9. 目前中关村在线上面的CPU排行情况
  10. RedHat6.5 搭建glusterfs全过程