博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux服务器部署jar包以及shell脚本的书写
阅读量:5876 次
发布时间:2019-06-19

本文共 3733 字,大约阅读时间需要 12 分钟。

背景:记录在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/shsourceMsgPath=/home/tws/server/tws-test/userMsg/lxw/source /etc/profilefor i in $HOME/server/tws-test/lib/*;    do CLASSPATH=$i:"$CLASSPATH";doneexport CLASSPATH=.:${CLASSPATH}java  demo.rest.DemRest2 $sourceMsgPath$1echo "Success!"

 对照以上脚本进行解释:

运行程序:

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

 2 标准脚本

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

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

#! /bin/shexport JAVA_HOME=/usr/java/jdk1.6.0_18export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jarfor i in lib/*.jar;         do CLASSPATH=$i:${CLASSPATH} doneexport CLASSPATH=.:${CLASSPATH}java -cp ${CLASSPATH} main方法所在包名.main方法所在的类名
如果上述脚本不能顺利执行,可以尝试
#!/bin/bash后追加source /etc/profilesource ~/.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/webappsweb_webapps=/usr/local/web-tomcat7/webapps#待替换的配置文件from_service_config=$warPath/224-serviceto_service_config=$service_webapps/tms_service/WEB-INF/classesfrom_web_config=$warPath/224-webto_web_config=$web_webapps/tms/WEB-INF/classesdeployService(){    #清空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和webif [ $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

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

 
 

如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,让更多的人能够享受到获取知识的快乐!因为本人初入职场,鉴于自身阅历有限,所以本博客内容大部分来源于网络中已有知识的汇总,欢迎各位转载,评论,大家一起学习进步!如有侵权,请及时和我联系,切实维护您的权益!

原文地址:

你可能感兴趣的文章
《编写可维护的 JavaScript》读书笔记第17章:文件精简和压缩
查看>>
悼念一代巨匠:苹果之父乔布斯的语录
查看>>
C89和C99标准比较
查看>>
[Android] [Java] 分享 Process 执行命令行封装类
查看>>
iOS使用自签名证书实现HTTPS请求
查看>>
mysql 常见问题
查看>>
PHP 简单方法
查看>>
深入理解Android(一):Gradle详解
查看>>
Excel批量导出
查看>>
visio 2010
查看>>
CENTOS流水账0002.1[MySQL安装]
查看>>
为什么Eclipse中 按 F3 无效
查看>>
Nginx+tomcat(window)配置
查看>>
spring mybatis 框架集成之applicationContext.xml配置方法
查看>>
rhel 6.0 yum 安装装7zip压缩解压缩软件
查看>>
LNMP——php-fpm
查看>>
sth about initial project with heroku(simple)
查看>>
添加第三方的APK的俩种方法
查看>>
DataTable.Select方法(String,String)
查看>>
C++代码问题(segment fault)
查看>>