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$ 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命令
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/-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脚本的书写的更多相关文章
- linux启停jar包的shell脚本
start.sh 启动脚本 #!/bin/bashcd /home/hygwnohup java -jar hy-web.jar >> /home/hygw/logs/server.lo ...
- 一个简单的Linux启动jar包的shell脚本
背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...
- 分布式项目中 linux 服务器 部署jar 应用脚本 deploy.sh
在实际项目的部署中,尤其是分布式项目,有很多服务的jar包需要 部署,这里抽取出公用的 deploy的脚本 下面是不含jdk配置的 #!/bin/bash JAVA_OPTIONS_INITIAL=- ...
- 在linux中部署项目并创建shell脚本
1.首先要在idea中父工程maven包下执行clean生成的target包 2.执行package打包,打包时候讲test勾去掉 3.将target包中生成的jar包cp出来 此处注意打包时必须要保 ...
- Linux下部署 jar包
1.windows和linux执行jar命令是一样的,java -jar xxx.jar 2.使用nohup命令将jar程序设置成后台运行,运行日志输出到nohup.out,关闭窗口无影响 nohup ...
- 启动jar包的shell脚本
在jar包的同级目录新建文件例如:app_jar.sh 然后填写如下内容: #!/bin/bash #source /etc/profile # Auth:Liucx # Please change ...
- linux下SpringBoot Jar包自启脚本配置
今天整理服务器上SpringBoot项目发现是自启的,于是想看看实现.翻看离职同事的交接文档发现一个***.service文件内容如下 [Unit] Description=sgfront After ...
- Ops:jar包启动关闭脚本
简介 公司开发架构为java语言的rpc dubbo架构,将功能分解为各个模块,模块较多,发布到环境上的应用为编译后的jar包和配置文件,以及启动关闭jar包的shell脚本.之前经常会出现进程启动不 ...
- linux 部署jar包开机自启
1.用xShell将jar包上传到linux上(jar包上传到 /root/java) 输入rz命令,看是否已经安装了lrzsz,如果没有安装则执行 yum -y install lrzsz ...
随机推荐
- 封装TableView有可能用到的数据结构和UITableViewCell的一个继承类
最近4年的时间,我已经做了5个App完全独立开发, 工作经历5个App, 维护了两个App. 在这期间用的最多的是UITableView, 因此也有许多感觉可以封装的. 现在就是我封装的. RXCel ...
- mysql 表名默认 windows不区分大小写 在linux区分大小写
MySQL在Linux下数据库名.表名.列名.别名大小写规则: 1.数据库名与表名是严格区分大小写 2.表的别名是严格区分大小写 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格 ...
- angular路由最基本的实例---简单易懂
<!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <met ...
- springmvc环境下使用ajaxfileupload.js进行文件上传
controller: /* #region */ @RequestMapping(produces = "text/html;charset=UTF-8", value = &q ...
- JS获取浏览器类型和版本号
JS获取浏览器类型和版本号,增加了IE11的判断. 2015/7/5更新: 简化代码逻辑 var zbrowser = {} var ua = navigator.userAgent.toLowerC ...
- 行内元素和块级元素的具体区别是什么?行内元素的padding和margin可设置吗?
块级元素(block)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示; 宽度(width).高度(height).内边距(padding)和外边距(margin)都可控制; ...
- c++课程设计之菜单选择
a) 从键盘输入n个数,选择升序还是降序输出 b)创新了日历 c) 添加了射箭游戏 d)还加入了好玩的24点游戏 学生签名: 年 月 日 课程设计(论文)评阅意见 等 级 项 ...
- java wait 和notify
这几天自己学习了一下线程的知识,wait 方法使当前的线程等待,notify 方法 唤醒当前的线程的方法 th 线程在5的时候进行wait,此时主线程继续执行, 主线程执行到9的时候 唤醒 th 线程 ...
- [Tool] Git 使用 与 Git Flow
目录 简介 Git 命令 Git Flow 简介 Git是目前世界上最先进的分布式版本控制系统(没有之一). Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Lin ...
- 屏幕适配/autoLayout autoresizingMask
#pragma mark-- 屏幕适配/autoLayout autoresizingMask 1> 发展历程 代码计算frame -> autoreszing(父控件和子控件的关系) - ...