linux服务器部署jar包以及shell脚本的书写
Posted CS408
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux服务器部署jar包以及shell脚本的书写相关的知识,希望对你有一定的参考价值。
背景:记录在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$1 echo "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命令
3 半自动化工程部署
问题:通过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)
#!/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
用到啥就去查什么,一切都不是困难,态度决定成效!!!!
以上是关于linux服务器部署jar包以及shell脚本的书写的主要内容,如果未能解决你的问题,请参考以下文章
使用 linux shell脚本启动jar包,进行关闭,查看状态