Skip to main content

promoting a drupal instance

solution: run my stupid script ;-)

issue:
At my small company we maintain our own Drupal hosting and content (what a pain).  Anyhow - I suggested that they utilize a "promotion" methodology whereas they do their dev/testing in a DEV/TEST environment, and then I could push the content from one environment to the other.

In this case, I have 2 environments, 2 vhosts, 2 databases, 2 etc...
test   and    www

If you run this script, it generates the command to run to go through the activity.


#!/bin/bash
# 20120224 - I don't need a script id?


TODAY=`date +%Y%m%d`
BACKUPDIR=/backups/${TODAY}
clear
echo ""
echo "You need to cut-and-paste the following output into a terminal to complete the promotion"
echo "########################################################################################"
echo ""
echo "mkdir -p ${BACKUPDIR}"


# THESE ARE JUST POINTERS TO MAKE IT EASY TO UPDATE WHICH ENVIRONMENT 
# GETS REPLICATED AND TO WHICH DIRECTORY IT SHOULD BE REPLICATED TO
SRC="test"
DEST="www"
dbPASSWORD="kissmypass"


# BACKUP THE EXISTING DATABASE(s)
echo "mysqldump -uroot -p${dbPASSWORD} --databases ${DEST} > ${BACKUPDIR}/mysqldump_${DEST}.sql "
echo "mysqldump -uroot -p${dbPASSWORD} --databases ${SRC} > ${BACKUPDIR}/mysqldump_${SRC}.sql "
echo "ls -lh ${BACKUPDIR}"


# COPY THE "web content" FIRST 
echo "service httpd stop"
echo "rm -rf /var/www/vhosts/${DEST}.example.com "
echo "cp -Rp /var/www/vhosts/${SRC}.example.com /var/www/vhosts/${DEST}.example.com "
echo "chown -R apache:apache /var/www/vhosts/; chmod -R 775 /var/www/vhosts"
echo "restorecon -RFvv /var/www/vhosts"


# UPDATE THE DATABASE CONNECTOR CONFIG TO POINT TO NEW SITE
echo "sed -i -e 's/localhost\/${SRC}/localhost\/${DEST}/g' /var/www/vhosts/${DEST}.example.com/sites/default/settings.php "
echo "sed -i -e 's/http\:\/\/${SRC}/http\:\/\/${DEST}/g' /var/www/vhosts/${DEST}.example.com/sites/default/settings.php"


echo "cp ${BACKUPDIR}/mysqldump_${SRC}.sql /tmp/mysqldump_${DEST}.sql"


# modify the SRC copy to become DEST
# THE next line may, or may not, be necessary
echo "sed -i -e 's/Database: ${SRC}/Database: ${DEST}/g' /tmp/mysqldump_${DEST}.sql"
echo "sed -i -e 's/Current Database: \`${SRC}\`/Current Database: \`${DEST}\`/g' /tmp/mysqldump_${DEST}.sql"
echo "sed -i -e 's/USE \`${SRC}\`/USE \`${DEST}\`/g' /tmp/mysqldump_${DEST}.sql"
echo "sed -i -e 's/\`${SRC}\`/\`${DEST}\`/g' /tmp/mysqldump_${DEST}.sql"


# DROP THE DATABASE {DEST}
echo "echo \"drop database ${DEST};\" | mysql -uroot -p${dbPASSWORD}"


# IMPORT the SRC Database (modified to be DEST) as the DEST Database
echo "mysql -uroot -p${dbPASSWORD} < /tmp/mysqldump_${DEST}.sql "
echo "service httpd start"
echo ""


# PROVIDE NOTES
echo "# Update the website from the admin portal"
echo "#  http://www.example.com/users/"
echo "#  Site Configuration"
echo "#       |--  Site Information"
echo "#       |--  YUI Common Settings"
echo ""


exit 0





The output will be:

You need to cut-and-paste the following output into a terminal to complete the promotion
########################################################################################


mkdir -p /backups/20120224
mysqldump -uroot -pkissmypass --databases www > /backups/20120224/mysqldump_www.sql 
mysqldump -uroot -pkissmypass --databases test > /backups/20120224/mysqldump_test.sql 
ls -lh /backups/20120224
service httpd stop
rm -rf /var/www/vhosts/www.example.com 
cp -Rp /var/www/vhosts/test.example.com /var/www/vhosts/www.example.com 
chown -R apache:apache /var/www/vhosts/; chmod -R 775 /var/www/vhosts
restorecon -RFvv /var/www/vhosts
sed -i -e 's/localhost\/test/localhost\/www/g' /var/www/vhosts/www.example.com/sites/default/settings.php 
sed -i -e 's/http\:\/\/test/http\:\/\/www/g' /var/www/vhosts/www.example.com/sites/default/settings.php
cp /backups/20120224/mysqldump_test.sql /tmp/mysqldump_www.sql
sed -i -e 's/Database: test/Database: www/g' /tmp/mysqldump_www.sql
sed -i -e 's/Current Database: `test`/Current Database: `www`/g' /tmp/mysqldump_www.sql
sed -i -e 's/USE `test`/USE `www`/g' /tmp/mysqldump_www.sql
sed -i -e 's/`test`/`www`/g' /tmp/mysqldump_www.sql
echo "drop database www;" | mysql -uroot -pkissmypass
mysql -uroot -pkissmypass < /tmp/mysqldump_www.sql 
service httpd start


# Update the website from the admin portal
#  http://www.example.com/users/
#  Site Configuration
#       |--  Site Information
#       |--  YUI Common Settings



You will also need to login to Drupal portal and update the values under System Configuration.




Comments

Popular posts from this blog

P2V using dd for KVM-QEMU guest

Preface: I have certainly not exhaustively tested this process.  I had a specific need and found a specific solution that worked. Situation:  I was issued a shiny new laptop running Red Hat Enterprise Linux 7 (with Corp VPN, certs, Authentication configuration, etc...)  The image was great, but I needed more flexibility on my bare metal.  So, my goal was to P2V the corporate image so I could just run it as a VM. * Remove corporate drive and install new SSD * install corp drive in external USB-3 case * Install RHEL 7 on new SSD * dd old drive to a disk-image file in a temp location which will be an image which is the same size as your actual drive (unless you have enough space in your destination to contain a temp and converted image) * convert the raw disk-image to a qcow file while pushing it to the final location - this step should reduce the disk size - however, I believe it will only reduce/collapse zero-byte blocks (not just free space - i.e. if you de...

Sun USS 7100 foo

TIP: put ALL of your LUNs into a designated TARGET and INITIATOR group when you create them.  If you leave them in the "default" group, then everything that does an discovery against the array will find them :-( I'm struggling to recognize a reason that a default should even be present on the array. Also - who, exactly, is Sun trying to kid.  The USS is simply a box.. running Solaris .. with IPMP and ZFS.  Great.  If you have ever attempted to "break-in" or "p0wn" your IBM HMC, you know that there are people out there that can harden a box - then.. there's Sun.  After a recent meltdown at the office I had to get quite intimate with my USS 7110 and learned quite a bit.  Namely: there's a shell ;-) My current irritation is how they attempt to "warn you" away from using the shell (my coverage expired a long time ago to worry about that) and then how they try to hide things, poorly. I was curious as to what version of SunOS it ...

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)"

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)" One issue that may cause this to arise is if you managed to break your /etc/fstab We had an engineer add a line with the intended options of "nfsvers=3" but instead added "-onfsvers=3" and it broke the system fairly catastrophically.