背景:记录在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$ echo "Success!"

对照以上脚本进行解释:

运行程序:

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

2 标准脚本

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

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

#! /bin/sh
export JAVA_HOME=/usr/java/jdk1..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/-service
to_service_config=$service_webapps/tms_service/WEB-INF/classes
from_web_config=$warPath/-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

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

 
 

linux服务器部署jar包以及shell脚本的书写的更多相关文章

  1. linux启停jar包的shell脚本

    start.sh  启动脚本 #!/bin/bashcd /home/hygwnohup java -jar hy-web.jar >> /home/hygw/logs/server.lo ...

  2. 一个简单的Linux启动jar包的shell脚本

    背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...

  3. 分布式项目中 linux 服务器 部署jar 应用脚本 deploy.sh

    在实际项目的部署中,尤其是分布式项目,有很多服务的jar包需要 部署,这里抽取出公用的 deploy的脚本 下面是不含jdk配置的 #!/bin/bash JAVA_OPTIONS_INITIAL=- ...

  4. 在linux中部署项目并创建shell脚本

    1.首先要在idea中父工程maven包下执行clean生成的target包 2.执行package打包,打包时候讲test勾去掉 3.将target包中生成的jar包cp出来 此处注意打包时必须要保 ...

  5. Linux下部署 jar包

    1.windows和linux执行jar命令是一样的,java -jar xxx.jar 2.使用nohup命令将jar程序设置成后台运行,运行日志输出到nohup.out,关闭窗口无影响 nohup ...

  6. 启动jar包的shell脚本

    在jar包的同级目录新建文件例如:app_jar.sh 然后填写如下内容: #!/bin/bash #source /etc/profile # Auth:Liucx # Please change ...

  7. linux下SpringBoot Jar包自启脚本配置

    今天整理服务器上SpringBoot项目发现是自启的,于是想看看实现.翻看离职同事的交接文档发现一个***.service文件内容如下 [Unit] Description=sgfront After ...

  8. Ops:jar包启动关闭脚本

    简介 公司开发架构为java语言的rpc dubbo架构,将功能分解为各个模块,模块较多,发布到环境上的应用为编译后的jar包和配置文件,以及启动关闭jar包的shell脚本.之前经常会出现进程启动不 ...

  9. linux 部署jar包开机自启

    1.用xShell将jar包上传到linux上(jar包上传到 /root/java) 输入rz命令,看是否已经安装了lrzsz,如果没有安装则执行  yum   -y  install  lrzsz ...

随机推荐

  1. linq中给字段添加别名

    linq 是我们在查询中经常回用到的一种形式,比如我们创建一个类,然后List<添加> 并绑定到表格中 public class Modeltest { string id; public ...

  2. Android界面(1) 使用TextView实现跑马灯效果

    方法一:(只能实现单个TextView的跑马灯效果)在TextView添加以下控件 android:singleLine="true"只能单行,超出的文字显示为"...& ...

  3. C#与Java对比学习

    Eclipse开发环境与VS开发环境的调试对比 数据类型.集合类.栈与队列.迭达.可变参数.枚举 类型判断.类与接口继承.代码规范与编码习惯.常量定义

  4. cal日历工具的用法

    cal的基本语法:$ cal [month] [year] 1.显示当前月的日历 $ cal 2.显示某年的日历 $ cal 2015 3.显示某年某月日历 $ cal 12 2015 =-=-=-= ...

  5. Angular JS从入门基础 mvc三层架构 常用指令

    Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心 ...

  6. node项目的基本构建流程或者打开一个node项目的流程

    1.  确立项目所需要的所有依赖.框架(比如bootstrap,vue,angular等) 2. 在项目的根目录下创建一个package.json文件,package.json文件是项目的最重要文件之 ...

  7. XAML: 获取元素的位置

    在之前讨论 ListView 滚动相关需求的文章中(UWP: ListView 中与滚动有关的两个需求的实现)曾经提到了获取元素相对位置的方法,即某元素相对另一元素的位置.现将所有相关方法再作整理,并 ...

  8. Normalize.css源码注释翻译&浏览器css兼容问题的理解

    版本v5.0.0源码地址: https://necolas.github.io/normalize.css/5.0.0/normalize.css 翻译版: /*! normalize.css v5. ...

  9. Kafka 源代码分析之LogManager

    这里分析kafka 0.8.2的LogManager logmanager是kafka用来管理log文件的子系统.源代码文件在log目录下. 这里会逐步分析logmanager的源代码.首先看clas ...

  10. 【Android Developers Training】 22. 与其他fragment通信

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...