Composr Supplementary: Cloning your site
Potentially Outdated Tutorial
This supplementary tutorial might be outdated as it was written for a previous version of Composr CMS (version 10).
Have you ever wanted to know exactly what impact a specific upgrade, patch, addon, or change will have on your live site but were too afraid to try?
With the following instructions you can now find out exactly by creating a clone of your site and applying the changes to the clone.
This tutorial assumes your webhosting control panel is cPanel. Other webhosting control panels typically have similar features.
Table of contents
While the steps may seem a bit long-winded and fiddly, they should be straight forward enough. Please read the instruction completely first as you will need place your specific details in place of the following place holders:
MAIN_DB_USERNAME
MAIN_DB_NAME
MAIN_DB_PASSWORD
MAIN_SITE_DIR ←The directory where you installed your main site
CLONE_DB_USERNAME
CLONE_DB_NAME
CLONE_DB_PASSWORD
CLONE_SITE_DIR ←The directory where you installed your clone site
CLONE_SITE_DIR_OLD
STEP 1: Install a fresh copy of Composr. This will be your clone site. If you already have another Composr site installed that you want to re-use and make your clone site then ignore this step.
STEP 2: Use the Composr upgrader tool (http://yourbaseurl/upgrader.php) to flush the caches of your master site. There is no need to close the site.
What the shell?
When I say "ssh window", I'm referring to the use of a Secure Shell console (terminal) application. Its the 'standard' secure tool/method of remote communication with a server.
Its a command-line tool (like Commandr). The advantage of using ssh over phpMyAdmin is that you can script/automate steps to do things simpler/faster/consistently.
Note that some hosts have SSH access disabled by default, and depending on your host, you would activate it either through your hosts self-service tools or by sending a them a support ticket.
If you don't like to use the shell (ssh) or do not have access, then steps 3-5 can be performed using a normal phpMyAdmin workflows. However, on some servers phpMyAdmin may time-out when exporting/importing databases, so the advanced steps have been included here.
Code (Bash)
STEP 4: Prepare the clone site's database to accept main site's database using the following ssh command (change place holders as required):
Code (Bash)
STEP 5: Replace the clone site's database with that of the main site using the following ssh command (change place holders as required):
Code (Bash)
At this point you can delete main_db_backup.sql if you wish (by executing the rm main_db_backup.sql command in the ssh window). I sometimes don't if I'm going to be playing around with the tables of my clone site directly. So if I stuff something up I can just do steps 4 and 5 and I'm good to go.
STEP 6: Now, to clone the rest of the site. In cPanel do the following:
a) rename CLONE_SITE_DIR directory to CLONE_SITE_DIR_OLD. The main reason for this is to protect the .htaccess and _config.php. If you are short on space then you can delete all files except those two.
Note: The first time you set up a clone site you might actually need to copy .htaccess from MAIN_SITE_DIR to CLONE_SITE_DIR_OLD and check if there are any site specific paths that need changing.
In my case there are two entries that have site specific paths The first is the ErrorDocument line, which ensures that 404 pages are displayed properly, and the second is a AuthUserFile line to ensure password protected directories work (I password protected my main site while it was in development).
Also, if your main site is based on recommended.htaccess then .htaccess should be copied otherwise you will most likely get Not Found errors when trying to access the cloned site.
b) navigate to MAIN_SITE_DIR folder and select all files and folders in that folder.
c) select copy function and change destination path from "/public_html/mydomain.com/MAIN_SITE_DIR" to "/public_html/mydomain.com/CLONE_SITE_DIR"
d) copy the following files from "CLONE_SITE_DIR_OLD" to "CLONE_SITE_DIR" to ensure that the cloned site will work correctly:
.htaccess
_config.php
e) delete CLONE_SITE_DIR_OLD directory
STEP 7: Disable outgoing e-mails.
You probably don't want the clone site to be able to send e-mails when you do things. For example, imagine if it's someone's birthday, so they get an e-mail from the clone site. Or, you create a new topic and people get notifications.
Add this to the end of your _config.php file:
Code (PHP)
Congratulations!!!, you should now have a working clone of your main site!
A few things to note about the cloned site:
- It's live, so anyone who has access to your main site has access to your clone site. If you don't want them to see the clone and the things under development you can either close the clone site (so only admins will be able to log in) or password protect the CLONE_SITE_DIR directory using cPanel's Password Protect Directories feature.
- Although the bulk of the clone site uses dynamically generated URLs which will automatically adjust to the new location and URLs, any URLs you have hard coded or that appear in content will still point to the main site. The classic examples of this are the URLs in spacer posts. This has never been an issue for me.
- Because the clone looks identical to the main site you might want to consider making some small but obvious change to the look of the clone so that it is easily distinguishable from your main site.
- User notifications will still be active, so if you reply to a members post (say for example you are testing that post reply still works), and they have e-mail notifications turned on, they will receive the e-mail notification. You can disable e-mails in the configuration.
See also
Feedback
Have a suggestion? Report an issue on the tracker.