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 ...
随机推荐
- jquery表单序列化
$(function(){ $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json" ...
- 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类
前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...
- 编写一个简单的Web Server
编写一个简单的Web Server其实是轻而易举的.如果我们只是想托管一些HTML页面,我们可以这么实现: 在VS2013中创建一个C# 控制台程序 编写一个字符串扩展方法类,主要用于在URL中截取文 ...
- 安装并配置Apache
从今天开始,我将开始Web开发的学习.本系列博客将陆续记录我学习过程中的收获和困惑,从前端到后端,一探Web开发的流程和内容.我目前掌握的有C/C++,有一些使用C进行嵌入式开发的经验,C++就马马虎 ...
- [BZOJ1597]土地购买
Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...
- tostring方法
//__tostring()方法//输出内容时不报错 用法实例:class Ren{ public $name; public function __tostring() { return " ...
- C#中switch的使用
今天在网上看到有人给出这么一个程序需求,博主就拿来回忆回忆C#中switch的用法 程序需求如下: 根据星期几(一 ~日) ,输出特价菜“一”.“二”.“三”,输出“干煸扁豆6元.”“四”.“五”,输 ...
- ThinkPHP 参数绑定原理
ThinkPHP里有一个参数绑定的功能 想自己试着写一个类似的 主要利用到PHP里的反射的API <?php class Index { public function edit($id=0) ...
- Linux 最新SO_REUSEPORT特性
1.前言 昨天总结了一下Linux下网络编程“惊群”现象,给出Nginx处理惊群的方法,使用互斥锁.为例发挥多核的优势,目前常见的网络编程模型就是多进程或多线程,根据accpet的位置,分为如下场景: ...
- js传宗接代---继承
前几天重温了一下js的继承,今天分享给大家: 一,类式继承. 所谓的类式继承就是:第二个类的原型prototype被赋予了第一个类的实例,如subcals.prototype=new supercls ...