写了一个生产自动部署的脚本,做个笔记!
一键部署脚本 写道
###################
# #
# 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
# #
# 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
相关推荐
生产服务器部署规范 生产服务器部署规范全文共7页,当前为第1页。生产服务器部署规范全文共7页,当前为第1页。 生产服务器部署规范全文共7页,当前为第1页。 生产服务器部署规范全文共7页,当前为第1页。 生产服务器...
测试通过后进入到模拟环境或是直接发布的生产环境,这个过程可以是全自动的。但这个自动化的方式有一些公司用到了,但也有很多公司还不知道,他们的攻城师天天在做反复、没有多大意义的、浪费生命的事情。当然这种...
2、 参数说明:在Cloudera Manager Server上部署脚本和文档,hostname请参照附件2内的内容填写 3、 执行方法:见附件内详细说明 sh 脚本文件 [远程用户名] [远程密码] [host文件列表] 声明: 1、本脚本已经在生产...
部署生产环境后,需要对用户的一些数据进行定期备份(如:把C盘下的doc文件夹备份到D盘目录下)。该工具为bat脚本,使用时只需要简单的改几个参数(备份的原始基目录、原始目录名、备份文件存放的目标文件夹、删除...
项目概述:Mogui自动化部署系统是一款基于Python语言开发的多技术栈集成发布系统。该系统融合了前端技术如JavaScript、CSS、Vue以及后端Python编程...该系统致力于简化魔鬼细节,优化部署流程,提升开发到生产的效率。
执行JENKINS上的“生产环境项”,将代码发送到 生产环境的上线服务器(运维人员执行) 第六步: 执行上线服务器的分发脚本,将代码分发到服务器集群(运维人员执行) 第七步: 先重启一台服务器上的服务,观察...
GitHub和BitBucket都提供Webhooks ,可在提交提交到存储库后自动执行此脚本,并自动将代码从存储库部署到服务器。 该脚本在您的服务器(git目录)中创建一个与服务器生产文件不同的目录(目标目录,例如,对于Web...
脚本内容除了oracle数据包需要在网盘下载之外,已经包含所有依赖包,可以用作离线环境一键安装使用,除安装路径酌情修改之外,其他无需修改,oracle...本部署包已经在生产环境中使用,经得起考验,各位按需下载即可!
使用的部署脚本实现基于 yii php 的应用程序的简单构建自动化。 卡皮斯特拉诺 用 Ruby 编写的远程服务器自动化和部署工具。 特征 • 将构建直接从git 部署到您的服务器。 • 定义您自己的git 分支进行部署,默认为...
自动化运维是一个DBA应该掌握的技术,其中,自动化安装数据库是一项基本的技能,本文中的安装脚本已通过测试,作为生产库来说没有问题,鉴于每个公司存储规划要求不同,可以按需自行修改脚本。 脚本中已经注释说明...
该系统主要用于制造业的生产管理,包括设备管理、生产计划管理、库存管理、质量管理等多个模块,旨在提高生产效率,降低生产成本,实现生产自动化和智能化。 系统后端采用SpringBoot框架,SpringBoot是一种基于Java...
此脚本在生产服务器上使用了一年多,本脚本崇尚简单唯美,只需要一个脚本就可以在任何一台有网络的服务器上自动配置LNMP。 本脚本会在脚本执行目录下,建packages目录用于存放LNMP所需要的软件。大家安装完可以删除...
所以需要将脚本部署到CentOS服务器,并设置定时任务,自动启动脚本。 实施步骤如下: 1.安装pip(操作系统自带了python2.6可以直接用,但是没有pip) # 下载pip安装包 wget ...
Capistrano是用于构建自动化部署脚本的框架。 尽管Capistrano本身是用Ruby编写的,但它可以轻松地用于部署Capistrano:基于Ruby,Rake和SSH构建的部署自动化工具。 Capistrano是用于构建自动化部署脚本的框架。 尽管...
这个脚本(一个皮条客的 Git“post-receive”钩子)允许你在每次推送到你的 Uberspace 服务器时开始自动部署你的应用程序。 它 … 停止您的应用服务的任何正在运行的实例 拉取当前修订的本地副本 执行可定制的...
Docker Bench for Security是一个脚本,该脚本检查有关在生产环境中部署Docker容器的数十种常见最佳实践。 这些测试都是自动化的,并且受到启发。 我们将其作为开源实用程序提供,因此Docker社区可以有一种简便的...
- Nginx不必修改,但NginxStatus状态服务须和监控脚本中配置的地址和端口一致,默认- Redis监控脚本配合模板使用,极为完善,且支持自动发现多实例,自动获取pass,即使是官方提供的监控脚本也远不及于此。
kubernetes/k8s自动安装程序,版本对应:v1.18.2,linux环境 使用kubeadm安装,改程序若环境不符合要求,是不能一键安装的,需按照程序指示分布安装,该程序是为了搭建测试环境时,简化繁琐的配置时所用,不能用作...
本仓库的脚本(如Java相关 )在阿里等公司(如随身云,见说明)的线上生产环境部署使用。如果您的公司有部署使用,欢迎使用通过通知,方便互相交流反馈〜 :heart_with_arrow: :Japanese_symbol_for_beginner:快速...
在UAT环境可生产环境下,一般要求以哨兵(sentinel)模式部署(Cluster模式一般用在规格很大的应用场景下,非大厂一般情况下用不上,用了会增加复杂度) 其中的配置项较多: 1、Master 的配置 +至少一个Slave的配置 2...