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

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

1 部署过程记录

1.1 程序结构

2d1f2697902bf7f9b58fcce0d18a3ff2.png

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

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

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

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

1.2 导出jar包

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

f54cf4eebcaa9b29a93f2b4743601c79.png

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

1.3 程序部署

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

732aff894d176acd7bbad3ed45c2ef07.png

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

753fb4a567e8f2f378f8ebc0c11c75c1.png

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!"

对照以上脚本进行解释:

ce785bacb74cc2c78b1dae2fe6ac6a8f.png

运行程序:

f8f0ba2168c2a53223a92d2e06be2dac.png

在用户目录下面,程序能够读到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脚本:

071b9c07855ff108dbf93e9ebb883df3.png

ef0b22e376e38997e907b437a93e4cfe.png

#!/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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值