In every J2EE production environment is going to have an application code (most of the developer say it the composition of 'dist' and 'properties'), which could be no-stage mode deployment style. Where you need to have a copy of code on every WebLogic server running machine. For every production release there could be success or fail. A wise WebLogic Administrator always takes the backup of the existing code and then go further to do fresh code deployment.
According to the best practices of WebLogic deployment process, First time you will do the sample test on the production environment by making single site available for test. That is if your application having EJB-Tier, Web-tier then, start each one server in the tier. Test the basic flow test, which makes you know wheather your new code works or not. Most of the cases the code come to production move is already checked on Staging environment which is the simulated environment of production environment.
It is always good to do double check your work before you do something on Production environments.
Here the important point is that to overcome failure situation, when a new changes in the code fails , such cases alternate solution is to revert back the old code.
How to do this?
Think!! Think wisely, Think for optimizing, Think for better outputs...
We can do simple copy command but what makes error-less work
Take backup with date and time stamp.
There could be multiple application codes on the same machine.
By accomplishing these above task with the following script on a machine.
clear if [ $# -gt 0 ]; then today=`date "+%b%d_%y"` APPNAME=$1 SRC=$HOME/$APPNAME BKP=$HOME/backups/$APPNAME mkdir -p $BKP BKP=$HOME/backups/"$APPNAME"_"$today" echo $SRC echo $BKP echo '1. Code backup [dist]only' echo '2. Full backup [includes dist, properties]' read -p "Please enter your option [1/2]:" opt if [ $opt -eq 1 ] || [ $opt -eq 2 ]; then case "$opt" in 1) echo "copying dist ..." cp -rp $SRC/dist $BKP ;; 2) echo "copying all including properties..." cp -rp $SRC/dist $BKP cp -rp $SRC/properties $BKP ;; esac else echo " invalid option " fi else echo "Please enter application name in command line arguments" fi
Multiple site backup
The above backup is required for every site (multiple machines). If you have already used ssh key generated and all sites are accessible without password. In Ramayan Ram's single arrow hits seven trees in a row. Similarly I want to make the backup script run on one machine and hit on every machine where the application is running. But to make this idea come true I took the help of LinkedIn discussion. Mr. John suggested to keep CMD and execute ssh command.
clear today=`date "+%b%d_%y"` if [ $# -gt 0 ] then APPNAME=$1 SRC=$HOME/$APPNAME BKP=$HOME/backups/"$APPNAME"_"$today" echo '1. Code backup only' echo '2. Full backup [includes properties]' read -p "Please enter your option [1/2]:" opt if [ $opt -eq 1 ] || [ $opt -eq 2 ] then CMD="mkdir -p $BKP" case "$opt" in 1 ) echo "Will copy only dist." CMD="$CMD ; cp -rp $SRC/dist $BKP ; ls -lrtR $BKP ; exit" ;; 2 ) echo "Will copy dist and properties." CMD="$CMD ; cp -rp $SRC/dist $SRC/properties $BKP ; ls -lrtR $BKP ; exit" ;; esac # serverlist is the text file for i in `cat serverlist` do echo "Connecting to $i." ssh -a $i $CMD done echo "done !" else echo " invalid option " fi else echo "Please enter application name in command line arguments" fi
This script worked... awesome