`

生产自动部署的脚本

    博客分类:
  • OS
 
阅读更多

写了一个生产自动部署的脚本,做个笔记!

一键部署脚本 写道
###################
# #
# author : ............... #
# date : 20161218 #
# explain: X71 shell #
###################

#Defining a parser,we use ksh
#!/bin/ksh

#The startup script, first to sleep for a second.
sleep 1

#get input first param.
#If the first parameter is empty,Access to local time format yyyymmdd for T_DATE.
#If the first parameter is not empty,T_DATE get parameter.
if [ -n $1 ]
then
T_DATE=$1
else
#format date ,AIX is date +%Y%m%d
T_DATE=$(date +%Y%m%d)
fi

#Define a log file, which is used to output the program execution log information.
mkdir -p $HOME/backup/${T_DATE}/
LOG=$HOME/backup/${T_DATE}/production_deploy.log
touch $LOG
#Create the log file
#echo 'create '$HOME/backup/${T_DATE}/production_deploy.log >> $LOG

#Handle new programs, new program from TMP is transferred to the new backup directory.
#Processing flow:
#1.First of all, create the directory '$HOME/backup/${T_DATE}/new'.
#2.Traverse under the TMP *.zip, *. The war file name.
#3.If the result is empty,Print log information 'please upload files'.
#4.If the result is not empty,Transfer the file to the '$HOME/backup/${T_DATE}/new' directory.
#5.Unpack the '$HOME/backup/${T_DATE}/new' directory *.zip file.
#
dealNewFiles(){
echo '--------------------dealNewFiles begin---------------------------' >> $LOG
mkdir -p $HOME/backup/${T_DATE}/new
echo 'mkdir -p '$HOME'/backup/'${T_DATE}'/new result is ' $? >> $LOG
##mv *.zip and *.war
cd $HOME/tmp/
zipAndWarFiles=`ls |egrep 'zip|war' |grep -v grep`
echo 'print $HOME/tmp/ *.zip & *.war :' $zipAndWarFiles >> $LOG
if [[ -n ${zipAndWarFiles[*]} ]];
then
mv ${zipAndWarFiles[@]} $HOME/backup/${T_DATE}/new
echo 'mv '${zipAndWarFiles[@]} $HOME/backup/${T_DATE}/new >> $LOG
else
echo please upload files
exit 0
fi

##unzip *.zip
cd $HOME/backup/${T_DATE}/new
echo 'cd '$HOME/backup/${T_DATE}/new >> $LOG
for loop in `ls | grep zip |grep -v grep`
do
`jar -xvf $loop`
echo 'jar -xvf '$loop' result is '$? >> $LOG
done
echo '--------------------dealNewFiles end----------------------------' >> $LOG
}

#
#Backup the old program
#According to the files in the '$HOME/backup/${T_DATE}/new/' directory names, to search for program files .
#If in the user directory that is service programs,if in the user/batch directory that is batch programs.
#Processing flow:
#1.Create '$HOME/backup/${T_DATE}/old/' directory.
#2.Traversing the '$HOME/backup/${T_DATE}/new/' files in the directory name, coexist in the array.
#3.Create a folder with the program same in the '$HOME/backup/${T_DATE}/old' directory.
#4.According to the path of the program, determine the type of program, and transferred to the name of the corresponding folder.
#
dealOldFiles(){

echo '--------------------dealOldFiles begin--------------------------' >> $LOG
mkdir -p $HOME/backup/${T_DATE}/old/
echo 'mkdir -p '$HOME/backup/${T_DATE}/old/ >> $LOG
##read new files
cd $HOME/backup/${T_DATE}/new/
echo 'ls ' $HOME/backup/${T_DATE}/new/ >> $LOG
for loop in `ls`
do
if [[ -d $loop ]] && [[ ! -d $HOME/backup/${T_DATE}/old/$loop ]]
then
mkdir -p $HOME/backup/${T_DATE}/old/$loop/
if [ -d $HOME/$loop ]
then
cp -r $HOME/$loop $HOME/backup/${T_DATE}/old/
echo 'cp -r '$HOME/$loop $HOME/backup/${T_DATE}/old/$loop >> $LOG
else
cp -r $HOME/batch/$loop $HOME/backup/${T_DATE}/old/
echo 'cp -r '$HOME/batch/$loop $HOME/backup/${T_DATE}/old/ >> $LOG
fi
fi
done

##deal ebank store folder
#if [[ $LOGIN = wcb ]]
#then
# cd /WebSphere/AppServer/profiles/Custom01/installedApps/pwcbap1Cell01/
# if [[ -d EBank_war.ear ]]
# then
# cd ./EBank_war.ear/EBank.war
# cp -r store $HOME/backup/${T_DATE}/old/
# else
# cd ./ebank_war.ear/ebank.war
# cp -r store $HOME/backup/${T_DATE}/old/
# fi
#fi
echo '--------------------dealOldFiles end----------------------------' >> $LOG
}

#
#To stop consumers module.
#Processing flow:
#1.To determine whether a folder '$HOME/backup/${T_DATE}/new/AroundServiceApp' and $LOGIN is dhtz.
#2.If consumers module, edit to the AS at the end of the folder, and kill processes.
#3.If the consumer module does not exist, the print log.
#
stopAs(){
echo '=====> stopAs begin......' >> $LOG

if [[ $LOGIN = dhtz ]] && [[ -d $HOME/backup/${T_DATE}/new/AroundServiceApp ]]
then
cd $HOME/backup/${T_DATE}/new/AroundServiceApp/
echo 'ls '$HOME/backup/${T_DATE}/new/AroundServiceApp/ >> $LOG
for loop in `ls |grep AS |grep -v sh`
do
echo 'kill -9 '$loop >> $LOG
ps -ef |grep java | grep $loop | grep -v grep | awk '{print $2}' | xargs kill -9
done
else
echo 'No consumer module.....'
fi
echo '====>stopAs end.......' >> $LOG
}

#
#Deploy new program, and start.
#Transfer the new application from the directory to corresponding program directory.
#If it is a service program, to stop the process first, then replace, finally start the new program.
#If it is batch process substitution can be directly.
#Of course don't forget to assign permissions.
#Processing flow:
#1.Traverse all the folder name in the directory.
#2.If the program under the user's path, we kill process to replace the new program, assign permissions, the last startup scripts.
# Otherwise the replacement program and assign permissions.
#
deployNewExe(){
echo '--------------------deployNewExe begin--------------------------' >> $LOG
stopAs

cd $HOME/backup/${T_DATE}/new/
echo 'ls '$HOME/backup/${T_DATE}/new/ >> $LOG
for loop in `ls`
do
if [ -d $HOME/$loop ]
then
echo 'kill -9 '$loop >> $LOG
ps -ef |grep java | grep $loop | grep -v grep | awk '{print $2}' | xargs kill -9
cd $HOME/backup/${T_DATE}/new/$loop/
cp -r * $HOME/$loop/
echo 'cp -r '$HOME/backup/${T_DATE}/new/$loop/ $HOME/$loop/ >> $LOG
cd $HOME/
chmod -R 775 $loop/
echo 'chmod -R 775 '$loop/ >> $LOG
cd $HOME/$loop/
./start.sh 1 >> /dev/null 2 >> /dev/null
echo $HOME/$loop/'./start.sh &' >>$LOG
else
cd $HOME/backup/${T_DATE}/new/$loop/
echo 'cd ' $HOME/backup/${T_DATE}/new/$loop/ >>$LOG
cp -r * $HOME/batch/$loop/
echo 'cp -r '$HOME/backup/${T_DATE}/new/$loop/ $HOME/batch/$loop/ >> $LOG
cd $HOME/batch/
chmod -R 775 $loop
echo 'chmod -R 775 '$HOME/batch/$loop/ >> $LOG
fi

done
echo '--------------------deployNewExe end----------------------------' >> $LOG
}

#The script always put in storage.
main(){
#print welcome
echo "--------------------------main----------------------------------" >> $LOG
echo "******* Welcome to production_deploy.sh ********" >> $LOG
echo >> $LOG
echo "==>" Date is $T_DATE >> $LOG
echo "==> deal new files" >> $LOG
dealNewFiles
echo "==> deal old files" >> $LOG
dealOldFiles
echo "==> deal new exe" >> $LOG
deployNewExe
}

## begin exe main
main
echo "--------------------------end-----------------------------------" >> $LOG
echo >> $LOG
echo >> $LOG
cat $LOG
exit 0




























 
分享到:
评论

相关推荐

    部署OpenStack生产环境实战.pdf

    关于OpenStack的部署有很多方法和社区项目,笔者公司采用了社区中的kolla项目作为部署OpenStack的方案,本文会详细介绍使用kolla在基于传统企业常用的vlan网络环境下部署OpenStack生产环境的实际案例。

    生产服务器部署规范.docx

    生产服务器部署规范 生产服务器部署规范全文共7页,当前为第1页。生产服务器部署规范全文共7页,当前为第1页。 生产服务器部署规范全文共7页,当前为第1页。 生产服务器部署规范全文共7页,当前为第1页。 生产服务器...

    利用ant脚本 自动构建svn增量.docx

    测试通过后进入到模拟环境或是直接发布的生产环境,这个过程可以是全自动的。但这个自动化的方式有一些公司用到了,但也有很多公司还不知道,他们的攻城师天天在做反复、没有多大意义的、浪费生命的事情。当然这种...

    用Capistrano3自动化部署Web应用分享.pdf

    自动化部署是指在将 Web 应用部署到生产环境时,使用工具或脚本来自动完成部署过程,以减少人工错误和提高部署效率。Capistrano 3 是一个流行的自动化部署工具,它可以帮助开发者将 Web 应用部署到生产环境中。 一...

    Centos7.4离线本地yum源自动化安装CDH5.13.0脚本

    2、 参数说明:在Cloudera Manager Server上部署脚本和文档,hostname请参照附件2内的内容填写 3、 执行方法:见附件内详细说明 sh 脚本文件 [远程用户名] [远程密码] [host文件列表] 声明: 1、本脚本已经在生产...

    项目部署的笔记啦啦啦啦啦啦啦啦啦啦备用

    本篇文章主要介绍了项目部署的笔记,包括生产/测试环境部署过程,jenkins脚本及打包生产环境部署,Ucloud & AWS 服务端口分配表,部署脚本项目等。下面是详细的知识点: 一、生产/测试环境部署过程 在生产/测试...

    windows下文件夹备份脚本(附详细说明)

    部署生产环境后,需要对用户的一些数据进行定期备份(如:把C盘下的doc文件夹备份到D盘目录下)。该工具为bat脚本,使用时只需要简单的改几个参数(备份的原始基目录、原始目录名、备份文件存放的目标文件夹、删除...

    基于Python与多技术栈的Mogui自动化部署系统源码

    项目概述:Mogui自动化部署系统是一款基于Python语言开发的多技术栈集成发布系统。该系统融合了前端技术如JavaScript、CSS、Vue以及后端Python编程...该系统致力于简化魔鬼细节,优化部署流程,提升开发到生产的效率。

    看程序员是如何把自动化做到极致的!1

    例如,可以使用Python来编写自动化测试脚本、自动化部署脚本等。 6. Dropbox 和自动化存储:Dropbox 是一种云存储服务,可以使用自动化技术来上传、下载和管理文件。例如,可以使用Python来编写自动化上传脚本,以...

    自动化发布部署方案.v1.2.docx

    执行JENKINS上的“生产环境项”,将代码发送到 生产环境的上线服务器(运维人员执行) 第六步: 执行上线服务器的分发脚本,将代码分发到服务器集群(运维人员执行) 第七步: 先重启一台服务器上的服务,观察...

    php-git-deploy:PHP脚本,用于将代码从git存储库部署到您的服务器。 使用Webhooks从Github或Bitbucket自动部署

    GitHub和BitBucket都提供Webhooks ,可在提交提交到存储库后自动执行此脚本,并自动将代码从存储库部署到服务器。 该脚本在您的服务器(git目录)中创建一个与服务器生产文件不同的目录(目标目录,例如,对于Web...

    oracle12c利用shell脚本一键自动化安装

    脚本内容除了oracle数据包需要在网盘下载之外,已经包含所有依赖包,可以用作离线环境一键安装使用,除安装路径酌情修改之外,其他无需修改,oracle...本部署包已经在生产环境中使用,经得起考验,各位按需下载即可!

    yii-capistrano:yii php 应用程序的简单 capistrano 部署脚本

    使用的部署脚本实现基于 yii php 的应用程序的简单构建自动化。 卡皮斯特拉诺 用 Ruby 编写的远程服务器自动化和部署工具。 特征 • 将构建直接从git 部署到您的服务器。 • 定义您自己的git 分支进行部署,默认为...

    生产库自动化MySQL5.6安装部署详细教程

    自动化运维是一个DBA应该掌握的技术,其中,自动化安装数据库是一项基本的技能,本文中的安装脚本已通过测试,作为生产库来说没有问题,鉴于每个公司存储规划要求不同,可以按需自行修改脚本。 脚本中已经注释说明...

    基于SpringBoot+vue制造装备物联及生产管理ERP系统(源码+部署说明+演示视频+源码介绍).zip

    该系统主要用于制造业的生产管理,包括设备管理、生产计划管理、库存管理、质量管理等多个模块,旨在提高生产效率,降低生产成本,实现生产自动化和智能化。 系统后端采用SpringBoot框架,SpringBoot是一种基于Java...

    一个简洁的全自动安装LNMP服务器环境的Shell脚本分享

    此脚本在生产服务器上使用了一年多,本脚本崇尚简单唯美,只需要一个脚本就可以在任何一台有网络的服务器上自动配置LNMP。 本脚本会在脚本执行目录下,建packages目录用于存放LNMP所需要的软件。大家安装完可以删除...

    腾讯音乐 Cube 机器学习平台建设与发展 - 2022 MLOps模型开发与部署.pdf

    该模板能够根据模型的特点和生产环境的需求,自动地生成模型部署的配置文件和脚本,以确保模型部署的正确性和稳定性。 Pipeline 该平台还提供了 Pipeline 工具,能够自动地将模型训练、模型部署和模型监控等任务...

    Linux部署python爬虫脚本,并设置定时任务的方法

    所以需要将脚本部署到CentOS服务器,并设置定时任务,自动启动脚本。 实施步骤如下: 1.安装pip(操作系统自带了python2.6可以直接用,但是没有pip) # 下载pip安装包 wget ...

    Ansible自动化运维实践

    持续集成与持续部署是Ansible自动化运维的另一个优势,Ansible可以自动化构建、测试、部署代码的过程,实现快速响应需求变化,提高生产环境的可用性和稳定性。 Ansible自动化运维还支持多种架构与平台,易于集成和...

    远程多服务器自动化工具-Ruby开发

    Capistrano是用于构建自动化部署脚本的框架。 尽管Capistrano本身是用Ruby编写的,但它可以轻松地用于部署Capistrano:基于Ruby,Rake和SSH构建的部署自动化工具。 Capistrano是用于构建自动化部署脚本的框架。 尽管...

Global site tag (gtag.js) - Google Analytics