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.
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.
# 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
Post a Comment