身在物流行业,临近618和双十一,都需要进行系统压力测试,今年也不例外。这个时候需要随时切换自己开发和压测的身份,一面要完成新需求的开发任务,另一面要完成压测任务;虽然4月刚开始,但是压测任务已经排上日程。应用系统大多部署在weblogic中,每台虚拟机都需要安装,每次都需要耗费大量的时间和精力,而且中间某个环节出了问题通常会推倒重来;自己在网上搜了很久,发现并没有什么现成可用的shell脚本,于是花了一天时间,把整个部署的流程梳理了一遍,自己整出了一个shell脚本,实现了自动安装配置weblogic,真是省时又省力,磨刀不误砍柴工,再也不用再敲那么多命令,尤其是cd!!!

写脚本的过程中,真正体会到了shell的简单与强大,也对sed、awk和循环有了更深的认识。

1、安装weblogic版本:wls1036_linux64

2、具体shell脚本实现

#!/bin/bash

# @author:liusure09

# @date:2018-04-08

###############################################

echo ""

echo ""

echo "**************************************"

echo "* *"

echo "* *"

echo "* WebLogic服务自动安装部署 *"

echo "* *"

echo "* *"

echo "**************************************"

echo ""

echo ""

echo "*****安装时间大约需要25分钟,请耐心等待*****"

#获取脚本所在的当前路径

path_now=$(cd "$(dirname "$0")"; pwd)

echo "脚本执行当前路径为{$path_now}"

#声明变量:安装weblogic的路径

path_weblogic=/home/username/Oracle/Middleware/wlserver_10.3/common/bin

#weblogic启动文件路径

path_startWebLogic=/home/username/domains/base_domain/bin

#节点服务的启动脚本路径

path_node=/home/username/Oracle/Middleware/wlserver_10.3/server/bin

#节点管理nodemanager.properties文件地址

path_nodepro=/home/username/Oracle/Middleware/wlserver_10.3/common/nodemanager

#upload 文件夹

path_upload=/home/username/upload

echo ""

echo "判断是否存在upload文件夹,如果不存在则新建upload文件夹"

if [ -d $path_upload ]

then

echo "upload文件夹已经创建,不需要重复创建!"

else

mkdir -p /home/username/upload

echo "upload文件夹创建成功!"

fi

echo ""

echo "创建web/wars路径,用于应用部署"

if [ -d /home/username/web/wars ]

then

echo "web/wars路径已经存在"

else

mkdir -p /home/username/web/wars

echo "web/wars路径创建成功"

fi

echo ""

echo "1.安装weblogic服务,默认安装路径为:/home/username/Oracle/Middleware"

./wls1036_linux64.bin -mode=silent -silent_xml=silent.xml -log=$path_now/weblogic.out

sleep 2s

echo "1.安装webloigc服务完成"

echo "2.配置weblogic域路径,默认域路径为:/home/username/domains/basedomain"

cd $path_weblogic

./config.sh -mode=silent -silent_script=$path_now/create_domain.rsp

echo "2.配置weblogic域路径完成!"

echo "3.添加hibernate映射文件jar包"

cd $path_now

cp antlr-2.7.6rc1.jar /home/username/Oracle/Middleware/wlserver_10.3/server/ext/

sleep 2s

echo "3.添加hibernate映射文件jar包成功!"

echo "4.修改startWebLogic.sh启动文件,添加jar包引用路径!"

sed -i '/umask 037/a\PRE_CLASSPATH="${WL_HOME}/server/ext/antlr-2.7.6rc1.jar"\

CLASSPATH="${PRE_CLASSPATH}:${CLASSPATH}"\

JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.security.SSL.ignoreHostnameVerification=true"' $path_startWebLogic/startWebLogic.sh

sleep 2s

echo "4.修改startWebLogic.sh启动文件成功!"

echo "5.启动节点服务"

str="/n"

cd $path_node

nohup ./startNodeManager.sh &

sstr=$(echo -e $str)

sleep 2s

echo "5.启动节点服务完成!"

echo "6.修改nodemanager.properties文件,开启监听!(nodemanager.properties文件生成时间较久)"

echo "因此写了一个循环,不出现就一直循环下去,直到出现这个文件为止"

while [ 0 ];

do

if [ ! -e $path_nodepro/nodemanager.properties ]

then

echo "不存在nodemanager.properties文件,请等待10秒,不要关闭脚本!"

sleep 10s

else

echo "已经生成nodemanager.properties文件,正在修改!"

sed -i 's/SecureListener=true/SecureListener=false/g' $path_nodepro/nodemanager.properties

sed -i 's/StartScriptEnabled=false/StartScriptEnabled=true/g' $path_nodepro/nodemanager.properties

break

fi

done

sleep 2s

echo "6.修改nodemanager.properties文件完成!"

echo "7.注册管理节点服务器"

cd $path_weblogic

./wlst.sh $path_now/wlsttest.py

echo "7.注册管理节点服务器完成!"

echo ""

echo "8.将节点服务杀死,并进行重启"

ID=`ps -ef | grep "weblogic.NodeManager" | grep -v "grep" | awk '{print $2}'`

echo "8.查到的阶段服务进程为:$ID"

for id in $ID

do

kill -9 $id

echo "killed $id"

done

echo ""

echo "9.重启节点服务"

str1="/n"

cd $path_node

nohup ./startNodeManager.sh &

sstr1=$(echo -e $str1)

sleep 2s

echo "9.节点服务已重启完成!"

echo ""

echo "**********TMS系统weblogc服务安装配置结束!**********"

3、静默安装weblogic的silent.xml文件

注意:data-value中不能出现空格回车等其他字符,要一行结束。

4、创建域的create_domain.rsp文件

read template from "/home/username/Oracle/Middleware/wlserver_10.3/common/templates/domains/wls.jar";

set JavaHome "/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131.x86_64";

set ServerStartMode "prod"; //生产模式

find Server "AdminServer" as AdminServer;

set AdminServer.ListenAddress "10.1.1.1";

set AdminServer.ListenPort "7001";

set AdminServer.SSL.Enabled "false";

//set AdminServer.SSL.ListenPort "7002";

//We can directly create a new managed server.

//create Server "base" as BASE;

//set BASE.ListenAddress "";

//set BASE.ListenPort "8003";

//set BASE.SSL.Enabled "true";

//set BASE.SSL.ListenPort "8004ยกรฅ

//Create Machine

//create Machine "base" as Machinename;

//use templates default weblogic user

find User "weblogic" as u1;

set u1.password "weblogic123";

write domain to "/home/username/domains/base_domain/"; //创建域

// The domain name will be "demo-domain"

close template;

5、注册节点服务器的文件

connect('weblogic','weblogic123','t3://10.1.1.1:7001')

nmEnroll('/home/username/Oracle/Middleware/wlserver_10.3/common/nodemanager')

nmEnroll('/home/username/domains/base_domain')

exit()

至此weblogic所需要的已经部署完毕,感觉所有的东西都可以用shell解决了,哈哈。

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/liusure09/article/details/79880514

xml配置linux启动脚本,linux中利用Shell脚本实现自动安装部署weblogic服务相关推荐

  1. linux中利用shell脚本条件执行linux命令

    linux中利用shell脚本条件执行命令 在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们 ...

  2. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本

    #!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的jav ...

  3. java -jar 停止_推荐:Linux启动Java程序jar包Shell脚本

    每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar--?边敲边想着都需要追加哪些参数? 今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程序Ja ...

  4. mysql shell可视化_shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中...

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  5. 解决Linux下无法利用shell脚本启动conda虚拟环境问题

    解决Linux下无法利用shell脚本启动conda虚拟环境问题 问题 直接在脚本中激活conda环境时遇到了一个问题 解决 查看.bashrc文件 .bashrc文件在 /home/用户名 里面,因 ...

  6. Linux 中启用 Shell 脚本的调试模式

    shell 脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本中跟踪调试命令的执行 概述 脚本是存储在一个文件的一系列命令. ...

  7. Linux中执行shell脚本的5种方法总结

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...

  8. Linux中执行shell脚本的4种方法

    这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写 ...

  9. Linux中使用shell脚本生成随机数

    Linux中使用shell脚本生成随机数 1.主体思想: 为了实现随机数的随机性,所以在这里借用date中的%s%N可以输出从1970年1月1日00:00:00到目前经历的秒数,从而产生变化的数字,再 ...

最新文章

  1. 测试的目的_电磁干扰测试技术的目的是什么呢?
  2. C++ decltype类型指示符
  3. 教你使用stm32接收串口的一帧数据!
  4. 员工工号怎么编码_华为员工感慨:工号就留在这了,感谢公司给我自己写墓志铭的机会...
  5. 360 mysql无法启动_安装MySQL 5后无法启动(不能Start service)解决方法小结
  6. LeetCode最大子序和 (动态规划)python
  7. jquery点击完一个按钮,并且触发另一个按钮
  8. php获取继承类方法吗,php如何获取当前类名,继承中的问题?
  9. ASP.NET的属性绑定、表达式绑定、集合绑定、方法绑定、DropDownList集合绑定、DataList绑定、GridView绑定
  10. h系列标签自动加了bold
  11. 2014年计算机一级考试题目,2014年计算机一级考试WPS及基础模拟试题(2)
  12. Linux蓝牙耳机软件,Linux下蓝牙耳机的配置与测试
  13. 计算机total函数,以一敌十的SUBTOTAL函数,你不会用就太可惜了!
  14. 本科论文查重经验分享
  15. Post接口测试示例
  16. 【人工智能】CB Insights:2018年全球人工智能发展趋势报告
  17. 注意力机制SimAM代码(Pytorch)
  18. DeiT:Training data-efficient image transformers distillation through attention
  19. python 数据处理之使用get_dummies进行one-hot编码
  20. 虚拟机迁移技术漫谈(转)

热门文章

  1. 全国公共英语五级(PETS-5) 写作作文
  2. 基于simulink的SVC与SVG的性能比较
  3. 基于matlab的点云重建与三角剖分
  4. opengl库中gl glu glut glaux的区别
  5. 协程概念,原理(c++和node.js实现)
  6. Linux set命令参数及与env, export的区别
  7. 全局静态存储区、堆区和栈区深入剖析
  8. Yolov5身份证检测——C++ OpenCV DNN推理
  9. 三维重建学习(1):基础知识:旋转矩阵与旋转向量
  10. 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Halftoning